无法访问<head>及外部CSS时覆盖样式与:active伪类的解决方案问询
问题1:是否可以在行内样式中链接外部样式表定义伪类?
不行。行内样式(元素的style属性)仅支持编写单个元素的普通CSS属性声明,不支持@import外部样式导入语句,也无法直接定义伪类、媒体查询等规则,该方案不成立。
问题2:无需访问<head>和外部CSS的替代方案
可选择以下两种方案,均不需要修改<head>也无需调用外部CSS文件:
- 方案1:在
<body>内插入<style>标签
现代浏览器全部支持将<style>标签放置在<body>的任意位置,不需要限定在<head>内,你可以直接在目标元素附近插入样式块定义伪类规则,搭配!important确保样式优先级足够覆盖原有规则,示例如下:<!-- 直接放在body里的任意位置即可 --> <style> /* 替换成你自己的目标元素选择器 */ .target-element:active { color: #fff !important; background-color: #222 !important; } </style> <!-- 你的原有元素 --> <div class="target-element" style="/* 原有行内样式 */">点击测试</div> - 方案2:用行内事件监听模拟
:active效果
如果平台限制无法插入<style>标签,可以直接在元素的行内事件属性中通过JavaScript模拟点击态,完全不需要额外样式文件或标签,示例如下:<button style="background: #096dd9; color: #fff; border: none; padding: 8px 16px;" onmousedown="this.style.backgroundColor='#0050b3'" onmouseup="this.style.backgroundColor='#096dd9'" onmouseleave="this.style.backgroundColor='#096dd9'" ontouchstart="this.style.backgroundColor='#0050b3'" ontouchend="this.style.backgroundColor='#096dd9'" > 点击测试 </button>
内容的提问来源于stack exchange,提问作者Jim Sheehan
相关产品推荐
相关产品推荐

