解析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 相关文章推荐
JS中==与===操作符的比较
Mar 21 Javascript
jquery 锁定弹出层实现代码
Feb 23 Javascript
js实现杯子倒水问题自动求解程序
Mar 25 Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 Javascript
2014 年最热门的21款JavaScript框架推荐
Dec 25 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
jQuery事件对象的属性和方法详解
Sep 09 jQuery
vue form 表单提交后刷新页面的方法
Sep 04 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
uni-app 支持多端第三方地图定位的方法
Jan 03 Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php 获取mysql数据库信息代码
2009/03/12 PHP
php多任务程序实例解析
2014/07/19 PHP
php注册登录系统简化版
2020/12/28 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
vue实现图片上传功能
2020/05/28 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
python实现的文件同步服务器实例
2015/06/02 Python
Python实现自动发送邮件功能
2021/03/02 Python
python实现Adapter模式实例代码
2018/02/09 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
tensorflow的计算图总结
2020/01/12 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
python如何安装下载后的模块
2020/07/03 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
Reformation官网:美国女装品牌
2018/09/14 全球购物
品管员岗位职责
2013/11/10 职场文书
给排水工程师岗位职责
2013/11/21 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
加入学生会演讲稿
2014/04/24 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
学校重阳节活动总结
2015/03/24 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
销售合作意向书范本
2015/05/08 职场文书
工作建议书范文
2019/07/08 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript