范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

CSS的未来CascadeLayers(CSSlayer)

  最近在 Weekly 邮件推送中查阅到这样的一条信息:
  Chromium 团队宣布他们将随 Chromium 99(预计在明年 3 月发布)一起发布CSS Cascade Layers
  会发现这条信息里面出现了一个CSS的新名词 CSS Cascade Layers ,出于好奇以及对新知识的渴望(说得我自己都信了,哈哈),于是查阅起CSS Cascade Layers 的相关资料,试图搞懂它。
  前置知识 at-rule规则
  at-rule 规则, CSS Conditional Rules Module Level 3 新增的规则,是一条语句,它为CSS提供了执行或如何执行的指令,常见的at-rule 规则有:@import,允许用户从其他样式表导入样式规则
  @font-face,允许我们引用自定义的字体
  @keyframes,声明一个动画
  @media,是条件CSS中的一种,其条件是一个媒体查询
  @supports,测试用户代理是否支持CSS属性/值对
  @viewport,用来控制移动设备上的viewport设置Cascading and Inheritance Level
  级联(层叠)与继承 经过多年的发展迭代,目前已有多个版本(CSS2.2、Level3、Level4 和 Level5 )
  何为级联(层叠)?
  层叠本质就是定义了如何合并来自 多个源 的属性值的算法,简单来说,CSS规则的顺序很重要。当两条同级别的规则应用到一个元素的时候,写在后面的就是实际使用的规则。 h1 {      color: red;  } h1 {      color: blue;  }
  两条规则 优先级相同 ,所以顺序在最后的生效, h1 是color:blue "胜出",显示蓝色。
  只有CSS声明,就是属性名值对,会参与层叠计算。这表示包含CSS声明以外实体的@规则不参与层叠计算,如包含描述符的@font-face,@规则( at-rule规则 )是做为一个整体参与层叠计算。
  css属性一般来自于哪几个源?
  1、用户代理样式表:浏览器的基本的样式表,用于给所有网页设置默认样式。
  2、用户样式表:网页的作者可以定义文档的样式。大多数情况下此类型样式表会定义网站的主题。
  3、浏览器的用户使用自定义样式表定制使用体验。
  层叠(级联)算法如何过滤来自不同源的css规则?
  相互冲突的声明按以下顺序适用,后一种声明将覆盖前一种声明:
  1、用户代理样式表中的声明(浏览器的默认样式)。
  2、用户样式表中的常规声明(用户设置的自定义样式,就如同我们的reset.css)。
  3、作者样式表中的常规声明(开发人员设置的样式)。
  4、作者样式表中的!important声明
  5、用户样式表中的!important 声明
  过滤来自不同源的css规则后,确定同源优先级高低,决定谁"优胜"   !important > 内联style > #id > .class > 标签
  了解级联算法有助于帮助我们理解浏览器是如何解决样式规则冲突,也就是浏览器决定哪个样式规则运用到元素上,更多相关 css级联 的了解:
  何为继承?
  当元素的一个继承属性没有指定值时,则取父元素的同属性的计算值 。只有文档根元素取该属性定义的默认值,类似的属性有 color 、font-size 等 。
  CSS是由 Cascading Style Sheets 三个词的首字母缩写,很多人将其称为层叠样式表或者级联样式表 .@layer
  CSS Cascade Layers ,也叫做CSS级联层 ,是Cascading and Inheritance Level5  规范中新增了一个新的 CSS 特性,对应的CSS属性写法@layer ,即一个新的 @ 规则,也就是大家所说的at-rule  规则。
  为啥会出现@layer?
  通过上面我们对 级联 介绍,我们已经看到了顺序对于层叠的重要性,同权重的css属性后者会"优胜"前者,权重不同会根据CSS声明来源和优先级算法来判断谁"优胜"。!important 的CSS规则自动将它跳到层叠算法的前面,能够覆盖普通规则的层叠。
  也就是说我们一般会使用选择器权重和顺序作为控制级联的方法,但是这样却会时常碰到:
  使用较高权重的选择器来防止你的代码被后面的代码(或别人的代码)覆盖。但这也会引起另一个不良的现象,可能会在代码中新增很多带有 !important 的样式规则,这本身就会引起更多的问题,比如  !important  在 CSS 样式表中随处可见,需要覆盖的时候难以被覆盖 。
  使用较低权重的选择器又很容易被后面的代码(或别人的代码)覆盖。比如你在引入第三方代码库或组件时,自己的代码可能被覆盖。
  这两个现象也是编写CSS代码,特别是在一个大型项目或多人协作的项目中常出现。也给很多CSS开发者带来很多困扰。
  虽然社区有很多第三方方案,如 CSS-in-JS 、CSS Modules  和 CSS Scoped 等来协助解决级联所带来的问题,但由于源码顺序(打包产物)仍然起着决定性的作用,顺序带来的覆盖和冲突依旧未真正的解决,而且选择器权重仍然比层的顺序(源码顺序)更重要。
  这样的背景促进了 @layer 的出现,要真正的解决级联带来的这些问题。
  @layer 的出现,也要求我们对以往css级联 有个新的了解,
  可以看出 CSS的级联层 一般位于"Style 属性"(Style Attribute)和 CSS 选择器权重(Specificity)之间。
  使用 CSS级联层 ,可以通过@layer  at-rule将 CSS 分成多个层。
  与 CSS属性来源 在用户样式表和作者样式表风格之间提供权衡的方式相同,Cascade Layers 提供了一种结构化的方式来组织和权衡单个 来源 内的关注点
  如何使用 创建级联层
  级联层可以通过多种方式声明:
  1、使用@layer 块规则,并立即为其分配样式: @layer reset {   * { /* Poor Man"s Reset */     margin: 0;     padding: 0;   } }
  2、使用规则@layer 语句,没有指定任何样式: @layer reset;
  3、将@import 与layer关键字或layer()函数一起使用 @import(reset.css) layer(reset);
  以上每一个都创建了一个名为 的级联层reset。 管理级联层
  级联层会按它们声明的顺序排序。
  在下面的例子中,我们建立四个级联层: reset,base,theme,和utilities 。@layer reset { /* 创建级联层 "reset" */   * {     margin: 0;     padding: 0;   } }  @layer base { /* 创建级联层 "base" */   … }  @layer theme { /* 创建级联层 "theme" */   … }  @layer utilities { /* 创建级联层 "utilities" */   … }
  按照它们的声明顺序,层顺序变为:
  reset
  base
  theme
  utilities
  重复使用级联层名称时,样式将附加到现有级联层。级联层的顺序保持不变,因为只有第一次的出现已经确定顺序: @layer reset { /* 创建第一个级联层 "reset" */   … }  @layer base { /* 创建第二个级联层 "base" */   … }  @layer theme { /* 创建第三个级联层 "theme" */   … }  @layer utilities { /* 创建第四个级联层 "utilities" */   … }  @layer base { /* 会将样式添加至级联层"base" */   … }
  重新使用级联层名称时层顺序保持不变的使@layer 语法变得更加方便和严谨。使用它,可以预先建立图层顺序,然后将所有 CSS 附加到它: @layer reset;     /* 创建第一个级联层 "reset" */ @layer base;      /* 创建第二个级联层 "base" */ @layer theme;     /* 创建第三个级联层"theme" */ @layer utilities; /* 创建第四个级联层 "utilities" */  @layer reset { /* 添加样式至级联层 "reset" */   … }  @layer theme { /* 添加样式至级联层  "theme" */   … }  @layer base { /* 添加样式至级联层  "base" */   … }  @layer theme { /* 添加样式至级联层  "theme" */   … }
  当然你可以用更短的语法来声明级联层, @layer reset, base, theme, utilities;
  从上面可以看出,多个级联层被声明时,最后一个级联层的声明会获胜。像这样, @import(reset.css) layer(reset); /* 第一个级联层 */  @layer base { /* 第二个级联层 */   form input {     font-size: inherit;    } }  @layer theme { /*第三个级联层 */   input {     font-size: 2rem;   } }
  按以往CSS级联来进行分析的话, form input (多层级)的优先级会大于input ,但是由于级联层 所起的作用,@layer theme 的input 会取胜。级联层嵌套
  级联层 支持嵌套使用,如下:@layer base { /* 第一个级联层*/   p { max-width: 70ch; } }  @layer framework { /* 第二个级联层 */   @layer base { /* 第二级联层的嵌套子级联层1 */     p { margin-block: 0.75em; }   }    @layer theme { /* 第二级联层的嵌套子级联层2 */     p { color: #222; }   } }
  在这个例子中有两个级联外层:
  base
  framework
  该framework层本身也包含两层:
  base
  theme
  就像一棵树,像这样,
  如果要将样式附加到嵌套级联层,需要使用以下全名来引用它, @layer framework {   @layer default {      p { margin-block: 0.75em; }   }    @layer theme {     p { color: #222; }   } }  @layer framework.theme {   /* 这些样式会被添加到@layer framework层里面的theme层 */   blockquote { color: rebeccapurple; } } @media与@layer@media (min-width: 30em) {   @layer layout {     .title { font-size: x-large; }   } }  @media (prefers-color-scheme: dark) {   @layer theme {     .title { color: white; }   } }
  如果第一个 @media (min-width: 30em) 匹配(基于视口尺寸),则layout级联层层将在图层顺序中排在第一位。如果只有@media (prefers-color-scheme: dark) 匹配,theme则将是第一层。
  如果两者匹配,则图层顺序将为layout, theme。如果没有匹配,则不定义层。 结语
  随着  Cascade Layers  的出现,我们的开发人员将拥有更多的工具来控制 Cascade 。Cascade Layers  的真正力量来自它在 Cascade 中的独特位置:Style 属性(Style Attribute) 和 CSS 选择器权重(Specificity) 之间。因此,我们不需要担心其他层中使用的 CSS 的选择器特异性,也不需要担心我们将 CSS 加载到这些层中的顺序.
  了解到这里,是不是觉得 @layer 相当地cool,迫不及待地想去使用了,我们看一下caniuse  @layer 的兼容情况,
  很遗憾,支持程度惨不忍睹,想真正使用可能还要再等等,对于明年三月份  Chromium 99 ,发布我们拭目以待。
  当然现在如果想尝鲜,对于社区也有给出一些办法,
  大家也可以试一试,感谢阅读!

15分钟充满电量三星120Hz屏,12GB256GB旗舰机跌至2829元vivo手机的品质在国内还是颇受消费者认可的,华为遭到断货,没有5G基带可用,销量下滑就十分严重了,相信很多网友都想支持鸿蒙系统,但是又不想入手4G手机,因此也是无奈的,因为华为没新零售为什么是大势所趋最近几年,实体店受到电商的影响越来越难做,特别是2020年的疫情爆发以来,让很多连锁实体店都倒闭了,对于电商和疫情的冲击,新零售模式降临,接下来了解一下什么是新零售模式一新零售是大小区监控摄像头安装的数量不足和布局不合理,业主有权要求物业整改吗?小区监控设施和摄像头属于业主的共有设施设备。小区摄像头的数量和安装布局,是小区在规划设计时就已经确定,经过专业企业设计和施工的。属于小区里业主共有共有的设施设备。物业企业既不是投资美中芯片行业竞争战略前景展望芯片只是俗称的说法,主要包括四大领域,集成电路功率半导体(分立器件)传感器和光电子器件。其中,集成电路占芯片80以上,是核心。2021年,中国大陆进口集成电路4100亿美元,增长2电视是谁发明的?电视是谁发明的?大伙儿呗。这不光是个玩笑话,也是事实。和无线电电话录音机之类的事物不太一样,电视发明是有个传承接力不断完善的过程的。我们这里就一些大的节点来梳理一下吧。德国人尼普科怎样才能获取电信4G信号?应邀回答本行业问题。4G是属于目前4G网络的升级版,想要取得电信的4G信号,需要手机和网络侧同时支持。4G是目前4G(LTE)网络的升级版,这个很大程度上是代表了CA(载波聚合)。如何评价华为海思麒麟980?麒麟980可以说是近年海思麒麟的巅峰之作虽然此前华为凭着Mate系列实现了品牌崛起,但是麒麟9系旗舰芯片经常被用户诟病性能不如骁龙8系旗舰芯片。2016年的麒麟960虽然有心尝试大当你什么都不会的时候,你想创业该怎么做?当你什么都不会时,来到一个城市举目无亲,想找份工作开始创业在当今社会其实也是很简单的一个事。首先是生存问题,必须先解决衣食住行。每个城市都会有很多的职业可供选择,比如,外卖,餐馆打荣耀8X手机鸿蒙HarmonyOS2。0。0。215更新IT之家12月28日消息,近期,荣耀8X手机开始推送鸿蒙HarmonyOS2。0。0。215更新,下载大小为225MB。本次更新优化了联系人的使用体验,并修复了部分场景无法设置来电高聚光纤为全光网发展扬长补短近日,年产8亿米超高速高聚光纤(简称高聚光纤)及设备研发生产基地项目正式落地浙江省金华市武义县,助力当地打造百亿级新材料产业集群,满足信息化建设需求。而选址武义县的原因,则因为该地决战时刻到了!胜利的天平逐渐偏向司马南,联想将无力回天司马南质疑联想的问题,在经历了一个多月之后,事情不仅没有随着时间的推移而逐渐消散,反而是愈演愈烈,民众对这件事情的高度关注,再加上一些大V的逐渐入局,真相似乎更是显得扑朔迷离,而且
纯水净水随意切换,云米新品净水器SuperY1000G如何做到6年免换芯后疫情时代,越来越多的人开始注重饮水卫生问题,在家里都安装了家用净水器。巨大的市场需求不断促进家用净水器市场的发展,产品迭代升级加速。凭借博主多年从业经验,在众多净水器产品中,反渗为何尼康索尼微单画质均超过佳能,最终却都败给了佳能?摄影器材发展到今天,微单已经取代单反成为主流,目前微单主要三大品牌就是索尼尼康和佳能,被誉为微单领域的三剑客。在五六年之前,索尼是微单领域的绝对老大,索尼大法好索尼黑科技的说法就是2025年江苏预计79万吨动力电池退役,如何念好电池回收生意经?江苏省工信厅最新数据显示,全省新能源汽车保有量已超46。5万辆,动力电池容量达35GWh,约重30万吨,到2025年,全省退役电池数量预计将达到一个小高潮79万吨,到2030年还将蓝思科技罕见披露第一大客户去年对苹果销售额达301亿元,占比升至6621世纪经济报道记者张赛男上海报道4月22日晚间,蓝思科技(300433。SZ)发布了2021年年报。据年报显示,2021年公司实现营业收入452。68亿元,同比增长22。55,归华为有效全球专利族数量第一近日,中国信通院发布全球5G专利活动报告(2022年)。报告基于ETSI专利数据库中的全部5G声明专利及其同族扩展专利,从专利声明量多国授权专利量技术领域等维度进行了统计分析,展示Win11硬伤没法忍!一招将Win11界面改回Win10相较于Win10,Win11虽然进步很多,但同样也带来了很多反人类设计。就拿那个开始菜单来说,取消了磁贴并没有带来想象中的效率提升,反而更让人摸不着头脑。此外还有任务栏右键菜单秒钟OPPO天玑120060W闪充屏下指纹,跌至1599元,好评度高达97OPPO手机的好评度一直是不错的,哪怕被很多网友吐槽高价低配,其品质和优化相当出色,为了做好ColorOS,特地高价挖走了魅族Flyme总设计师,大家也知道,魅族当年将联发科打磨很知识付费怎能沦为学术生意来源钱江晚报知网又一次陷入舆论风波据中科院几位内部人士向媒体证实,网传的知网续订费用和停用知网访问一事属实,中科院各大所正积极应对因停订知网带来的影响。不过,知网方面也回应媒体称,SpaceX星链拿到首单飞机WiFi服务,年内启动鞭牛士4月23日消息,近日,飞机服务商JSX在社交媒体上表示,JSX很荣幸成为第一家采用SpaceX星链卫星互联网的航空公司,为机上乘客免费提供上网服务,今年晚些时候JSX机上Wi中消协独立站跨境电商费维权成本高难度大文羊城晚报全媒体记者马灿实习生赵鑫娆4月22日,中国消费者协会发布中国消费者权益保护状况年度报告(2021)。报告称,独立站跨境电商(以下简称独立站)业态规避境内监管,消费者维权难如何做好亚马逊第一最基础的,一定一定要熟悉亚马逊平台的规则政策以及他的最新变化,千万不能踩红线!不要在作死的边缘疯狂ob,常在河边走哪有不湿鞋,杜绝封店从遵循平台规则开始。第二一定要摸透亚马逊的