前端面试知识点总结(CSS篇)

246 阅读4分钟

相关面试题会持续补充,发现文中没有的面试题也可以在评论区留言~ 一句话,题目不是重点,考察的知识点最重要,理解和应用才是关键。

calc, support, media各自的含义及用法?

@support主要是用于检测浏览器是否支持CSS的某个属性,其实就是条件判断,如果支持某个属性,你可以写一套样式,如果不支持某个属性,你也可以提供另外一套样式作为替补。

calc() 函数用于动态计算长度值。 calc()函数支持 "+", "-", "*", "/" 运算;

@media 查询,你可以针对不同的媒体类型定义不同的样式。

css水平、垂直居中的写法,请至少写出4种?

水平居中:

  • 行内元素: text-align: center
  • 块级元素: margin: 0 auto
  • position:absolute +left:50%+ transform:translateX(-50%)
  • display:flex + justify-content: center 垂直居中:
  • 设置line-height 等于height
  • position:absolute +top:50%+ transform:translateY(-50%)
  • display:flex + align-items: center
  • display:table+display:table-cell + vertical-align: middle;

line-height继承问题

  • 具体数值,则继承该值,如line-height=30px
  • 比例,如2/1.5 则继承该比例 如line-height=1.5
  • 百分比,如200% 则继承计算出来的值(坑)

1rem、1em、1vh、1px各自代表的含义?

rem rem是全部的长度都相对于根元素元素。通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem。 em

  • 子元素字体大小的em是相对于父元素字体大小
  • 元素的width/height/padding/margin用em的话是相对于该元素的font-size

vw/vh 全称是 Viewport Width 和 Viewport Height,视窗的宽度和高度,相当于 屏幕宽度和高度的 1%,不过,处理宽度的时候%单位更合适,处理高度的 话 vh 单位更好。 px px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。 一般电脑的分辨率有{19201024}等不同的分辨率 19201024 前者是屏幕宽度总共有1920个像素,后者则是高度为1024个像素

画一条0.5px的直线?

height: 1px;
transform: scale(0.5);

说一下盒模型?

盒模型的组成,由里向外content,padding,border,margin.

在IE盒子模型中,width表示content+padding+border这三个部分的宽度

在标准的盒子模型中,width指content部分的宽度

box-sizing的使用

 box-sizing: content-box 是W3C盒子模型
 box-sizing: border-box 是IE盒子模型

box-sizing的默认属性是content-box

offsetwidth = (内容宽度+内边距+边框),不包含外边距,所以改变box-sizing的值可以改变offsetwidth的值

画一个三角形?

一边设置颜色,其余边设置transparent即可

.a{
            width: 0;
            height: 0;
            border-width: 100px;
            border-style: solid;
            border-color: transparent #0099CC transparent transparent;
            transform: rotate(90deg); /*顺时针旋转90°*/
 }

<div class="a"></div>

一般在PopTip等组件上会应用到

清除浮动的几种方式,及原理?

  • clearfix
  • 创建父级 BFC(overflow:hidden)
  • 父级设置高度

BFC (块级格式化上下文),是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。 触发条件:

  • 根元素

  • position: absolute/fixed

  • display: inline-block / table

  • float 元素

  • ovevflow !== visible 规则:

  • 属于同一个 BFC 的两个相邻 Box 垂直排列

  • 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠

  • BFC 的区域不会与 float 的元素区域重叠

  • 计算 BFC 的高度时,浮动子元素也参与计算

  • 文字层不会被浮动层覆盖,环绕于周围

margin纵向重叠问题

  • 相邻元素的margin-top 和 margin-bottom会发生重叠,以较大值为准。
  • 空白内容的<p></p>也会重叠,类似被忽略掉的样子

margin负值问题

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

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

  1. 三栏布局,中间一栏最先加载和渲染(内容最重要)
  2. 两侧内容固定,中间内容随着宽度自适应
  3. 一般用于PC网页 技术总结:
  • 使用float布局
  • 两侧使用margin负值,以便和中间内容横向重叠
  • 防止中间内容被两侧覆盖,一个用padding一个用margin