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

news/2025/2/1 10:54:58 标签: 前端, css, 学习

一、盒模型

题目:简述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

css">.container {
  display: flex;
  justify-content: center; /* 水平居中 */
  align-items: center;     /* 垂直居中 */
  height: 100vh;           /* 设置容器的高度为视口高度 */
}

.content {
  /* 可以设置内容的宽高 */
  width: 200px;
  height: 100px;
  background-color: lightblue;
}


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

css">.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%) 通过移动元素自身的一半宽度和高度来使元素居中。

css">.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,表示它会占据剩余的空间并自适应宽度。
    css">.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 表示占据剩余空间并自适应宽度。
    css">.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)
      css">.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
      css">.container {
        display: grid;
        grid-template-columns: 1fr,1fr,1fr;  /* 创建三列,宽度均分 */
        gap: 10px;  /* 每列之间的间距 */
      }
      
      .column {
        background-color: lightgray;
        padding: 10px;
      }
      

http://www.niftyadmin.cn/n/5839313.html

相关文章

Python3 【装饰器】项目实战:5个新颖的学习案例

Python3 【装饰器】项目实战:5个新颖的学习案例 以下是 5 个使用 Python 装饰器的综合应用项目,这些项目具有新颖性、前瞻性和实用性。每个项目都包含完整的代码、解释说明、测试案例和执行结果。 项目 1:API 请求限流器 描述:实…

第十一章 F - H 开头的术语

文章目录 第十一章 F - H 开头的术语文件流 (file stream)最终类 (final class)最终方法 (final method)最终属性 (final property)外键 (foreign key)基础 (foundation) 以 G 开头的术语全局 (global)全局数据库 (globals database)全局目录 (global directory)全局唯一标识符…

CSS 中调整元素大小的全面指南

CSS 中调整元素大小的全面指南 1. 原始尺寸(固有尺寸)示例代码:图像的固有尺寸 2. 设置具体的尺寸示例代码:设置固定宽度和高度 3. 使用百分比示例代码:使用百分比设置宽度 4. 使用百分比作为外边距和内边距示例代码&a…

《苍穹外卖》项目学习记录-Day7缓存菜品

我们优先去读取缓存数据,如果有就直接使用,如果没有再去查询数据库,查出来之后再放到缓存里去。 微信小程序根据分类来展示菜品,所以每一个分类下边的菜品对应的就是一份缓存数据,这样的话当我们使用这个数据的时候&am…

EtherCAT主站IGH-- 25 -- IGH之fsm_slave_scan.h/c文件解析

EtherCAT主站IGH-- 25 -- IGH之fsm_slave_scan.h/c文件解析 0 预览一 该文件功能`fsm_slave_scan.c` 文件功能函数预览二 函数功能介绍`fsm_slave_scan.c` 中主要函数的作用1. `ec_fsm_slave_scan_state_start`2. `ec_fsm_slave_scan_state_address`3. `ec_fsm_slave_scan_stat…

(动态规划路径基础 最小路径和)leetcode 64

视频教程 1.初始化dp数组&#xff0c;初始化边界 2、从[1行到n-1行][1列到m-1列]依次赋值 #include<vector> #include<algorithm> #include <iostream>using namespace std; int main() {vector<vector<int>> grid { {1,3,1},{1,5,1},{4,2,1}…

Day30-【AI思考】-错题分类进阶体系——12维错误定位模型

文章目录 错题分类进阶体系——12维错误定位模型**一、认知层错误&#xff08;根源性缺陷&#xff09;****二、操作层错误&#xff08;执行过程偏差&#xff09;****三、心理层错误&#xff08;元认知障碍&#xff09;****四、进阶错误&#xff08;专业级陷阱&#xff09;** 错…

24.Word:小李-黑客技术【7】

目录 NO1.2.3.4 NO5.6​ NO7.8.9​ NO1.2.3.4 另存为&#xff1a;考生文件夹没有B5则&#xff1a;文件→打印→打印机&#xff08;更换打印机&#xff09;布局→纸张大小&#xff1a;B5&#xff08;JIS)→页面设置对话框→页边距&#xff1a;左右→装订线&#xff1a;1cm→页…