Javascript获取CSS伪元素属性的实现代码


Posted in Javascript onSeptember 28, 2014

CSS伪元素非常强大,它经常被用来创建CSS三角形提示,使用CSS伪元素可以实现一些简单的效果但又不需要增加额外的HTML标签。有一点就是Javascript无法获取到这些CSS属性值,但现在有一种方法可以获取到:

看看下面的CSS代码:

.element:before {
  content: 'NEW';
  color: rgb(255, 0, 0);
}.element:before {
	content: 'NEW';
	color: rgb(255, 0, 0);
}

为了获取到.element:before的颜色属性,你可以使用下面的代码:

var color = window.getComputedStyle(
  document.querySelector('.element'), ':before'
).getPropertyValue('color')var color = window.getComputedStyle(
	document.querySelector('.element'), ':before'
).getPropertyValue('color')

把伪元素作为第二个参数传到window.getComputedStyle方法中就可以获取到它的CSS属性了。把这段代码放到你的工具函数集里面去吧。随着伪元素被越来越多的浏览器支持,这个方法会很有用的。

译者注:window.getComputedStyle方法在IE9以下的浏览器不支持,getPropertyValue必须配合getComputedStyle方法一起使用。IE支持CurrentStyle属性,但还是无法获取伪元素的属性。

准确获取指定元素 CSS 属性值的方法。

<script type="text/javascript"> 
function getStyle( elem, name ) 
{ 
  //如果该属性存在于style[]中,则它最近被设置过(且就是当前的) 
  if (elem.style[name]) 
  { 
    return elem.style[name]; 
  } 
  //否则,尝试IE的方式 
  else if (elem.currentStyle) 
  { 
    return elem.currentStyle[name]; 
  } 
  //或者W3C的方法,如果存在的话 
  else if (document.defaultView && document.defaultView.getComputedStyle) 
  { 
    //它使用传统的"text-Align"风格的规则书写方式,而不是"textAlign" 
    name = name.replace(/([A-Z])/g,"-$1"); 
    name = name.toLowerCase(); 
    //获取style对象并取得属性的值(如果存在的话) 
    var s = document.defaultView.getComputedStyle(elem,""); 
    return s && s.getPropertyValue(name); 
  //否则,就是在使用其它的浏览器 
  } 
  else 
  { 
    return null; 
  } 
} 
</script>
Javascript 相关文章推荐
javascript 全等号运算符使用说明
May 31 Javascript
jQuery 选择器详解
Jan 19 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
May 18 Javascript
Bootstrap自定义文件上传下载样式
May 26 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
微信JSSDK调用微信扫一扫功能的方法
Jul 25 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
Jan 15 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 Javascript
解决vue 子组件修改父组件传来的props值报错问题
Nov 09 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 #Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 #Javascript
浏览器缩放检测的js代码
Sep 28 #Javascript
排序算法的javascript实现与讲解(99js手记)
Sep 28 #Javascript
Javascript中封装window.open解决不兼容问题
Sep 28 #Javascript
jQuery固定浮动侧边栏实现思路及代码
Sep 28 #Javascript
js文件包含的几种方式介绍
Sep 28 #Javascript
You might like
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
PHP 实现链式操作
2021/03/09 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
机械设计制造专业个人求职信
2013/09/25 职场文书
外语系毕业生自荐信范文
2013/12/16 职场文书
老公保证书
2015/01/17 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python