暑期实习好难找,前端面试学习之CSS

73 阅读3分钟

暑期实习好难找,前端面试学习之CSS

一、CSS布局

1.盒子模型的宽度

offsetWidth = (内容宽度width+内边距padding+边框borders) 与外边距无关 例:

div{  //求这个盒子的offsetWidth
            width: 100px;
            height: 300px;
            padding: 10px;
            border: 1px solid pink;
            margin: 10px;
        }

答:offsetWidth = 100 + 210 + 21 =122px PS: 要想让offsetWidth=100px,在样式中添加 box-sizing:border-box;

2.margin纵向重叠

规则: 相邻元素的margin-top和margin-bottom会重叠 空白内容 p标签也会重叠 例:求AAA与BBB的距离 15px

p {    
            font-size: 16px;
            line-height: 1;
            margin-top: 10px;
            margin-bottom: 15px;
  }
<body>
    <p>AAA</p>
    <p></p>
    <p></p>
    <p></p>
    <p>BBB</p>
</body>

margin负值问题

margin-top/margin-left为负值,代表元素向上/向左移动 margin-right为负值,右侧元素左移,自身不受影响 margin-bottom负值,下方元素上移,自身不受影响

3. CSS选择器优先级

id > class / 属性 / 伪类 > 标签/伪元素

请写出下列三个div的颜色

 #container p {
            color: blue;
        }

        div #p1,
        div #p2 {
            color: red;
        }

        #container p.yellow-text {
            color: yellow;
            font-weight: blod;
        }

        #container p.green-text {
            color: green;
            font-weight: blod;
        }

        div p {
            color: gray;
        }
<div id="container">
        <p id="p1" class="yellow-text">100</p>
        <p id="p2" class="green-text">200</p>
        <p id="p3">300</p>
    </div>

4.BFC理解和应用

Block Format context,块级格式化上下文,是一块独立渲染区域,内部元素的渲染不会影响边界以外的元素。 形成条件: float不是none
position是absolute/fixed
overflow不是visible
display是flex/inline-block

5. float布局

float布局如何实现圣杯布局和双飞翼布局

目的:三栏布局,中间一栏最先加载和渲染(内容最重要);两侧内容固定,中间内容随宽度自适应;一般用于PC网页 使用float布局;两侧使用margin负值,以便和中间内容横向重叠;防止中间内容被两侧覆盖,圣杯用padding, 双飞翼用margin (代码手写)

6. flex布局

flex实现一个三点的色子布局

flex-direction:主轴的方向 横轴/纵轴 justify-content:主轴的对齐方式 align-items:交叉轴对齐方式 flex-wrap:是否换行 align-self:子元素在交叉轴的对齐方式

二、CSS定位

1.absolute和relative定位

   Relative依据自身定位;absolute依据最近一层的定位元素定位

2.居中对齐的实现方式

水平居中 对于inline元素:text-align:center 对于block元素:margin:auto 对于absolute元素:left:50% + margin-left负值 垂直居中 对于inline元素:line-height的值等于height 对于absolute元素:top:50% + margin-top负值 对于absolute元素:transform:translate(-50%,-50%) 对于absolute元素:top,left,bottom,right = 0 + margin: auto

三、CSS响应式

1.rem是什么

rem是一个长度单位,具有“阶梯”性

有哪些常见的长度单位?

px,绝对长度单位,最常用 em,相对长度单位,相对于父元素,不常用 rem,相对长度单位,相对于根元素,常用于响应式布局

2.响应式布局的常见方案

media-query(媒体查询),根据不同屏幕宽度设置根元素font-size 再利用rem,基于根元素的相对单位及逆行响应式布局

3.网页视口尺寸

//屏幕高度 window.screen.height //网页视口高度 window.innerHeight //body高度 document.body.clientHeight vh/vw 解决rem阶梯性的弊端 vamx = max(vh,vm) vh = 网页视口高度 / 100 vw = 网页视口宽度 / 100

四、CSS常见手写题

1.圣杯布局和双飞翼布局

2.四合院

3.Flex布局实现骰子

4.水平垂直居中

5.CSS抽屉效果

6.黑白主题切换