前端高频考题(css)

一、css盒模型

  • 标准盒模型:margin、border、padding、width
  • IE盒模型:margin、width(border + padding)

通过css如何转换盒子模型

  • box-sizing:content-box(标准)/ border-box(IE)

绝大多数场景推荐标准盒子模型,因其符合现代 Web 开发规范,逻辑清晰且兼容性良好

二、line-height和height

  • line-height:每一行文字的高,如果文字换行则整个盒子的高度会增大(行数*行高)
  • height:一个死值,盒子的高度

三、css的选择符?哪些属性可以继承?

  • 通配符(*)
  • id选择器(#)
  • 类选择器(.)
  • 标签选择器(div、p、h...)
  • 相邻选择器(+)
  • 后代选择器(ul li)
  • 子元素选择器(>)
  • 属性选择器(a[href]

css哪些属性可以继承

  • 文字系列:font-size、color、line-height、text-align...
  • 不可继承属性:border、padding、margin...

四、css优先级算法如何计算?

  • 优先级比较:
  1. !important
  2. 内联样式
  3. ID 选择器#id
  4. 类选择器.class)、属性选择器[attr])、伪类:hover
  5. 标签选择器divp)、伪元素::before
  6. 通配符选择器*)、关系选择器+>、空格)、否定伪类:not()
  7. 继承样式
  • css权重计算
    • 内联样式:1000
    • id选择器:100
    • 类选择器:10
    • 标签&伪元素:1
    • *、+、>:0

五、用css画一个三角形

  • 用border画
css 复制代码
div{
    width:0;
    height:0;
    border-left:100px solid #ccc;
    border-right:100px solid transparent;
    border-top:100px solid transparent;
    border-bottom:100xp solid transparent;
}

六、一个盒子不给宽高如何水平垂直居中

  • 方法一
css 复制代码
.container{
    display:flex;
    justify-content:center;
    align-items:center;
    width:100px;
    height:100px;
    border:1px solid #ccc;
}
.main{
    background:red;
}
  • 方法二
css 复制代码
.container{
    position:relative;
    width:100px;
    height:100px;
    border:1px solid #ccc;
}
.main{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%)
    background:red;
}
  • 方法三
css 复制代码
.parent {
  display: grid; /* 将父容器设为 Grid 容器 */
  place-items: center; /* 同时设置水平和垂直居中(等价于 align-items: center; justify-items: center;) */
  height: 300px; /* 需指定高度 */
}

.child {
  /* 子元素无需额外设置 */
}

七、对BFC规范的理解

BFC就是页面上一个隔离的独立容器,容器里面的子元素不会影响到外面的元素

  • 了解BFC:块级格式化上下文
  • BFC的原则:如果一个元素具有BFC,那么内部元素再怎么造,都不会影响到外面的元素
  • 如何触发BFC:
    • float:left
    • overflow:hidden

八、清除浮动的方式

  • 触发BFC
css 复制代码
ul{
    list-style:none;
    border:10px solid #ccc;
    overflow:hidden;
}
ul li{
    float:left;
    width:100px;
    height:100px;
    background:red
}
  • after方式
css 复制代码
ul{
    list-style:none;
    border:10px solid #ccc;
}
ul:after{
    content:'';
    display:block;
    clear:both;
}
ul li{
    float:left;
    width:100px;
    height:100px;
    background:red
}

九、position有哪些值?分别是根据什么定位的?

定位方式 参考对象 是否脱离文档流 滚动行为
static 正常文档流 随页面滚动
relative 自身正常位置 随页面滚动
absolute 已定位祖先元素 随祖先元素滚动
fixed 浏览器视口 固定不动
sticky 正常位置 + 视口阈值 否(滚动时切换) 到达阈值前随滚动,到达后固定

relative和absolute区别

  1. relative不脱离文档流、absolute脱离文档流
  2. relative相对于自身定位、absolute相对于第一个有relative的父元素定位
  3. relative如果有left、right、top、bottom -> left、top
  4. absolute如果有left、right、top、bottom -> left、right、top、bottom

十、双飞翼布局(左右固定中间自适应)

xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
     *{
      margin:0;
      padding:0;
     }
     #container > div{
      float:left;
     }
     #center{
      width:100vw;
      height:100vh;
      background-color: pink;
     }
     #left{
      height:100vh;
      width:200px;
      margin-left:-100%;
      background-color: red;
     }
     #right{
      height:100vh;
      width:200px;
      margin-left:-200px;
      background-color: blue;
     }
  </style>
</head>
<body>
  <div id="container">
    <div id="center"></div>
    <div id="left"></div>
    <div id="right"></div>
  </div>
</body>
</html>
xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>三栏布局</title>
  <style>
    body{
      height:100vh;
      margin:0;
      display:flex;
    }
    .left{
      width:200px;
      background-color: red;
    }
    .center{
      flex:1;
      background-color: pink;
    }
    .right{
      width:200px;
      background-color: blue;
    }
    
  </style>
</head>
<body>
  <div class="left">left</div>
  <div class="center">center</div>
  <div class="right">right</div>
</body>
</html>

十一、css reset是什么

  • reset.css 是一个css文件,用来重置css样式的。
  • normalize.css 为了增强跨浏览器渲染的一致性,一个css重置样式库

十二、css sprite是什么,有什么优缺点

  • 是什么:把多个小图标合成一张大图片

  • 优缺点

    • 优点:减少了http请求次数,提升了性能
    • 缺点:维护比较差(例如图片位置修改,图片宽高修改)

十三、display-none和visibility-hidden有什么区别

  • 占用位置的区别

    • display-none:是不占用位置的
    • visibility-hidden:虽然隐藏了,但是占用位置
  • 重绘重排

    • display-none:会触发重排和重绘,导致元素完全消失
    • visibility-hidden:仅触发重绘,元素仍保留占位空间
    • 产生重排:改变元素的位置
    • 产生重绘:改变样式

十四、opacity和rgba的区别

  • opacity会继承父元素的opacity属性,而rgba设置的元素的后代元素不会继承透明属性

  • opacity

  • rgba

十五、flex的基本属性

  • flex-direction
  • flex-wrap
  • justify-content
  • align-items
  • align-content

十六、flex:1 flex:auto flex:0 flex:none

在 Flexbox 布局里,flex是一个复合属性,它综合了flex-growflex-shrinkflex-basis这三个属性。

  • flex-grow :定义元素在主轴方向上的扩张能力,默认值为0
  • flex-shrink :定义元素在主轴方向上的收缩能力,默认值为1
  • flex-basis :定义元素在分配空间前的初始大小,默认值为auto
属性 flex: 1 (1 1 0) flex: auto (1 1 auto)
初始大小 基于0计算,忽略内容尺寸 基于内容或width计算
剩余空间分配 直接按比例分配全部空间 先满足内容需求,再分配剩余空间
收缩行为 内容可能被压缩(溢出) 优先保持内容可见(避免溢出)
简写方式 等价于 主要特点
flex: 0 flex: 0 1 0% 不放大,允许收缩,初始尺寸为容器的 0%
flex: 1 flex: 1 1 0% 可放大(占剩余空间),允许收缩
flex: none flex: 0 0 auto 不放大、不收缩,尺寸由内容决定(固定尺寸)
flex: auto flex: 1 1 auto 可放大、可收缩,初始尺寸由内容决定

十七、什么是 CSS Modules?解决了什么问题?

CSS Modules 是一种 "模块化 CSS" 方案,通过工具(如 Webpack、Vite)将 CSS 文件处理为 "模块",每个模块的类名会被自动生成唯一的哈希值 (如 .box.box__3k2j5),避免不同文件中的类名冲突。

  • 全局样式冲突 :传统 CSS 是 "全局作用域",不同组件 / 文件中的相同类名(如 .box)会相互覆盖,尤其在大型项目中(多人协作、组件复用),冲突问题严重。
  • 样式污染:某组件的样式可能意外影响其他组件(如全局样式泄漏到局部)。
  • 类名命名困难 :为避免冲突,传统 CSS 需写冗长的类名(如 .header-nav-item),CSS Modules 可简化命名(直接用 .item)。
  1. 配置 Webpack,启用 CSS Modules: // webpack.config.js module.exports = { module: { rules: [ { test: /.css$/, use: [ 'style-loader', { loader: 'css-loader', options: { modules: true, // 启用 CSS Modules }, }, ], }, ], }, };

  2. 在组件中使用:

    css 复制代码
    /* Box.css(CSS Modules 文件) */
    .box {
      width: 100px;
      height: 100px;
      background: #f00;
    }
    javascript 复制代码
    // Box.jsx
    import styles from './Box.css'; // 导入 CSS Modules,styles 是一个对象
    
    function Box() {
      // 使用生成的唯一类名:styles.box → 实际为 .box__3k2j5
      return <div className={styles.box}></div>;
    }
相关推荐
崔庆才丨静觅7 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60618 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了8 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅8 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅9 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅9 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment9 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅9 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊9 小时前
jwt介绍
前端