当前位置:首页 > 科技  > 软件

让CSS官方后悔的一些决定

来源: 责编: 时间:2023-10-13 14:38:03 202观看
导读CSS工作组在其官方WIKI[1]总结了这些年CSS在设计上犯的46条失误。这些错误大体可以概括为5类:属性key、value设计失误布局、对齐上的设计失误颜色相关的失误选择器设计失误本文会选一些「我觉得有意思」的失误来讲讲。

5zq28资讯网——每日最新资讯28at.com

CSS工作组在其官方WIKI[1]总结了这些年CSS在设计上犯的46条失误。这些错误大体可以概括为5类:5zq28资讯网——每日最新资讯28at.com

  • 属性key、value设计失误
  • 布局、对齐上的设计失误
  • 颜色相关的失误
  • 选择器设计失误

本文会选一些「我觉得有意思」的失误来讲讲。完整的失误列表见上述官方WIKI。5zq28资讯网——每日最新资讯28at.com

!important语法

!important语法用来增加样式的权重,毕竟,感叹号通常表达「强调」的意思。但在编程语言中,!通常是「取反」的意思,比如:5zq28资讯网——每日最新资讯28at.com

const isValid = true;!isValid // false

初次接触CSS的工程师很可能会觉得!important是「不important」的意思,这与该语法实际想表达的意思完全相反。5zq28资讯网——每日最新资讯28at.com

所以,工作组认为!important是个糟糕的语法。5zq28资讯网——每日最新资讯28at.com

z-index语法

z-index属性用于设置定位元素及其后代元素或flex元素的Z轴层叠顺序,z-index较大的元素会叠在较小元素的上面。5zq28资讯网——每日最新资讯28at.com

在编程语言中,index是「索引」的意思,并没有表达出「层叠」的意思。所以,工作组认为叫z-order或干脆叫depth(深度)会更好。5zq28资讯网——每日最新资讯28at.com

同时,他们也认为,这个属性应该对所有元素有效(而不是只对定位元素及其后代,以及flex元素有效)。5zq28资讯网——每日最新资讯28at.com

单个元素margin的塌陷

「margin坍塌」是CSS中的基础特性,假设有2个上下重叠的块级元素:5zq28资讯网——每日最新资讯28at.com

  • 上面的元素margin-bottom为20px
  • 下面元素margin-top为30px

按照直觉来看,他们之间的margin应该是50px(20px + 30px),但是由于「margin坍塌」,他们之间的margin为其中较大的值(30px)。5zq28资讯网——每日最新资讯28at.com

5zq28资讯网——每日最新资讯28at.com

上面是2个块级元素之间的「margin坍塌」。5zq28资讯网——每日最新资讯28at.com

对于单个块级元素,也存在「margin坍塌」 —— 如果一个元素内部没有内容,或者它的内容被清除(clear)了,那么这个元素的上下margin会发生塌陷。5zq28资讯网——每日最新资讯28at.com

这意味着,即使你为元素的顶部和底部都设置了margin,但实际上他们会合并成一个(值等于两者中的最大者,而不是它们的总和)。5zq28资讯网——每日最新资讯28at.com

这种塌陷行为可能会导致一些让人懵逼的布局问题。比如,你试图通过增加一个元素的margin-bottom来增加它下面的空间,但不起作用,可能就是因为增加的 margin塌陷掉了。5zq28资讯网——每日最新资讯28at.com

所以,CSS工作组认为这不是个好设计。5zq28资讯网——每日最新资讯28at.com

rgb与rgba

rgba与hsla都是设置颜色的属性,相比于rgb与hsl,他们还可以设置alpha值(透明度)。5zq28资讯网——每日最新资讯28at.com

所以,为啥不直接让rgb与hsl能够接收第四个参数(alpha值)呢?工作组很费解 自己当初咋想的。5zq28资讯网——每日最新资讯28at.com

border-radius

border-radius直译为「边界半径」,当初应该取名叫corner-radius(拐角半径)。5zq28资讯网——每日最新资讯28at.com

毕竟,这就是设置元素拐角处圆角的半径的啊~~5zq28资讯网——每日最新资讯28at.com

绝对定位的替换元素

所谓「替换元素」,是指「外观和尺寸由外部资源决定」的元素,比如:5zq28资讯网——每日最新资讯28at.com

  • img
  • object(嵌入的对象,如Flash动画)
  • video
  • iframe

工作组认为,当「替换元素」被绝对定位时,偏移属性不应该改变元素的位置,而应该改变尺寸。5zq28资讯网——每日最新资讯28at.com

比如,当对绝对定位的img设置left: 20px; right: 20px;,那么他应该被拉伸到「从左侧20px到右侧20px」的长度,而不是移动到距离左侧20px的位置。5zq28资讯网——每日最新资讯28at.com

这个规则对于响应式布局是非常有用的,因为它允许元素自动调整其大小以适应不同的视口宽度。5zq28资讯网——每日最新资讯28at.com

总结

上面只是挑了几个我觉得有意思的失误来聊。除此之外,还有很多是使用习惯上的设计失误,个人认为比较主观。比如:5zq28资讯网——每日最新资讯28at.com

  • 子孙选择器应该使用»符号,即:
// 当前的子孙选择器div p {  color: green;}// 期望的子孙选择器div » p {  color: green;}
  • 兄弟选择器应该用++符号,即:
// 当前的兄弟选择器div ~ p {  color: green;}// 期望的兄弟选择器div ++ p {  color: green;}

不知道上述改动,你能接受么?5zq28资讯网——每日最新资讯28at.com

参考资料

[1]官方WIKI:https://wiki.csswg.org/ideas/mistakes。5zq28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-13360-0.html让CSS官方后悔的一些决定

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 超越传统线程:探索Java Loom协程(纤程/虚拟线程)的无限潜力

下一篇: 去哪儿网架构演进之路:微服务的尽头原来是DDD……

标签:
  • 热门焦点
  • 十个简单但很有用的Python装饰器

    十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新
  • 虚拟键盘 API 的妙用

    虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • JVM优化:实战OutOfMemoryError异常

    JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 苹果140W USB-C充电器:采用氮化镓技术

    苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
Top