原生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 相关文章推荐
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
再论Javascript的类继承
Mar 05 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
Sep 14 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 Javascript
javascript 面向对象function详解及实例代码
Feb 28 Javascript
基于JS递归函数细化认识及实用实例(推荐)
Aug 07 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
vuex入门最详细整理
Mar 04 Javascript
微信小程序文章详情功能完整实例
Jun 03 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中10个不常见却非常有用的函数
2010/03/21 PHP
PHP数组函数知识汇总
2016/05/12 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
创业计划书的主要内容有哪些
2014/01/29 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
夜不归宿检讨书
2014/02/25 职场文书
医药销售自荐书
2014/05/29 职场文书
文艺演出策划方案
2014/06/07 职场文书
校园元旦活动总结
2014/07/09 职场文书
2015新学期开学寄语
2015/02/26 职场文书
追讨欠款律师函
2015/05/27 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python