CSS – :has parent selector, @container container query, transform replacement, subgrid (2022 期待新功能)
前言
CSS 一直有一些老问题没有被解决. 2022 视乎看见了曙光.
参考
4 Exciting New CSS Features in 2022
:has()
参考:
YouTube – How to use CSS :has and :not - Future CSS!
顾名思义就是拥有的意思
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
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 期待新功能)的更多相关文章
- [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 ...
- css中attribute selector及pseudo class
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference#Selectors 在css3规范中,定义了以下几种类型的selector: Ba ...
- CSS动画:animation、transition、transform、translate
https://blog.csdn.net/px01ih8/article/details/80780470 一.区分容易混淆的几个属性和值 先区分一下css中的几个属性:animation(动画). ...
- CSS: Multiple Attribute Selector [name="value"][name2="value2"]
this.document.querySelectorAll('div[id*="dayselector"][class*="x-autocontainer-innerC ...
- 【7】使用css/js/html模板来实现一个注册、登录和管理的功能
分支:auth static添加文件 css文件夹: app.css 自定义css样式[*] bootstrap.min.cs bootstrap样式 compomemts文件夹: 插件用 ...
- 博客主题皮肤探索-添加新功能和fiddler的css/js替换
还有前言 使用了主题之后,发现还差了一点功能.最新评论没有了,导致读者回复需要一点时间去找到底回复了哪条博客.于是就有了添加功能的想法. 如何调试CSS/JS 打开f12,可以看见加载的js资源都是混 ...
- CSS 奇思妙想 | 使用 resize 实现强大的图片拖拽切换预览功能
本文将介绍一个非常有意思的功能,使用纯 CSS 利用 resize 实现强大的图片切换预览功能.类似于这样: 思路 首先,要实现这样一个效果如果不要求可以拖拽,其实有非常多的办法. 将两张图片叠加在一 ...
- 微信小程序 — 速学速查笔记
1. 配置 配置全解析 project.config.json ( 项目配置文件 ) { // 文件描述 "description": "项目配置文件", // ...
- No.3 - CSS transition 和 CSS transform 配合制作动画
课程概述 作业提交截止时间:09-01 任务目的 深度理解掌握 transition-timing-function 以及它的意义 学会配合使用 CSS transform 和CSS transiti ...
- CSS transform: scale()
前言 transform属性允许你旋转,缩放,倾斜或平移给定元素.其中scale(x, y)就是实现元素缩放的属性值. scale(x, y)的 x 乘以原本元素的 x:y 乘以原本的元素 y,就可以 ...
随机推荐
- IstioCon 回顾 | 网易数帆的 Istio 推送性能优化经验
在 IstioCon2022 上,网易数帆资深架构师方志恒从企业生产落地实践的视角分享了多年 Istio 实践经验,介绍了 Istio 数据模型,xDS 和 Istio 推送的关系,网易数帆遇到的性能 ...
- Mysql实现主从复制(一主双从)
一.环境介绍 LNMP(centos7,mysql5.6) vmware workstation pro配置了3个虚拟机,均安装了LNMP环境: master: 192.168.0.105 slav ...
- JavaScript小面试~数组相关的方法和运用(学习笔记)
1,稀疏数组 稀疏数组是指数组中的某个下标未给出值或某个下标的值被删除.例如: let arrayOne=['xiaozi',,12,,true,23] let arrayTwo=[1,2,3,3,4 ...
- vue进阶一~数据响应式,数据响应到视图层,手写v-model,订阅发布者模式,
1,数据响应式 当数据发生改变的时候,我们立即知道数据发生改变,并做出相关的操作:发送请求,打印文字,操作DOM等. 1.1,vue实现数据响应的原理 vue中使用了两种模式来实现数据响应式,分别是v ...
- 《Programming from the Ground Up》阅读笔记:p75-p87
<Programming from the Ground Up>学习第4天,p75-p87总结,总计13页. 一.技术总结 1.persistent data p75, Data whic ...
- c++ 快速复习第一部份
去年有事无事学过一c++ ,,由于工作用不上,学来没有用,所以学得乱七八的,最近需要复习一下,因为最近想学习一下硬 件相关 第一 引用头文件和自定义头 #include <iostream& ...
- 七天.NET 8操作SQLite入门到实战 - 第七天Blazor学生管理页面编写和接口对接(3)
前言 本章节我们的主要内容是完善Blazor学生管理页面的编写和接口对接. 七天.NET 8 操作 SQLite 入门到实战详细教程 第一天 SQLite 简介 第二天 在 Windows 上配置 S ...
- Jmeter计数器
计数器(Counter)配置起点.最大值和增量,计数器将从开始循环到最大值,然后从头开始,继续这样直到测试结束 1.计数器 是可以根据线程计数的.组件路径[线程组->配置元件->计数器] ...
- 使用AWS存储数据并下载遥感影像Landsat为例
使用AWS存储数据并下载遥感影像Landsat为例 一.步骤: 创建s3存储桶(具体创建账号方式请问"度娘",当时忘记录了) 创建用户--配置策略 用该用户创建访问密钥--记录 访 ...
- Jax框架的static与Traced Operations —— Static vs Traced Operations
相关: Jax框架的jit编译是否可以使用循环结构,如果使用循环结构需要注意什么 Jax的static和Traced都是指jit编译的函数内的对象的属性的,jit装饰的函数其输入参数和输出参数都是Tr ...