javascript 动态修改css样式方法汇总(四种方法)


Posted in Javascript onAugust 27, 2015

在很多情况下,都需要对网页上元素的样式进行动态的修改。在JavaScript中提供几种方式动态的修改样式,下面将介绍方法的使用、效果、以及缺陷。

1、使用obj.className来修改样式表的类名。

2、使用obj.style.cssTest来修改嵌入式的css。

3、使用obj.className来修改样式表的类名。

4、使用更改外联的css文件,从而改变元素的css

下面是一段html代码和css代码用来解释上面方法的区别的。

CSS

.style1{margin:10px auto ;background-color:#9999FF; display:block;color:White; border:1px solid white; padding:10px 25px; font-size:18px; }

.style1:hover{ background-color:#66B3FF; cursor:pointer;}

.style2{margin:10px auto ;background-color:gray; display:block;color:black; border:1px solid white; padding:10px 25px; font-size:18px; }

.style2:hover{ background-color:black; color:White; cursor:pointer}

HTML

<div>
  <input id="btnB" type="button" name="btnLogin" value="登录" class="style1" />
  <div id="tool">
   <input type="button" value="【obj.style.className】更改样式" onclick="changeBackgroundColor()"/>
   <input type="button" value="【obj.style.cssText】更改样式" onclick="changeFontSize()" />
   <input type="button" value="【obj.className】更改样式" onclick="addRadius()" />
   <input type="button" value="更改外联css样式" onclick="recover()" />
  </div>
 </div>

方法一、使用obj.className来修改样式表的类名

从下面的代码可以看出ob.style.cssTest是如何来btnB的样式的。

function changeStyle1() {
   var obj = document.getElementById("btnB");
   obj.style.backgroundColor= "black";

 }

该段代码修改btB的文字的颜色,在浏览器中打开调试工具,可以发现btB标签中多了一个属性【style="内联式>外联式。而btB的hove伪类的background-color样式写在内联式中,所以嵌入式的background-color覆盖了伪类中,这就使得鼠标放入btB上感觉不到背景颜色的变化。

方法二、使用obj.style.cssTest来修改嵌入式的css

直接上JavaScript代码:

function changeStyle2() {
   var obj = document.getElementById("btnB");
   obj.style.cssText = "background-color:black; display:block;color:White;

}

该段代码和【一】中的效果是一样的,缺陷也是一样。

方法三、使用obj.className来修改样式表的类名

使用代码来修改btB引用样式的类名,如下段代码:

function changeStyle3() {
   var obj = document.getElementById("btnB");
   //obj.className = "style2";
   obj.setAttribute("class", "style2");
 }

通过更改btB的css的类名的方式来更改样式,更改样式类名有两种方式。1、obj.className = "style2";  2、 obj.setAttribute("class", "style2");都是一样的效果。

用这种方式来修改css比上面的效果要好很多。

方法四、使用更改外联的css文件,从而改变元素的css

通过更改外联的css文件引用从而来更改btB的样式,操作很简单。代码如下:

首先得引用外联的css文件,代码如下:

<link href="css1.css" rel="stylesheet" type="text/css" id="css"/>

function changeStyle4() {
   var obj = document.getElementById("css");
   obj.setAttribute("href","css2.css");
 }

这样也能方便的更改btB的样式,个人觉得这种方式是最好用的,是实现整体页面换肤的最佳方案。

Javascript 相关文章推荐
Tips 带三角可关闭的文字提示
Oct 06 Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
Dec 09 Javascript
IE浏览器不支持getElementsByClassName的解决方法
Aug 27 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
整理Javascript数组学习笔记
Nov 29 Javascript
最常见和最有用的字符串相关的方法详解
Feb 06 Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
Mar 24 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
Aug 27 #Javascript
javascript引用类型之时间Date和数组Array
Aug 27 #Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 #Javascript
jQuery手机拨号界面特效代码分享
Aug 27 #Javascript
JS实现自动切换文字的导航效果代码
Aug 27 #Javascript
javascript实现自动输出文本(打字特效)
Aug 27 #Javascript
jquery+php随机生成红包金额数量代码分享
Aug 27 #Javascript
You might like
php中url函数介绍及使用示例
2014/02/13 PHP
php获取远程文件大小
2015/10/20 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
学习ExtJS accordion布局
2009/10/08 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
python中class的定义及使用教程
2019/09/18 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
2013年保送生自荐信格式
2013/11/20 职场文书
怎样写演讲稿
2014/01/04 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
工作经历证明书范文
2014/11/02 职场文书
廉洁自律证明
2015/06/24 职场文书
转变工作作风心得体会
2016/01/23 职场文书
八年级作文之感恩
2019/11/22 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python