原生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 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
Jan 31 Javascript
JavaScript将数据转换成整数的方法
Jan 04 Javascript
分享20个提升网站界面体验的jQuery插件
Dec 15 Javascript
JavaScript获取网页中第一个链接ID的方法
Apr 03 Javascript
jQuery聚合函数实例
May 21 Javascript
浅谈js数据类型判断与数组判断
Aug 29 Javascript
vue.js项目中实用的小技巧汇总
Nov 29 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
js中Generator函数的深入讲解
Apr 07 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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
smarty简单分页的实现方法
2014/10/27 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
python中的随机函数random的用法示例
2018/01/27 Python
python实时监控cpu小工具
2018/06/21 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python 限制线程的最大数量的方法(Semaphore)
2019/02/22 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Python实现EM算法实例代码
2020/10/04 Python
关于保护环境的建议书
2014/05/13 职场文书
大学课外活动总结
2014/07/09 职场文书
车贷收入证明范本
2014/09/14 职场文书
离婚纠纷代理词
2015/05/23 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
高二数学教学反思
2016/02/18 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js