getComputedStyle()用法详解
那如果元素即没有在style属性中设置宽高,也没有在样式表中设置宽高,还能用getComputedStyle或currentStyle获取吗?答案是getComputedStyle可以,currentStyle不可以 。
实际项目中,可能要获取元素的CSS样式属性值,然后再进行其他的操作。
在操作中可能会遇到这种情况,有时候能够正确获取CSS属性值,有时候则不能。
下面通过代码实例分析一下出现这种问题的原因,以及解决方案。
首先看一段代码实例:
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>getComputedStyle使用</title>
<style type="text/css">
div{
width:100px;
height:100px;
margin-top:20px;
}
#first{background-color:red}
</style>
<script type="text/javascript">
window.onload=function(){
var first=document.getElementById("first");
var second=document.getElementById("second");
alert(first.style.backgroundColor);
alert(second.style.backgroundColor);
}
</script>
</head>
<body>
<div id="first"></div>
<div id="second" style="background-color:blue"></div>
</body>
</html>
代码运行后,顺利弹出第二个div的背景颜色,第一个的没有获取到。
不少初学者一开始可能人为dom元素对象的style属性无所不能,不但能设置元素的样式,也能够获取到对应的样式,但它不是万能的,它只能够获取通过style设置的元素CSS属性值:
(1).style内签到HTML标签内设置。
(2).dom.style.width="100px"这样类似设置。
这时getComputedStyle方法的作用就得以体现,它可以获取指定元素对应CSS属性的最终计算值。
语法结构:
window.getComputedStyle(element, [pseudoElt])
参数解析:
(1).element:必需,要获取样式值的元素对象。
(2).pseudoElt:可选,表示指定节点的伪元素(:before、:after、:first-line、:first-letter等)。
浏览器支持:
(1).IE9+浏览器支持此方法。
(2).edge浏览器支持此方法。
(3).谷歌浏览器支持此方法。
(4).opera浏览器支持此方法。
(5).火狐浏览器支持此方法。
(6).safria浏览器支持此方法。
代码实例:
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>getComputedStyle使用</title>
<style type="text/css">
div{
width:100px;
height:100px;
margin-top:20px;
}
#first{background-color:red}
</style>
<script type="text/javascript">
window.onload=function(){
var first=document.getElementById("first");
var second=document.getElementById("second");
alert(window.getComputedStyle(first,null).backgroundColor);
alert(second.style.backgroundColor);
}
</script>
</head>
<body>
<div id="first"></div>
<div id="second" style="background-color:blue"></div>
</body>
</html>
以上代码成功的获取了第一个div的背景颜色。
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>getComputedStyle使用</title>
<style type="text/css">
div{
width:100px;
height:100px;
margin-top:20px;
}
#first{background-color:red}
#first::before{
content:"添加的内容";
color:#0000ff;
}
</style>
<script type="text/javascript">
window.onload=function(){
var first=document.getElementById("first");
var second=document.getElementById("second");
alert(window.getComputedStyle(first,":before").color);
}
</script>
</head>
<body>
<div id="first"></div>
<div id="second" style="background-color:blue"></div>
</body>
</html>
以上代码可以获取伪元素中字体颜色值(颜色会被转换成RGB或者RGBA模式)。
不能直接获取复合属性值,例如padding属性的值,只能读paddingLeft、paddingTop等属性。
getComputedStyle()用法详解的更多相关文章
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- @RequestMapping 用法详解之地址映射
@RequestMapping 用法详解之地址映射 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
- CSS中伪类及伪元素用法详解
CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...
- c++中vector的用法详解
c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
- systemctl命令用法详解
systemctl命令用法详解系统环境:Fedora 16binpath:/bin/systemctlpackage:systemd-units systemctl enable httpd.serv ...
- CSS3的@keyframes用法详解:
CSS3的@keyframes用法详解:此属性与animation属性是密切相关的,关于animation属性可以参阅CSS3的animation属性用法详解一章节. 一.基本知识:keyframes ...
随机推荐
- Windows命令查看文件MD5,SHA1,SHA256 文件校验
certutil -hashfile yourfilename.ext MD5 certutil -hashfile yourfilename.ext SHA1 certutil -hashfile ...
- vuex使用示例
项目代码结构↓ src内容↓ store内容↓ 理解思路: component中的组件发送修改请求,由action.js处理请求,mutation修改请求,修改请求后state改变,从getter.j ...
- 集合-LinkedList
List linkedlist = new LinkedList<>(); LinkedList 底层数据结构是链表. 1. LinkedList 除了实现了List接口外,还实现了双向链 ...
- 20165231 预习作业3 linux安装及学习
linux安装 由于以前稍微关注过虚拟机相关知识,所以大致知道虚拟机软件的相关知识.目前我已知的普遍使用的虚拟机软件是VMware Workstation(下文简称VM),VirtualBox(下文简 ...
- valgrind--内存泄漏检测(转)
Valgrind 概述 体系结构 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框 ...
- MySQL5.7 锁定用户【转】
使用ALTER USER 语句锁定 mysql>ALTER USER 'demo'@'localhost' ACCOUNT LOCK; Query OK, rows affected (0.00 ...
- vc++基础班[23]---文件夹的基本操作
①.文件夹的创建:CreateDirectory ※※※ 注意:此函数只能创建一层目录,比如想在 C 盘下的 Temp 目录下创建新目录为:123 那么前提是 Temp 这个目录存在才可以! ...
- 题解-POI2009 WSP-Island
Problem bzoj1137 题意概要:给定一个凸多边形坐标.点按顺时针编号 \(1\) 到 \(n\).任意两点之间都有一条长度为欧氏距离的边相连.边相交处可以自由穿行.有 \(m\) 条边不能 ...
- Unity中的GC以及优化
[简介] 常见的 Unity GC 知识点总结出来的思维导图 Unity 官方文档,正巧在博客园发现了已经有位大神(zblade)把原文翻译出来了,而且质量很高~,译文地址 在这里.下面我就可耻地把译 ...
- 删除元素splice、shift\pop
splice() 方法: 向/从数组中添加/删除项目,然后返回被删除的项目. splice( index位数, 数量, 新添加 ) 该方法会改变原始数组 删除数组中第一个元素 arr.shift( ...