原生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 二维数组
Nov 26 Javascript
快速排序 php与javascript的不同之处
Feb 22 Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
js 针对html DOM元素操作等经验累积
Mar 11 Javascript
学习JavaScript设计模式(多态)
Nov 25 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 Javascript
详解ES6 系列之异步处理实战
Oct 26 Javascript
vue-froala-wysiwyg 富文本编辑器功能
Sep 19 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
Aug 09 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
解析wamp5下虚拟机配置文档
2013/06/27 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
JS匀速运动演示示例代码
2013/11/26 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
VueJs监听window.resize方法示例
2018/01/17 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
详解python 拆包可迭代数据如tuple, list
2017/12/29 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Python版中国省市经纬度
2020/02/11 Python
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
会计专业自我评价
2014/02/12 职场文书
小学一年级学生评语
2014/04/22 职场文书
超市店庆活动方案
2014/08/31 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
公务员年终个人总结
2015/02/12 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
护士业务学习心得体会
2016/01/25 职场文书
2016年学校招生广告语
2016/01/28 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
Java基础——Map集合
2022/04/01 Java/Android