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

CSS新特性

目录

1. CSS 2023 新特性

2. CSS 2024 新特性


前言:这些新特性通常兼容性较差,在生产环境中谨慎使用!!!

1. CSS 2023 新特性

  • 容器查询(Container Queries):允许在容器尺寸而非视口尺寸的基础上应用不同的样式,提升了响应式设计的灵活性。
    /* 定义一个容器查询 会根据 .container 的宽度是否超过 500px 来切换 .item 的背景色。*/
    .container {
      container-type: inline-size;
    }
    
    .container > .item {
      background-color: lightblue;
    }
    
    @container (min-width: 500px) {
      .container > .item {
        background-color: lightcoral;
      }
    }
    

  • 子网格(Subgrid):进一步增强了网格布局,使嵌套网格继承父级网格的轨道,从而解决了复杂布局中的对齐问题。
    .container {
      display: grid;
      grid-template-columns: 1fr 2fr 1fr;
    }
    
    .subgrid-container {
      display: grid;
      grid-template-columns: subgrid; /* 子网格继承父网格 */
    }
    /* .subgrid-container 会继承 .container 的列定义,使布局更加一致。 */

  • @scope 规则:通过限制样式影响范围,避免样式意外污染其他区域,增强组件的可维护性。
    @scope (.card) {
      .title {
        color: blue;
      }
    }
    /* .title 样式仅在 .card 内生效,其他地方不会被影响 */

  • 样式查询(Style Queries):结合容器查询,允许基于样式属性(如字体、颜色)进行查询,丰富了响应式设计的条件。
    @container style(color-scheme: dark) {
      .container {
        background-color: black;
        color: white;
      }
    }
    
    /* 根据父容器的 color-scheme 是否为 dark 模式来调整 .container 的背景色和字体颜色。 */

2. CSS 2024 新特性

  • () 伪类支持:使 CSS 能选中包含特定内容的父元素,进一步扩展了选择器的能力,比如为包含错误输入的表单高亮其父元素。
    /* 当 `.form-group` 内有 `.input-error` 时,应用红色边框 */
    .form-group:has(.input-error) {
      border: 2px solid red;
    }
    
    /* 当 `.container` 中包含选中的复选框时,将背景色变为绿色 */
    .container:has(input[type="checkbox"]:checked) {
      background-color: lightgreen;
    }
    

  • 颜色级联(CSS Color Level 5):支持更多颜色空间(如 Lab、LCH),并引入相对颜色功能,让颜色计算更自然,尤其适用于暗模式。
    /* 使用 Lab 颜色空间来调整颜色的亮度和色调 */
    body {
      background-color: lab(80% -20 20);
      color: lch(70% 30 50);
    }
    
    /* 使用相对颜色调整:将暗模式下背景色变暗 */
    body {
      background-color: color-mix(in lch, #fff, #000 30%);
    }
    

  • CSS Nesting:简化样式编写,类似于预处理器,支持嵌套规则,以便管理层级和组件结构。
    /* CSS 原生嵌套 */
    .card {
      padding: 20px;
      background-color: #fff;
    
      & .title {
        font-size: 24px;
        color: #333;
      }
    
      & .content {
        font-size: 16px;
        color: #666;
      }
    
      &:hover {
        background-color: #f5f5f5;
      }
    }
    

  • 优先级调节:通过引入特定属性控制样式优先级,避免了 !important 滥用,使样式覆盖和继承更合理。
    @layer defaults {
      .button {
        background-color: lightgray;
        color: black;
      }
    }
    
    @layer overrides {
      .button {
        color: white;
        background-color: blue;
      }
    }
    


http://www.kler.cn/a/394581.html

相关文章:

  • Python的Matplotlib
  • 四:HTTP的诞生:它解决了哪些网络通信难题?
  • Iotop使用
  • 卷积神经网络之Yolo详解
  • React中 修改 html字符串 中某些元素的属性
  • 2024/11/13 英语每日一段
  • Ai编程从零开始全栈开发一个后台管理系统之用户登录、权限控制、用户管理-前端部分(十二)
  • nacos配置中心入门
  • 【达梦数据库】参数优化脚本主要改什么
  • spark.default.parallelism 在什么时候起作用,与spark.sql.shuffle.partitions有什么异同点?
  • LaTeX中浮动体(图片、表格)的位置及上下间距设置
  • 使用命令强制给ESXI上的硬盘分区
  • Grafana Username password invalid
  • JavaScript的展开运算符在React中的应用
  • 游戏引擎学习第11天
  • 软件测试计划和测试用例详解
  • 鸿蒙学习生态应用开发能力全景图-鸿蒙生态伙伴 SDK 市场(4)
  • 家政服务平台管理系统(源码+文档+部署+讲解)
  • Sql进阶:字段中包含CSV,如何通过Sql解析CSV成多行多列?
  • 【数据结构】顺序表解析及实战运用
  • 【Redis实战篇】利用布隆过滤器解决缓存穿透问题
  • 力扣题目解析--合并两个链表
  • SystemVerilog学习笔记(十一):接口
  • 相机光学(四十)——2x2 Adjacent Pixel Binning
  • 小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
  • Python图像识别详解