CSS的6个新特性

news2024/9/22 4:02:07

1、容器查询(Container Queries)

容器查询@container类似于媒体查询@media,区别在于查询所依据的对象不同。媒体查询依据的是浏览器的视窗大小,容器查询依据的是元素的父元素或者祖先元素的大小。

有关容器查询的属性一共有三个,分别是container-typecontainer-namecontainer

container-type:标识一个作为被查询的容器,取值范围为sizeinline-sizeblock-sizestylestate

container-name:被查询的容器的名字

containercontainer-typecontainer-name的简写

使用方法

首先需要使用container-type或者container属性指定一个元素作为被查询的容器。然后使用@container进行容器查询。

<template>
    <div id="app">
      <div>
          <button @click="add" id="add">+</button>
          <button @click="sub" id="sub">-</button>
        </div>
        <div class="demo">
          <a>我的背景色会随着demo元素的宽度而变化</a>
        </div>
    </div>
</template>

<style>
.demo {
  width: 200px;
  height: 200px;
  background: red;
  container: inline-size;
}

@container (inline-size > 300px) {
  a {
    background: green;
  }
}
</style>

当父元素的宽度为200px的时候,背景色是红色的。

 当父元素的宽度增加到400px的时候,@container查询起到了效果,文字的背景色会变成绿色的。

 使用chrome浏览器,需要手动在chrome://flags页面开启Enable CSS Container Queries设置

二、级联层(Cascade Layers)

有时候当我们想要覆盖组件原来的样式来应用我们自定义的样式时,一般情况下我们会采用优先级更高的样式名来进行覆盖(或ID选择器或嵌套很多层),有时候又不得不应用!important ,这样很容易造成样式的混乱,不好管理。

级联层的诞生就是为了解决上述问题,它可以让CSS样式按照我们定义好的级联顺序展示,起到控制不同样式间的优先级的作用。

使用方法

通过@layer可以定义一个级联层。如下我们就定义了一个名字为A的级联层。

<template>
    <div id="app">hello world</div>
</template>

<style>
    #app {
      width:100px;
      height: 100px;
    }
    // 创建一个名为 A 的级联层
    @layer A {
      div {
        background-color: red;
      }
    }
</style>

当有多个级联层的时候,我们可以先把所有级联层的名字起好,然后再一一补充规则。

@layer A, B, C;

@layer A {
  div {
    background-color: red;
  }
}

@layer B {
  #app {
    background-color: blue;
  }
}

@layer C {
  div {
    background-color: green;
  }
}

多个级联层的优先级顺序为越写在后面的优先级越高,所以级联层C拥有最高的优先级,即使我们在级联层B中使用了ID选择器。所以最后div将展示绿色的背景色。

 三、颜色函数(Color Functions)

CSS Color Module Level 5CSS Color Module Level 5CSS Color Module Level 5新增了两个有关颜色的函数:color-mix()color-contrast() ,并且扩展了之前存在的其他颜色函数(例如rgb()hsl()hwb()等)的相关语法。

之前我们定义一个颜色,需要明确的指定每一个通道的绝对颜色。新的规范允许我们首先定义一个基础色,然后在它之上进行相对颜色的变换。比如:

--accent: lightseagreen;
--complement: hsl(from var(--accent) calc(h + 180deg) s l);

lightseagreenhsl(177deg 70% 41%),因此变换后的hsl(357deg 70% 41%)

color-mix()

color-mix()可以在给定的色彩空间内将两个颜色混合成一个。

它接收3个参数,第一个参数为指定的插值方法,第二个和第三个参数为需要混合的颜色值。

color-mix(in lch, purple 50%, plum 50%)
color-mix(in lch, purple 50%, plum)

color-contrast()

color-contrast() 用来查找颜色列表中与给定的颜色(一般为背景色)相比较,对比度最高的颜色并将其输出。

在语法上,通过关键字vs来区分需要进行对比的基础颜色与颜色列表,如果有目标对比度阈值设置,则通过关键字to与颜色列表进行分隔。(目标对比度阈值用来控制对比值的最小范围,如果存在,会选取第一个超出该阈值的颜色输出,即使它不是列表中对比度最高的那个。)

在计算对比度时,会把所有的颜色都转换到CIE XYZ色彩空间。然后通过以下公式来计算最终的对比度:

contrast = (Yl + 0.05) / (Yd + 0.05),其中Yl为列表中颜色的明度,Yd为基础色的明度

举例:

color-contrast(wheat vs tan, sienna, #d2691e, darkgreen, maroon to AA-large)

上述代码将wheattansienna#d2691edarkgreenmaroon进行对比度的比较,输出第一个超出AA-large(常量3)的颜色。

具体的比较方法如下:

wheat (#f5deb3), the background, has relative luminance 0.749
tan (#d2b48c) has relative luminance 0.482 and contrast ratio 1.501
sienna (#a0522d) has relative luminance 0.137 and contrast ratio 4.273
#d2691e has relative luminance 0.305 and contrast ratio 2.249
darkgreen (#006400) has relative luminance 0.091 and contrast ratio 5.662

通过计算可以看出,darkgreen是对比度最高的颜色,但是我们有to AA-large的限制,所以会输出sienna,因为sienna是第一个超出AA-large(常量3)的。

四、伪类选择器:has() 

:has()选择器也可以叫做父类选择器,它接受一个选择器组作为参数。有了它,我们可以给有匹配子元素的父类应用一些样式。例如:

a:has(span) // 只会匹配包含 span 子元素的 a 元素:

使用chrome浏览器,需要手动在chrome://flags页面开启Experimental Web Platform features设置。

五、accent-color

accent-color属性可以在不改变浏览器默认表单组件基本样式的前提下重置表单组件的颜色。目前支持的HTML元素有:

  • <input type=”checkbox”>
  • <input type=”radio”>
  • <input type=”range”>
  • <progress>

 六、媒体查询(Media Query Ranges)

媒体查询不是一个新概念,这次在语法上进行了优化。原来通过max-widthmin-width来实现的现在可以通过数学运算符>=<=来实现。相比与原来的写法,新的语法更容易理解一些。比如要实现750px以下屏幕的样式,原来需要应用@media (max-width: 750px),现在可以直接写成@media (width <= 750px)

同样,数学运算符的写法也适用于上面介绍的容器查询@container中。

// 原写法
@media (max-width: 750px) {
	…
}
@media (min-width: 750px) { 
        … 
}
@media (min-width: 375px) and (max-width: 750px) { 
        … 
}

// 新写法
@media (width <= 750px) {
	…
}
@media (width >= 750px) { 
        …
}
@media (375px <= width <= 750px) { 
        …
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue2的动画和过渡效果

文章目录过渡 & 动画Transition 组件基于 CSS 的过渡效果CSS 过渡类名 class为过渡效果命名CSS 过渡 transition实例1&#xff1a;实例2&#xff1a;CSS 动画自定义过渡的类名同时使用 transition 和 animation深层级过渡与显式过渡时长性能考量JavaScript 动画可复用过渡效…

STM32 HAL库硬I2C的TOF050C模块

前言最近在倒腾毕业设计&#xff0c;需要用到TOF050C&#xff0c;但是现有的案例都是软IIC&#xff0c;并且还是基于STM32F103的&#xff0c;笔者用的STM32F767&#xff0c;没有GPIO->CRH寄存器。问题来了&#xff0c;如果我每次都要去看寄存器手册属实费时间&#xff0c;这…

案例08-让软件的使用者成为软件的设计者

一&#xff1a;背景介绍 对于需求的开发每天可能都会有上线的情况&#xff0c;为了防止每次上线拉取代码或者修改配置而引发的冲突以及发生了冲突应该找谁一起确定一下代码留下那一部分的情况。所以在开发的群中会有一个表格来记录每个需求上线修改的环境、是否修改数据库、是否…

【论文阅读】Research on video adversarial attack with long living cycle

论文链接&#xff1a;添加链接描述 Method OPTIMIZATION PROBLEM DESCRIPTION XXX是浮点数域中的对抗视频示例&#xff0c;XcX_cXc​表示encoded的视频对抗示例。设EXˆ−XE Xˆ−XEXˆ−X表示在对抗中增加的扰动&#xff0c;EcXc−XE_c Xc − XEc​Xc−X表示视频压缩编码损…

【线性筛+DP】最大和

看错题了&#xff0c;呃呃&#xff0c;其实就是个简单DP最大和 - 蓝桥云课 (lanqiao.cn)题意&#xff1a;思路&#xff1a;设dp[i]为以1为终点的最大和&#xff0c;然后枚举状态和决策就行了主要是线性筛的应用&#xff0c;它可以预处理出一个数的最小质因子是多少Code&#xf…

如何用BurpSuite抓取手机数据包

文章目录前言准备工具Burp Suite物理机或虚拟机(移动设备)手机抓包网络环境开启burp并设置代理手机配置代理安装Burp证书开始抓包踩坑后记前言 最近挖了一波src&#xff0c;挖来挖去发现有很多公众号或者app没有测试&#xff0c;这就需要Burp能够抓取手机的数据包了&#xff0…

九州云出席全球人工智能开发者先锋大会,圆桌论道开源未来

2月25日-26日&#xff0c;2023年全球人工智能开发者先锋大会&#xff08;GAIDC&#xff09;在临港成功召开。本届盛会以“向光而行的开发者”为主题&#xff0c;汇集政府职能部门领导、国内外知名专家学者、具有国际影响力的开源创业者&#xff0c;聚焦前瞻探索、开源开放、人才…

Linux gcc/g++编译链接头文件和库(动态库.so 和 静态库.a)

最近在学习log4cpp库时&#xff0c;使用g去编译&#xff0c;却发现自己不会链接...&#xff0c;这哪能行&#xff0c;于是网上钻研&#xff0c;终于解决&#xff0c;现在记录下来分享给遇到同样问题的人。 gcc和g类似&#xff0c;这里就以g为例&#xff01; 刚好用到的log4cpp…

测开:vue入门(1)

目录 一、背景 二、介绍 三、创建项目 3.1 创建vue项目 方式二&#xff1a;直接在html页面中&#xff0c;引入vue 3.2 直接在html页面中&#xff0c;引入vue 3.2.1 引入在线的vue&#xff08;方式一&#xff09; 3.2.2 将vue 下载到本地&#xff08;方式二&#xff09; …

代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小子数组、59.螺旋矩阵II

977 有序数组的平方题目链接&#xff1a;977 有序数组的平方介绍给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。思路看到题目的第一反应&#xff0c;首先负数的平方跟正数的平方是相同的&…

Git系列:常见指令辨析

Git系列&#xff1a;常见指令辨析指令辨析工作区、暂存区、版本库傻傻分不清楚&#xff1f;主干和分支的关系是什么&#xff1f;git fetch/merge/pull辨析日志查看时&#xff0c;git log与git reflog的区别是&#xff1f;git diff和status的区别是&#xff1f;相关资料本文小结…

麒麟系统安全管理工具kysec机制详解

DAC访问控制 Linux下有多种权限控制的机制,常见的有:DAC(Discretionary Access Control)自主式权限控制和MAC(Mandatory Access Control)强制访问控制。 Linux上传统的访问控制标准是自主访问控制Discretionary Access Control(DAC)。在这种形式下,一个软件或守护进程以…

【MyBatis】源码学习 05 - 关于 xml 文件解析的分析

文章目录前言参考目录学习笔记1、章节目录概览2、14.3&#xff1a;SqlSourceBuilder 类与 StaticSqlSource 类3、14.4.2&#xff1a;ResultMapResolver 类3.1、测试代码说明3.2、结果集 userMap 解析流程3.3、结果集 getGirl 解析流程3.4、鉴别器 discriminator 解析流程4、14.…

汽车电子CAN协议上位机软件的设计实现

先不说汽车电子,通常上位机软件如何实现呢?作为控制嵌入式设备的PC端软件,主要功能就是配置和读取嵌入式设备基于特定接口的交互信息,所以首先需要控制一个通讯设备作为中间的通讯媒介。比如sscom5.13.1就可以作为上位机软件工具,它需要一个具有usb转UART通讯的接口设备或…

C#中,Elasticsearch.Net判断空字符串

之前有个业务需求&#xff0c;由于最开始存储到es里的&#xff0c;是默认空字符串&#xff0c;后面程序取数据时&#xff0c;发现需要取空字符串的数据时&#xff0c;不好取出来。 字符串的字段如图&#xff1a; 实际数据如图&#xff1a; 用的是C#语言&#xff0c;使用的是E…

【算法笔记】递归与回溯

递归与回溯 To Iterate is Human, to Recurse, Divine. —L. Peter Deutsch 人理解迭代&#xff0c;神理解递归。 —L. Peter Deutsch 1.什么是递归呢 递归形象描述&#xff1a; 你打开面前这扇门&#xff0c;看到屋里面还有一扇门。 你走过去&#xff0c;发现手中的钥匙还可以…

【Spark分布式内存计算框架——Spark Streaming】11. 应用案例:百度搜索风云榜(下)实时窗口统计

5.5 实时窗口统计 SparkStreaming中提供一些列窗口函数&#xff0c;方便对窗口数据进行分析&#xff0c;文档&#xff1a; http://spark.apache.org/docs/2.4.5/streaming-programming-guide.html#window-operations 在实际项目中&#xff0c;很多时候需求&#xff1a;每隔一…

数智未来,AI赋能——第四届OpenI/O 启智开发者大会昇腾人工智能应用专场圆满举行!

为提升启智社区与鹏城实验室在人工智能开源领域的影响力&#xff0c;促进社区成员与开源生态圈伙伴的合作。2月25日上午&#xff0c;第四届OpenI/O 启智开发者大会昇腾人工智能应用专场分论坛在深圳人才研修院举办&#xff0c;进一步促进与发挥企业间资源共通的优势&#xff0c…

【ROS2知识】关于colcon编译和ament指定

一、说明 这里说说编译和包生成的操作要点&#xff0c;以python包为例。对于初学者来说&#xff0c;colcon和ament需要概念上搞清楚&#xff0c;与此同时&#xff0c;工作空间、包、节点在一个工程中需要熟练掌握。本文以humble版的ROS2&#xff0c;进行python编程的实现。 二、…

【408之计算机组成原理】计算机系统概述

目录前言一、计算机的发展历程1. 计算机发展的四代变化2. 计算机元件的更新换代3. 计算机软件的发展二、计算机系统层次结构1. 计算机系统的组成2. 冯诺依曼体系结构3. 计算机的功能部件1. 输入设备2. 输出设备3. 存储器4. 运算器5. 控制器三、 分析计算机各个部件在执行代码中…