原生JS实现获取及修改CSS样式的方法


Posted in Javascript onSeptember 04, 2018

本文实例讲述了原生JS实现获取及修改CSS样式的方法。分享给大家供大家参考,具体如下:

大家都知道在JavaScript原生操作中获取元素的样式,在实际操作是使用时比较频繁的一件事,这里像大家介绍下获取css样式的方法,希望可以帮助一些需要的人,如果有幸被大牛看到,有更好的办法,欢迎提出!!!

一、行内元素样式获取:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>js获取外部样式</title>
</head>
<body>
  <div id="div" style="width:200px;height:200px;border:3px solid cyan;"></div>
</body>
<script>
  //获取行间样式
  var div = document.getElementById('div');
  var width = div.style.width;
  alert(width);//200px
</script>
</html>

在JS代码中,alert会弹出div元素的width为200px;达到了要获取元素宽度的目的,但是这种简单的方法只适用于获取元素的行内元素样式,并不能获取内部样式和外部样式,在项目中,写入行内元素这种方案并不被大家认同,所以这种方法,只是让大家了解下。

二、非行间样式元素获取:

如果元素样式并非行间样式,利用上面这种方法并不能获取到元素的样式,需要使用另一种方法:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>js获取内部部样式</title>
  <style>
    #div{
      width: 200px;
      height: 200px;
      border:3px solid cyan;
    }
  </style>
</head>
<body>
  <div id="div""></div>
</body>
<script>
  var div = document.getElementById('div');
  //获取div的width
  var width = window.getComputedStyle(div,null).width;
  alert(width);//200px
  //修改div的width
  div.style.cssText='width:300px;'
</script>
</html>

在上面代码中,使用了window.getComputedStyle('元素',null).'样式',此方法兼容性:火狐 谷歌 IE9 获取的为计算后的样式,但是这里需要注意的是用此方法获取的值为只读模式,并不能修改,所以用了style.cssText方式修改了其属性,这里需要注意下书写方式.

三、兼容性:

前段潜规则,凡是好的东西都不能通用,是的,你猜对了,任性的IE并不能使用以上方法,但是IE有自己的方法为currentStyle,用法一样,就不再赘述了,下面直接写出已经处理兼容的代码如下:

var div = document.getElementById('div');
if (div.currentStyle) {
  console.log(div.currentStyle.width);
}else{
console.log(getComputedStyle(div,null).width);
}

方法封装:

function getStyle(obj,name){
  if (obj.currentStyle) {
    return obj.currentStyle[name];
  }else{
    return getComputedStyle(obj,false)[name];
  }
}

上述代码感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun测试运行一下,看看运行结果如何。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript 精粹笔记
May 09 Javascript
JS delegate与live浅析
Dec 21 Javascript
javascript实时显示北京时间的方法
Mar 12 Javascript
JS获取图片高度宽度的方法分享
Apr 17 Javascript
基于javascript的Form表单验证
Dec 29 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
Feb 13 Javascript
浅谈sass在vue注意的地方
Aug 10 Javascript
AngularJS中scope的绑定策略实例分析
Oct 30 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
Sep 13 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
JS使用栈判断给定字符串是否是回文算法示例
Mar 04 Javascript
vue中created和mounted的区别浅析
Aug 13 Javascript
微信小程序canvas拖拽、截图组件功能
Sep 04 #Javascript
mpvue写一个CPASS小程序的示例
Sep 04 #Javascript
Vue表单及表单绑定方法
Sep 04 #Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 #Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 #jQuery
vue做移动端适配最佳解决方案(亲测有效)
Sep 04 #Javascript
基于element-ui的rules中正则表达式
Sep 04 #Javascript
You might like
PHP入门
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
Tensorflow 多线程设置方式
2020/02/06 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
什么是URL
2015/12/13 面试题
幼儿园英语教学反思
2014/01/30 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
农村党员一句话承诺
2014/05/30 职场文书
高三英语教学计划
2015/01/23 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
征求意见函
2015/06/05 职场文书
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL