别再用 Display:Contents 了,你知道为什么吗?
下面是正文~~
display: contents 介绍CSS(层叠样式表)中的display: contents是一个相对较新的属性值,它对元素的布局和可视化有特殊的影响。当你对一个元素应用display: contents,这个元素本身就像从DOM(文档对象模型)中消失了一样,而它的所有子元素则会升级到DOM结构中的下一个层级。换句话说,该元素的盒模型将被忽略,它的子元素会取而代之,就像直接插入到父元素中一样。
假设我们有这样一个HTML结构:
【资料图】
Child 1 Child 2
正常情况下,#parent是#child1和#child2的父元素,它们在DOM和布局中有一个明确的层级关系。
现在,如果我们对#parent应用display: contents:
#parent { display: contents;}
在这种情况下,#parent在页面布局中就像是“消失了”一样。它的所有子元素(这里是#child1和#child2)会直接升级到#parent所在的DOM层级。也就是说,在布局和渲染过程中,#child1和#child2将不再被视为#parent的子元素,而是像直接插入到#parent的父元素中一样。
这样做的结果是,任何应用于#parent的布局和样式都不会影响到页面的渲染,但#child1和#child2会像正常元素一样被渲染。
主要用途:
语义改进:能够改进HTML结构,使其更符合语义,但不影响布局和样式。布局优化:在某些复杂的布局场景中,它可以简化DOM结构,提高渲染性能。display: contents 和可访问性的长期问题从字面上看,这个CSS声明改变了其应用到的元素的显示属性。它使元素“消失”,将其子元素提升到DOM中的下一层级。
这种声明在很多方面都可能是有用的。讽刺的是,其中一个用例就是改善你工作的底层语义。然而,这个声明一开始的效果有点过头了。
CSS和可访问性不是每个人都意识到这一点,但某些CSS会影响辅助技术的工作方式。就像烧毁你的房子确实会成功地除去其中可能存在的蜘蛛一样,使用 display: contents 可能会完全消除某些元素被辅助技术识别的关键属性。
简而言之,这会导致按钮不被声明为按钮,表格不被声明和导航为表格,列表也是如此,等等。
换句话说:当人们说“HTML默认是可访问的”时,display: contents 彻底破坏了这个“默认”。这不好。
可访问性从业者注意到了这个问题,并提出了完全合理的修复要求。特别值得一提的是Adrian Roselli的勤勉、有条理和实事求是的文档和报告工作。
修复已经完成,浏览器也已经更新,我们得到了一个快乐的结局。对吗?并不是那么简单。
回归问题在软件开发中,回归可能意味着几件事情。这个词通常用于负面语境,表达更新后的行为不小心恢复到以前,不太理想的工作方式。
对于 display: contents,这意味着每个人的自动或近乎自动更新的浏览器抛弃了非常必要的错误修复,而没有任何警告或通知,就回到了破坏语义HTML与辅助技术交流的基础属性。
这种类型的回归不是一个令人讨厌的 bug,而是破坏了 Web 可访问性的基础方面。
Adrian注意到了这一点。如果你继续阅读我给你链接的部分,他继续注意到这一点。总之,我统计了关于display: contents的行为以不可访问的方式回归了16次的更新。
看问题的角度制作浏览器是一件困难的事情。需要考虑很多、很多不同的事情,那还没考虑到软件的复杂性。
可访问性并不是每个人的首要任务。我可以在这里稍微宽容一些,因为我主要是尝试用我拥有的东西工作,而不是我希望能有的东西。我习惯了应对由于这种优先级而产生的所有小问题、陷阱和杂项。
然而,能够使用Web界面绝非小事。display: contents的问题对使用它的界面的人们的生活质量有非常真实、非常可量化的影响。
我还想让你考虑一下这种打地鼠游戏是如何影响可访问性从业者的。告诉某人他们不能使用一个闪亮的新玩具永远不会受到欢迎。然后告诉他们你可以,但后来又不能了,这会削弱信任和能力的认知。
别用 display: contents现在,我不认为我们这个行业可以自信地使用display: contents。过去的行为是未来行为的良好指标,而走向地狱的道路是由好意铺成的。
我现在认为这个声明是不可预测的。常见的“只需用辅助技术测试其支持情况”的回应在这里也不适用——当前浏览器版本中该声明的期望行为并不能保证在该浏览器的未来版本中持续。
这是一件罕见且令人不安的事情——整个现代Web都是建立在这样的假设之上,即这样的事情不会以这种方式停止工作。这不是互操作性问题,而是由于疏忽造成的伤害。
display: contents的回归给我们提供了一个小小的窗口,让我们看到浏览器制作的某些方面是如何(或不是如何)被优先考虑和测试的。
人们可以发誓说像可访问性和包容性这样的事情是重要的,但当涉及到这个特定的CSS声明时,很明显大多数浏览器制造商是不可信的。
这个声明在实践中的不稳定性代表了一种非常真实、非常严重的风险,即在你无法控制的情况下,可能会在你的网站或Web应用中引入关键的可访问性问题。
关键词:
-
别再用 Display:Contents 了,你知道为什么吗?
2023-09-08 -
防震减灾 共筑平安--安阳市东门小学迎接省级防震减灾科普示范校复审
2023-09-08 -
赛力斯9月1日快速上涨
2023-09-01 -
百济神州(06160)因受限制股份单位获归属发行50.37万股
2023-09-01 -
从千元机皇到4K 小明投影持续推动LCD产品进阶之路
2023-09-01 -
中央气象台9月1日06时继续发布台风红色预警
2023-09-01 -
煮鸡蛋吃多了会怎么样(关于煮鸡蛋吃多了的坏处)
2023-09-01 -
陕西:10月1日起 居民电动车充电桩执行新的分时电价
2023-08-31 -
云南省红河哈尼族彝族自治州绿春县2023-08-31 20:34发布地质灾害黄色预警
2023-08-31 -
彭子晟主持召开市政府党组理论学习中心组2023年第十次学习会议
2023-08-31 -
Sonarworks的SoundIDListen软件旨在从耳机中挤出更好的声音
2023-08-31 -
江苏盐城出新政进一步促消费
2023-08-31 -
王秋明受伤无法参加集训 国足紧急补招张佳祺入队
2023-08-31 -
存量房贷利率调整,哪家银行打响第一枪?
2023-08-31 -
跨年冲暂估成本的会计分录怎么做 跨年暂估的成本怎么冲销
2023-08-31 -
今日红外光谱分析官能团(红外光谱中分析)
2023-08-31 -
48家科创企业角逐第九届大连市创新创业大赛决赛
2023-08-31 -
金钻绿植的养殖方法是怎样的?为什么不能养家里?
2023-08-31 -
城市漫步,“走”出消费新时尚
2023-08-31 -
百度问卷星下载(百度问卷星)
2023-08-31 -
现身成都全程吸睛,它才是好看又好“飚”的十万级SUV
2023-08-31 -
回家的欲望3到大结局在线观看(回家的欲望3到大结局)
2023-08-31 -
晚间公告全知道:宇宙第一大行上半年净利润1737.4亿元同比增长1.2%,京沪高铁上半年扭亏,净利润51.36亿元…
2023-08-30 -
2023年08月30日19时49分泰国铢/人民币汇率最新报价
2023-08-30 -
农业农村部部署台风“苏拉”和“海葵”防御工作
2023-08-30 -
市场消息:土耳其外交部长将于8月31日访问俄罗斯。
2023-08-30 -
碧桂园服务获花旗维持“买入评级上调目标价至11.5港元
2023-08-30 -
公安部交管局提示:自觉系好安全带 安全出行防意外
2023-08-30 -
16岁俄罗斯花滑冠军失踪后被找到 疑因与教练有争执
2023-08-30 -
我的门诊日记丨平和养人,让你身体健康,不容易得乳腺癌、子宫肌瘤
2023-08-30
-
守住网络直播的伦理底线
2021-12-16 -
石窟寺文化需要基于保护的“新开发”
2021-12-16 -
电影工作者不能远离生活
2021-12-16 -
提升隧道安全管控能力 智慧高速让司乘安心
2021-12-16 -
人民财评:提升消费体验,服务同样重要
2021-12-16 -
卫冕?突破?旗手?——武大靖留给北京冬奥会三大悬念
2021-12-16 -
新能源车险专属条款出台“三电”系统、起火燃烧等都可保
2021-12-16 -
美术作品中的党史 | 第97集《窗外》
2021-12-16 -
基金销售业务违规!浦发银行厦门分行等被厦门证监局责令改正
2021-12-16 -
保持稳定发展有支撑——从11月“成绩单”看中国经济走势
2021-12-16