分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

CSS中的未定义行为,浏览器的差异(一)

发布时间:2023-09-06 01:44责任编辑:苏小强关键词:CSS浏览器

今天看了张鑫旭大佬的新书的有感吧,记录一下。

Web标准未对一些场景做出明确规范,所以各大浏览器厂家只能根据自己的理解和喜好去实现,表现差异不是浏览器的bug,用计算机领域的术语描述为"未定义行为"。

比如一个例子:
CSS中的一个伪类,最常用的一个伪类:active,鼠标按下,执行改伪类对应的CSS样式,鼠标抬起还原。

但是这种情况呢:

<!DOCTYPE html><html><head> ???<meta charset="utf-8" /> ???<style> ???????.active-btn { ???????????display: inline-block; ????????????background-color: #cd0000; ???????} ???????.active-btn:active { ???????????background-color: #ae0000; ???????} ???</style> ???<script> ???????var button = document.getElementById("button"); ???????if (button.addEventListener) { ???????????button.addEventListener("mousedown", function(event) { ???????????????// 此处省略N行 ???????????????event.preventDefault(); ???????????????}); ???????} ?????????</script></head><body> ???<a href="javascript:" class="active-btn">按下</a> ???<a href="javascript:" id="button" class="active-btn">按下</a></body></html>

也就是鼠标按下的时候,阻止按钮的默认行为,这样设置可以让拖动效果更流畅。

但是在Fiewfox浏览器中的:active阵亡了,而IE和Chrome的:active正常变红,符合预期。

原因就是规范上并没有对这种场景的具体描述,所以Firefox认为:active发生在mousedown事件之后。但是我现在还有一个疑问,已在社区上提问,等明白之后再回来补充。

CSS中的未定义行为,浏览器的差异(一)

原文地址:https://www.cnblogs.com/zhangmingzhao/p/8505517.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved