当前位置: 首页 > news >正文

前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局

一、盒模型

题目:简述CSS的盒模型

答:盒模型有两种类型,可以通过box-sizing设置
1.标准盒模型(content-box):默认值,宽度和高度只包含内容区域,不包含内边距、边框和外边距。

2.边框盒模型(border-box):宽度和高度包括内容区域、内边距和边框,但不包括外边距。

盒模型中元素的总宽度=内容宽度+左右内边距+左右边框+左右外边距
盒模型中元素的总高度=内容高度+上下内边距+上下边框+上下外边距

 二、CSS specificity (权重)

题目:简述下CSS权重

答:CSS权重是用于确定当多个CSS规则应用到同一元素时,哪个规则最终会生效。

权重优先级:
1.!important(最高)

2.内敛样式

3.ID选择器

4.类选择器、伪类选择器、属性选择器

5.标签选择器、伪元素

其中通配符选择器 *,组合选择器 + ~ >,否定伪类选择器 :not() 对优先级无影响

 三、’+’ 与 ’~’ 选择器有什么不同

答:

  • + 选择器匹配紧邻的兄弟元素

  • ~ 选择器匹配随后的所有兄弟元素

四、z-index 与层叠上下文

  • 题目:如何更好地给元素设置 z-index

  • 题目:z-index: 999 元素一定会置于 z-index: 0 元素之上吗

 答:1.z-index用于控制元素的堆叠顺序,决定哪些元素会出现在其他元素之上。

为了更好的使用z-index,可以合理划为堆叠上下文,还可以避免使用过高的z-index,同时要层级清晰

2.不一定,虽然 z-index: 999 的元素通常会被放置在 z-index: 0 的元素之上,但这也有条件。

z-index仅在元素处于同一堆叠上下文中有效

五、水平垂直居中

题目:如何实现一个元素的水平垂直居中

答:1. 使用flex布局:justify-content:center,align-content:center

.container {display: flex;justify-content: center; /* 水平居中 */align-items: center;     /* 垂直居中 */height: 100vh;           /* 设置容器的高度为视口高度 */
}.content {/* 可以设置内容的宽高 */width: 200px;height: 100px;background-color: lightblue;
}


       2.使用grid布局:place-items:center

.container {display: grid;place-items: center; /* 水平垂直居中 */height: 100vh;
}.content {width: 200px;height: 100px;background-color: lightcoral;
}

       3.使用绝对定位:子绝父相,top:50%,left:50%,transform: translate(-50%, -50%) 通过移动元素自身的一半宽度和高度来使元素居中。

.container {position: relative;height: 100vh;
}.content {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 200px;height: 100px;background-color: lightgreen;
}

六、左侧固定、右侧自适应

题目:css如何实现左侧固定300px,右侧自适应的布局

答:使用flex和grid布局
1.flex:

  • .container 使用 display: flex,将子元素放入 flex 布局中。
  • .left 设置固定宽度 300px。
  • .right 使用 flex: 1,表示它会占据剩余的空间并自适应宽度。
    .container {display: flex;
    }.left {width: 300px;  /* 左侧固定宽度 */background-color: lightblue;
    }.right {flex: 1;  /* 右侧自适应宽度 */background-color: lightgreen;
    }
    

2.grid:

  • .container 使用 display: grid,并通过 grid-template-columns 定义了两列布局,第一列宽度为 300px,第二列使用 1fr 表示占据剩余空间并自适应宽度。
    .container {display: grid;grid-template-columns: 300px 1fr;  /* 左侧300px,右侧自适应 */
    }.left {background-color: lightblue;
    }.right {background-color: lightgreen;
    }
    

七、三栏均分布局

题目:如何实现三栏均分布局

答:使用flex和grid布局

  • flex:
    • 方案一: flex: 1;
    • 方案二: flex-basis: calc(100% / 3)
      .container {display: flex;justify-content: space-between; /* 保证各栏之间有间距 */
      }.column {flex: 1;  /* 每一栏宽度相等 */padding: 10px;background-color: lightgray;margin: 0 5px; /* 增加栏间距 */
      }
      
  • grid:
    • 父容器: grid-template-columns: 1fr 1fr 1fr
      .container {display: grid;grid-template-columns: 1fr,1fr,1fr;  /* 创建三列,宽度均分 */gap: 10px;  /* 每列之间的间距 */
      }.column {background-color: lightgray;padding: 10px;
      }
      
http://www.lryc.cn/news/529658.html

相关文章:

  • Linux网络 | 网络层IP报文解析、认识网段划分与IP地址
  • 服务器虚拟化实战:架构、技术与最佳实践
  • (leetcode 213 打家劫舍ii)
  • [C语言日寄] <stdio.h> 头文件功能介绍
  • 一文读懂 Faiss:开启高维向量高效检索的大门
  • 【二叉搜索树】
  • R语言统计分析——ggplot2绘图5——拟合光滑曲线
  • 疯狂拆单词01
  • 高效学习方法分享
  • 01.双Android容器解决方案
  • 一文大白话讲清楚webpack进阶——9——ModuleFederation实战
  • Mysql意向锁
  • 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
  • AD电路仿真
  • vim 中粘贴内容时提示: -- (insert) VISUAL --
  • Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析
  • ZZNUOJ(C/C++)基础练习1021——1030(详解版)
  • 力扣116. 填充每个节点的下一个右侧节点指针
  • 寒武纪MLU370部署deepseek r1
  • Python NumPy(10):NumPy 统计函数
  • Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成
  • 【字符串两大注意事项】
  • jmap命令详解
  • 微机原理与接口技术期末大作业——4位抢答器仿真
  • FOC核心原理的C语言实现
  • 基于互联网+智慧水务信息化整体解决方案
  • 【信息系统项目管理师-选择真题】2005下半年综合知识答案和详解
  • 计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习
  • 第十一章 F - H 开头的术语
  • 深度研究新范式:通过Ollama和DeepSeek R1实现自动化研究