原生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 相关文章推荐
jquery JSON的解析方式
Jul 25 Javascript
jQuery 加上最后自己的验证
Nov 04 Javascript
javascript 判断数组是否已包含了某个元素的函数
May 30 Javascript
jQuery照片伸缩效果不影响其他元素的布局
May 09 Javascript
浅谈javascript对象模型和function对象
Dec 26 Javascript
精通JavaScript的this关键字
May 28 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
May 13 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
Sep 04 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
Vue infinite update loop的问题解决
Apr 23 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 18 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
IIS下配置Php+Mysql+zend的图文教程
2006/12/08 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
激活 ActiveX 控件
2006/10/09 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
JS原型对象通俗&quot;唱法&quot;
2012/12/27 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
Vue DevTools调试工具的使用
2017/12/05 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python定时执行之Timer用法示例
2015/05/27 Python
Python中取整的几种方法小结
2017/01/06 Python
Python 装饰器深入理解
2017/03/16 Python
详解用python实现简单的遗传算法
2018/01/02 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
Python 必须了解的5种高级特征
2020/09/10 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
linux比较文件内容的命令是什么
2013/03/04 面试题
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
项目验收申请报告
2015/05/15 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
nginx 添加http_stub_status_module模块
2022/05/25 Servers