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表单常用验证集合
Jan 16 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
Jun 02 Javascript
js报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
javascript之querySelector和querySelectorAll使用介绍
Dec 20 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
详解如何在Vue2中实现组件props双向绑定
Mar 29 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 Javascript
layui实现tab的添加拒绝重复的方法
Sep 04 Javascript
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
PHP读取远程txt文档到数组并实现遍历
Aug 25 Javascript
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
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获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
PHP多态代码实例
2015/06/26 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
javascript 写类方式之一
2009/07/05 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
原生js轮播特效
2017/05/18 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
python复制文件的方法实例详解
2015/05/22 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
python常用运维脚本实例小结
2020/02/14 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
女大学生毕业找工作的自我评价
2013/10/03 职场文书
小学评语大全
2014/04/22 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
总结Python常用的魔法方法
2021/05/25 Python