关于前端:Javascript学习笔记面试一CSS部分

一、HTML面试题

1、如何了解语义化?

我的答复:语义化就是实现同样的性能,尽量应用html外面section,main,这些约定俗成的构造去书写dom构造。这样不便了解。

优化当前的答复:写主体构造应用main,section,footer,题目,h2,h3,列表应用ul,li,文字应用p标签。

通过恪守同样的规定,使彼此能够看懂的彼此表白的意思,这也是语言的作用,所以被称为语义化。总得来说,就是不便看懂,便于搜索引擎SEO。

2、默认状况下,哪些元素是块级元素,哪些是内联标签?

我的答复: div,p,ul,ol 等独占一行,内联元素span img button input不会独占一行。

二、CSS面试题

1、盒模型的计算

offsetWidth = 宽度+内边距+边框,无外边距;
应用border-box
如下图:

2.margin纵向重叠的问题

  • 相邻元素的margin-topmargin-bottom会产生重叠
  • 空白内容的<p></p>也会重叠

答案:15px

3.margin 设置负值的问题

  • margin-top和margin-left负值,元素向上、向左挪动。
  • margin-right负值,右侧元素左移,本身不受影响。
  • margin-bottom负值,下方元素上移,本身不受影响。

4、BfC的了解和利用?

  • Block format context,块级格式化上下文。
  • 一块独立渲染区域,外部的元素渲染不会影响到边界以外的元素。

最常利用:革除浮动;

造成BFC的常见条件:

  • float 不是none
  • position 是absolute 或者fixed
  • overflow 不是visible
  • display 是flex inline-block等

设计的目标就是它要可能容纳它外部的元素,外面的元素不要乱跑,祸患他人。不要脱离文档流。如同一个史莱姆,把什么货色都吞进去。

革除浮动的办法

举荐应用伪元素clearfix:after

.clearfix{
    content:'';
    height:0;
    display:block;
    clear:both;
    visibility:hidden
    
}

5、float布局

如何实现圣杯布局和双飞翼布局?(这是谁起的破名字)

圣杯布局
- 应用float布局
- 两侧应用margin负值,以便和两头内容横向重叠
- 避免两头内容被两侧笼罩,一个用padding,一个用margin
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>圣杯布局</title>
    <style type="text/css">
        .container {
            padding: 0 300px 0 200px; /*  重点 */
        }

        .main,
        .left,
        .right {
            min-height: 130px;
            float: left; 
            position: relative;
        }

        .main {
            background-color: blue;
            width: 100%;
        }

        .left {
            background-color: aqua;
            width: 200px;
            margin-left: -100%;  /*  重点 */
            left: -200px; /*  重点 */
        }

        .right {
            background-color: aquamarine;
            width: 300px;
            margin-right: -300px; /*  重点 */
        }
    </style>
</head>

<body>
    <div class="container">
          <div class="main">main</div>
          <div class="left">left</div>
          <div class="right">right</div>
    </div>

</html>

双飞翼布局: :略

手写clearfix

.clearfix:after{
    display:table;
    content:'';
    clear:both;
}
.clearfix{
    *zoom:1;
}

6. flex布局

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>色子</title>
    <style>
        .box {
            border: 2px solid #ccc;
            width: 200px;
            height: 200px;

            display: flex;
            justify-content: space-around;
        }

        .item {
            width: 30px;
            height: 30px;
            border-radius: 15px;
            background-color: #ccc;
        }

        .item:nth-child(2) {
            align-self: center
        }

        .item:nth-child(3) {
            align-self: flex-end;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
</body>

7、CSS 定位

absolute 和relative别离根据什么定位?

定位元素:

  • absolute,relative,fixed
  • body

8、程度居中和垂直居中

我的答复:
1.flex:

    .box {
            width: 200px;
            height: 200px;
            border: 2px solid #ccc;

            display: flex;
            justify-content: center;
        }

        .item {
            align-self: center;
            width: 100px;
            height: 100px;
            border: 1px solid pink;
        }


<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>程度居中</title>
    <style>
        .box {
            width: 200px;
            height: 600px;
            border: 2px solid #ccc;
            position: relative;
        }

        .box div {
            height: 100px;
            border: 1px solid #000;
            margin-bottom: 10px;
        }

        .item1 {
            text-align: center;     /*  重点 */
            line-height: 100px;
        }
        .item2 {
            width: 100px;
            margin: auto; /*  重点 */
        }
        .item3 {
            position: absolute;
            width: 100px;
            left: 50%;/*  重点 */
            margin-left: -50px;    /*  重点 */
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="item1">
            <span>一段文字</span>
        </div>
        <div class="item2">this is block</div>
        <div class="item3">this is absolute</div>
    </div>
</body>

absolute终极计划:

top:0;
right:0;
bottom:0;
left:0;
margin:auto;

9、line-height的继承问题

  • 写具数值,如30px,则继承该 (比拟好了解)
  • 比例,如2/1.5 ,则继承该比例(比拟好了解)
  • 百分比,如200% 则继承计算出来的(考点)

10、响应式布局

rem

rem 绝对于根元素的长度单位
em 绝对于父元素 不好用 也不罕用
px 相对长度单位

联合media-query ,检测宽度,而后设置根元素的font-size,以此作为规范宽度

vw/vm

针对rem的弊病-具备阶梯性

网页视口尺寸

window.screen.height; // 屏幕高度
window.innerHeight; // 去导航栏 网页视口高度
document.body.clientHeight; // 文档的高度
vw 视口宽度的百分之一
vh 视口高度的百分之一
vmax 取两者最大值
vmin 取两者最小值

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理