CSS面试解析(1)

165 阅读3分钟

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

box-sizing

  • box-sizing属性:用来控制元素的盒模型的解析模式。默认值是content-box

拓展

  • content-box: 让元素维持W3C的标准盒模型
    • 元素的宽度 / 高度由border+padding+content的宽度/高度决定
    • 设置width/height指的是:content部分的宽/高
  • border-box: 让元素维持IE传统盒模型(IE6以下版本和IE6~7的怪异模式)
    • 设置width/height属性指的是border+padding+content
  • 应用场景:统一风格的表单元素
    • 表单元素中有一些input元素其实还是展现的传统IE盒模型,带有一些默认的样式,而且在不同的平台或者浏览器的变现不一致,造成了表单展现的差异。

水平垂直居中的方法

  • 行内布局
    • 单行:line-height + text-align: center
    • 多行:vertical-align: middle + text-align: center
  • 块布局
    • position: absolute + 负margin
    • position: absolute + transform
    • flex布局
    • grid布局(网格布局)

有哪些方式可以对一个DOM设置它的CSS样式?

  • 外部样式表,引入一个外部css文件
    • <link href="">引入外部的css文件
  • 内部样式表, 将css代码放在<head>标签内部
    • <style></style>
  • 内联样式表,将css样式直接定义在HTML元素内部
    • 通过style的属性来书写css代码

超链接访问过后hover样式就不出现的问题?

  • 被点击访问过的超链接样式不再具有hoveractive
  • 解决方式:改变CSS属性的排列顺序:L V H A
    • link \ visited \ hover \ active

什么是外边距重叠?重叠的结果是什么?

  • 外边距重叠:margin-collapse
  • css中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距,这种合并外边距的方式被称为折叠。
  • 折叠遵循以下计算规则
    • 两个相邻的外边距都是正数,折叠结果:两者之间较大的值
    • 负数两者绝对值的较大值
    • 一正一负两者的相加的和

rgba()opacity的透明效果有什么不同?

  • 都能实现透明效果,但opacity作用于元素,以及元素内的所有内容的透明度
  • rgba()只作用于元素的颜色或者背景色,并且其子元素不会继承透明效果

分析比较opacity:0visibility:hiddendisplay:none优劣和适用场景

结构

  • display:none会让元素完全从渲染树中消失,渲染的时候不占任何空间,不能点击
  • visibility:hidden不会让元素从渲染树消失,渲染元素继续占据空间,只是内容不可见,不能点击
  • opacity:0不会让元素从渲染树消失,渲染元素占据空间,只是内容不可见,可以点击

继承

  • display:none是非继承属性,子孙节点消失由于元素从渲染树消失造成,通过修改子孙节点属性无法显示。
  • opacity:0是继承属性,无法通过子孙节点属性设置显示
  • visibility:hidden是继承属性,子孙节点消失由于继承了hidden,通过设置visibility:visible,可以让子孙节点显式。

性能

  • display:none修改元素会造成文档回流,读屏器不会读取display:none元素内容,性能消耗较大。
  • visibility:hidden修改元素只会造成元素的重绘,性能消耗较少
  • opacity:0修改元素会造成重绘,性能消耗较少

联系

  • 都能让元素不可见