Skip to content
On this page

面试题

display有哪些属性

  • none —— 不展示
  • block —— 块类型
  • inline —— 行内
  • inline-block —— 默认行内块状
  • list-item | table
  • inherit —— 继承

inline 和 inline-block的区别

  • inline: 共享一行 行内概念
  • block: 独占一行
  • inline-block: 共享一行,内容作为block对象呈现

行内元素和块状元素有什么区别?

行内元素:

  • 无法设置宽高
  • 水平方向可设置margin + padding , 垂直方向则无法设置
  • 不会自动换行

块级元素:

  • 可以设置宽高
  • 水平垂直方向都可设置margin + padding
  • 可以自动换行
  • 多个块状元素是默认从上往下换行排列的

有哪些行内和块状元素

块状元素:div form h1 pre table ul... 行内元素: a br code em img i input strong textarea...

块级元素和内联元素有哪几种转换方式?

  • display: block 转换为块状元素 display: inline 转换为内联元素
  • float : left/right 给元素默认加上了display: block 去除了行内元素之间的空白问题
  • position: absolute / fixed 脱离了文档流

选择器 & 优先级

选择器例子权重
内联样式style=""1000
id选择器#id100
类选择器class10
属性选择器a[ref="link"]10
标签选择器div1
伪类选择器li:last-child10
伪元素选择器li:before1
兄弟选择器div + p0
子选择器ul > li0
后代选择器li a0
选择器*0

特殊场景的优先级如何判断?

  • !important 优先级最高
  • 如果优先级相同, 则后者高于前者
  • 继承得到的样式,优先级最低

可继承的样式有哪些?

  • 字体
    • font-family 、 font-weight 、font-size 、 font-style
  • 文本
    • text-indent 、text-align 、 line-height 、 word-spacing 、 letter-spacing 、 color
  • 元素
    • visibility
  • 列表布局
    • list-style
  • 光标
    • cursor

隐藏和显示

有哪些可以隐藏一个元素的方法?有什么区别?

方法区别(是否占位)
display: none不占位
visibility: hidden;占位
opacity: 0占位
position: absolute不占原本位置
z-index: 负数占位
clip占位
transform: scale(0, 0)占位

display VS visibility 有什么区别?

都是让元素隐藏和展示

区别: 1.浏览器渲染时, display不占据空间, 渲染树中会不存在;visibility会占据一根树枝。visibility 显示或隐藏元素而不更改文档的布局 2. 继承属性来说,display 不会被继承, visibility 会被继承 3. 性能影响上,display 会造成文档的重排, 但是修改visibility 只会导致文档的重绘

盒模型及其特性

标准盒模型、IE盒模型分别是什么? 怎么转换?

盒模型特点: content + padding + border + margin

区别:

  • 标准盒模型 —— width和height只包含content的部分
  • IE盒模型 —— width和height 包含了 content + padding + border部分

转换: box-sizing: content-box(标准盒模型)/ border-box(IE盒模型)

伪元素和伪类是什么?如何使用?区别是什么?

伪元素:只出现在css样式表中,不存在文档中 伪类: 已有的元素上加上特殊的类型,特殊状态, 不产生新的元素

图片格式以及CSS-sprites

图片格式有哪些?怎么应用?如何选择?

  • BMP, 无损,没有压缩。通常体积较大
  • GIF, 无损,采用了LZW压缩算法。仅支持8bit索引色,支持动图
  • JPEG,有损,直接色存储,适合还原度要求较高的图片
  • PNG-8, 无损,使用索引色。体积更优秀,并且支持透明度调节
  • PNG-24, 无损,使用直接色,压缩
  • SVG, 无损,svg放大矢量图,所以适合logo, icon
  • webP, 有损+无损,直接色,支持透明度,压缩。 chrome、opera 支持

css-sprites 精灵图,雪碧图怎么处理?

所有涉及到的图片,放到一张大图中去 background-image backgroung-repeat background-position

像素密度与图片应用

经典设备宽高:414px * 896px; 物理像素: 1242px * 2688px

1242 / 414 = 3

所以 逻辑像素与物理像素的比是 1:3; 像素密度是 3

如何在图片的加载上应用动态密度

比如设计师提供 @2x, @3x, @4x

利用媒体查询

css
  image{
    background-image: ('1x.png')
  }

  @media only screen and (min-divce-pixel-ratio:3) {
    image{
      background-image:('3x.png')
    }
  }

css工程化与预处理

css类库与工程化的理解

预处理器:less 、scss、 stylus

利用编译库提供能力,提供层级、mixin、变量、循环、函数

后处理器:postCss

利用后处理编译,属性增加前缀,实现跨浏览器兼容

单行多行文本超出

css
  /* 当行文本超出 */
  overflow:hidden; //  bfc
  text-overflow: ellipsis; // 超出省略号
  white-space: nowrap; // 不换行

  /* 多行文本超出 */
  overflow:hidden;
  text-overflow: ellipsis;
  display: -webkit-box; // 弹性伸缩盒子模型
  -webkit-box-orient: vertical; // 从上往下垂直排列
  -webkit-line-clamp: 3 // 显示的行数

  /* 兼容性方案 */
  p {
    position: relative;
    line-height: 18px;
    height: 40px;
    overflow: hidden;
  }
  P::after {
    content: "...";
    position: absolute;
    bottom: 0;
    right: 0;
  }

px rem em

多种单位的差别

  • 百分比:子元素的百分比相对于直接父元素的对应属性
  • em: 相对于父元素的字体大小倍数
  • rem:相对于根元素字体大小的倍数
  • vw:视图宽度,满视图宽度为100vw
  • vh:视图高度,满视图高度为100vh
  • vmin:vw和vh中较小值
  • vmax:vw和vh中较大值

如何利用rem实现响应式? 项目如何实现响应式的?

根据当前设备的视图宽度和设计稿的宽度得到一个比例;根据比例设置根节点的font-size,所有长度单位都用rem