前言

CSS 一直有一些老问题没有被解决. 2022 视乎看见了曙光.

参考

4 Exciting New CSS Features in 2022

:has()

参考:

YouTube – How to use CSS :has and :not - Future CSS!

CSS Parent Selector

顾名思义就是拥有的意思

p:has(.child)   // p 有子孙 .child
p:has(> .child) // p 有孩子 .child
p:has(+ .child) // p 的 next 是 .child

配合 :not(:has(.child)) 表示没有的意思.

支持度挺好的

@container (container query)

参考:

YouTube – How to inspect CSS container queries | DevTools Tips

MDN – CSS Container Queries

media query 只能对应 viewport, 这个局限太大了.

container query 的出现就是让 media query 可以对应任何一个 element

例子说明, 有 2 个 div

CSS Style

.container {
width: 150px;
aspect-ratio: 1 / 1;
border: 1px solid blue;
display: grid;
place-items: center; .box {
width: 100px;
aspect-ratio: 1 / 1;
border: 1px solid red;
}
}

需求, 当 container width > 100px 时, .box 要有 background-color: red

@container

.container {
container-type: inline-size;
container-name: my-container; @container my-container (inline-size > 100px) {
.box {
background-color: red;
}
}
}

它有几个语法

container-type 声明, 这个 selector element 是一个 container. value: inline-size 表示我们关注 width 而已, 因为通常都是 depend on width 的啦

container-name 是声明这个 container 的名字. 这样就不会弄错了.

@container 就是 @media 啦. 紧跟着 container name, 然后圆括弧内就是判断条件. 它的语法比 @media 的 min-width 好太多了, 直接支持 symbol > >= < <=

p.s. inline-size = width, 这个 width 依据 box-sizing 而定, 比如 border-box 的话, padding 不算 width 哦.

支持度还不错,只是 IOS 需要 16.0 才能用,也就是 iPhone 8 或以上 (2017年9月发布的)

No More Transform

参考: YouTube – CSS Transform Is Dead! Use This Instead

从前 rotate, scale, translateX, translateY 都必须定义在 transform 属性内. 这个超级不优化.

往后可以一个一个定义了.

.box {
scale: 2;
translate: 50px 50px;
rotate: 100deg; transform: translate(50px, 50px) rotate(100deg) scale(2); // 相等于
}

支持度不明

Subgrid

TODO...

CSS – :has parent selector, @container container query, transform replacement, subgrid (2022 期待新功能)的更多相关文章

  1. [SCSS] Organize Styles with SCSS Nesting and the Parent Selector

    SCSS nesting can produce DRYer code by targeting child elements without having to write the parent c ...

  2. css中attribute selector及pseudo class

    https://developer.mozilla.org/en-US/docs/Web/CSS/Reference#Selectors 在css3规范中,定义了以下几种类型的selector: Ba ...

  3. CSS动画:animation、transition、transform、translate

    https://blog.csdn.net/px01ih8/article/details/80780470 一.区分容易混淆的几个属性和值 先区分一下css中的几个属性:animation(动画). ...

  4. CSS: Multiple Attribute Selector [name="value"][name2="value2"]

    this.document.querySelectorAll('div[id*="dayselector"][class*="x-autocontainer-innerC ...

  5. 【7】使用css/js/html模板来实现一个注册、登录和管理的功能

    分支:auth static添加文件 css文件夹: app.css    自定义css样式[*] bootstrap.min.cs    bootstrap样式 compomemts文件夹: 插件用 ...

  6. 博客主题皮肤探索-添加新功能和fiddler的css/js替换

    还有前言 使用了主题之后,发现还差了一点功能.最新评论没有了,导致读者回复需要一点时间去找到底回复了哪条博客.于是就有了添加功能的想法. 如何调试CSS/JS 打开f12,可以看见加载的js资源都是混 ...

  7. CSS 奇思妙想 | 使用 resize 实现强大的图片拖拽切换预览功能

    本文将介绍一个非常有意思的功能,使用纯 CSS 利用 resize 实现强大的图片切换预览功能.类似于这样: 思路 首先,要实现这样一个效果如果不要求可以拖拽,其实有非常多的办法. 将两张图片叠加在一 ...

  8. 微信小程序 — 速学速查笔记

    1. 配置 配置全解析 project.config.json ( 项目配置文件 ) { // 文件描述 "description": "项目配置文件", // ...

  9. No.3 - CSS transition 和 CSS transform 配合制作动画

    课程概述 作业提交截止时间:09-01 任务目的 深度理解掌握 transition-timing-function 以及它的意义 学会配合使用 CSS transform 和CSS transiti ...

  10. CSS transform: scale()

    前言 transform属性允许你旋转,缩放,倾斜或平移给定元素.其中scale(x, y)就是实现元素缩放的属性值. scale(x, y)的 x 乘以原本元素的 x:y 乘以原本的元素 y,就可以 ...

随机推荐

  1. Profinet转Modbus模块减轻通讯编程工作量实现Modbus通讯

    巴图自动化PN转Modbus模块(BT-MDPN10)能够实现Profinet协议与Modbus协议之间的转换,使得Profinet协议设备与Modbus协议设备进行连接并能够相互通信. 通过使用巴图 ...

  2. SQL Server 清除一个数据库下所有表数据,保留表结构

    用法:在需要清空数据的数据库创建并执行存储过程,该存储过程并不会影响其他数据库 请小心使用这些脚本,确保在生产环境之前备份您的数据库.️ 存储过程: CREATE PROCEDURE ClearAll ...

  3. Java SE 文件上传和文件下载的底层原理

    1. Java SE 文件上传和文件下载的底层原理 @ 目录 1. Java SE 文件上传和文件下载的底层原理 2. 文件上传 2.1 文件上传应用实例 2.2 文件上传注意事项和细节 3. 文件下 ...

  4. browsermob-proxy-2.1.4启动失败,报错ProxyServerError: The Browsermob-Proxy server process failed to start

    报错信息:ProxyServerError: The Browsermob-Proxy server process failed to start. Check <_io.TextIOWrap ...

  5. adb shell 批处理文件

    adb shell 批处理文件 手机截屏,并把图片传到电脑

  6. 【Java】Properties 配置信息类

    Properties 配置信息类 Properties 是HashTable的子类,该对象用于处理属性文件 由于属性文件的Key.Value都是字符串类型,所以Properties里的Key和Valu ...

  7. 【RabbitMQ】10 深入部分P3 死信队列(交换机)

    1.死信交换机 说是死信队列,是因为RabbitMQ和其他中间件产品不一样 有交换机的概念和这个东西存在,别的产品只有队列一说 DeadLetterExchange 消息成为DeadMessage之后 ...

  8. 【Spring Data JPA】02 快速上手

    完成一个CRUD - 创建工程导入依赖坐标 - 配置Spring的配置文件 - 配置ORM的实体类,绑定映射关系 - 编写一个符合SpringDataJpa的dao接口 Maven依赖坐标 <p ...

  9. 【Vue】04 模块化开发演变

    JS最初的目的是用来做表单验证和动画效果,可以让网页更加生动. 但是使用Ajax,前后端分离,页面承担了更多的事情,JS的代码量暴增,代码管理维护逐渐困难 我们需要将JS代码抽取出来,模块化处理, 但 ...

  10. 人形机器人的AI技术 —— 将一个大问题拆解为若干个小问题

    前文: 人形机器人 -- Figure 01机器人亮相 | OpenAI多模态能力加持 | 与人类流畅对话交互 | 具身智能的GPT-4时刻 所需的AI技术: 人形机器人的软件层面其实有: 视觉模块/ ...