解析js如何获取css样式


Posted in Javascript onDecember 11, 2016

一、获取内联样式

<div id ="myDiv" style="width:100px;height:100px;background-color:red; border:1px solid black;"></div>
<script>
  var myDiv = document.getElementById("myDiv");

  alert(myDiv.style.width);//100px

  alert(myDiv.style['height']);//100px

  var style=myDiv.style;
  alert(style.backgroundColor);//red

  myDiv.style.backgroundColor='green';//myDiv背景色变为绿色 
</script>

在这种情况下,获取和设置样式只靠style属性就可以,因为element.style属性返回的是类似数组的一组样式属性及对应值,因此访问具体样式的时候可以采取两种方式即“ele.style.属性名称”和“ele.style['属性名称']”。但是,要注意的是,针对css样式里background-color;margin-left之类的短杠相接的属性名称,在使用style属性获取设置样式的时候名称要改为驼峰式,如ele.style.backgroundColor.

二、因为第一种方法,即使用style属性只能获取到内联样式。但是,实际情况是文档在现在都基本遵循分离思想,样式基本都是外部链接,所以三种样式都要考虑到的,这时就要使用其他方法进行获取,而在这种情况下进行样式获取时,不同的浏览器又有不同的处理方式(主要是ie和非ie),因此根据浏览器可以分为两种方式:

(2.1)非ie浏览器中,使用document.defaultView对象的getComputedStyle(ele,null/伪类)方法,该方法接受两个参数,第一个为要考察的元素,第二个则要根据情况,如果只是考察元素本身则为null,如果要 考察伪类,则为响应的伪类。该方法获取到的为元素应用的最终样式组合,同样是类似数组的一个实例。

(2.2)在ie浏览器中,对getComputedStyle()方法不支持,但是针对每个标签元素都有一个近似于style属性的currentStyle的属性,且用法和style用法相同。只不过获取到的样式范围不一样。currenStyle获取到的和getComputedStyle()方法相接近。

为了在处理时达到兼容,可以根据这两种不同的处理方式创建一个函数来达到兼容目的,使得不管在那种浏览器中,都可以成功获取样式。如下所示:

<style type="text/css">
#myDiv {
  background-color:blue;
  width:100px;
  height:200px;
}
</style>
<div id ="myDiv" style="background-color:red; border:1px solid black;"></div>
<script>
  var myDiv = document.getElementById("myDiv");
  var finalStyle = myDiv.currentStyle ? myDiv.currentStyle : document.defaultView.getComputedStyle(myDiv, null);/*利用判断是否支持currentStyle(是否为ie)
  来通过不同方法获取style*/
  alert(finalStyle.backgroundColor);  //"red"
  alert(finalStyle.width);       //"100px"
  alert(finalStyle.height);       //"200px"
</script>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
js操纵dom生成下拉列表框的方法
Feb 24 Javascript
再谈javascript原型继承
Nov 10 Javascript
javascript 动态修改css样式方法汇总(四种方法)
Aug 27 Javascript
js获取时间精确到秒(年月日)
Mar 16 Javascript
JS中对数组元素进行增删改移的方法总结
Dec 15 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
Jun 04 Javascript
Angularjs中数据绑定的实例详解
Aug 25 Javascript
vue路由守卫及路由守卫无限循环问题详析
Sep 05 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
Nov 20 Javascript
如何在JavaScript中正确处理变量
Dec 25 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 #Javascript
JQuery.validationEngine表单验证插件(推荐)
Dec 10 #Javascript
JS产生随机数的用法小结
Dec 10 #Javascript
基于JavaScript实现随机颜色输入框
Dec 10 #Javascript
BootStrap中
Dec 10 #Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 #Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 #Javascript
You might like
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
javascript生成大小写字母
2015/07/03 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
Python正则表达式指南 推荐
2018/10/09 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
selenium+python环境配置教程详解
2019/05/28 Python
Python何时应该使用Lambda函数
2019/07/02 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
python合并多个excel文件的示例
2020/09/23 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
交通事故和解协议书
2014/09/25 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
Python基础详解之邮件处理
2021/04/28 Python
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers