如何用JavaScript实现动态修改CSS样式表


Posted in Javascript onMay 20, 2016

看过我写的《用JavaScript动态建立或增加CSS样式表的实现方法》之后,你就很容易想明白如何修改CSS样式表了。

正好今天在论坛碰到一位朋友问这样的一个问题:

<style>
.ls{width=120px;}
</style>
<script>
//在这里加一句来改变.ls中width的值,如何写
</script>

有的朋友回答:“如果使用.ls的对象很多的话,用JS确实不方便, jquery方便,$(".ls").width(200);这样就行”。

他是想用JQ的类选择器.ls选择所有使用这个样式的对象,对它们逐个进行调整,而非更改CSS样式表,所以会有“对象很多”的顾虑。

但问题是,这只是改了那些对象的具体表现样式,而并非改了.LS的设置。如果再出现一个使用.LS风格的元素,它还是老样子,你还需要对这个元素再去调整,治标不治本。而且这种方式也决定了不可能简单地通过一句话就实现。

这样想的人还不少,而如果你看了《用JavaScript动态建立或增加CSS样式表的实现方法》这篇文章之后,相信你很容易就想到如何用一句话来解决这个问题,既简洁高效(浏览器会自动重新设置所有应用这个样式的元素),而且真正的修改了样式设置,新增的使用这个样式的元素将自动应用被修改过的设置。于是,你已经学到了和很多人区分开来的更高阶的知识。下面我把方法具体再说一下:

由于上面的例子,不容易看出效果,我下面另外写了个例子,通过颜色的改变,比较容易看到效果:

<STYLE>
	.theforever {width:50px;color:red;}
	#theforever {width:150px;color:silver;}
</STYLE>
<div class="theforever">这里应该是红色的,但它会被下面的JS通过改变CSS样式设置而变成黄色</div>
<div id="theforever">这里应该是银灰色的,的确这个不会发生变化,只作为对比</div>
<script>
document.styleSheets[0].cssText=document.styleSheets[0].cssText.replace(/red/g,"yellow");
//一句,不就OK了?
</script>

上面的例子,针对的不是某个特定的样式名称,而是泛泛的颜色(如果你直接挪到含有更为复杂的CSS页面里,其中有不表示颜色的RED字样,这还会导致错误。我对不动脑子的代码拿来主义者一向极其反感,不作过多指示),但如果想要针对特定的样式名称进行更改,同样很容易:

从上面,可以看出document.styleSheets[0].cssText就是整个<STYLE></STYLE>内部的内容,相当于一个字串变量,所以假如针对.LS要改变它的设置,只需要把“.ls{width=120px;}”作为 replace 要替换的部分,把“.ls{width=555px;}”作为替换目标,这样就行了。

以上这篇如何用JavaScript实现动态修改CSS样式表就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
dojo学习第一天 Tab选项卡 实现
Aug 28 Javascript
JS日期和时间选择控件升级版(自写)
Aug 02 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
Nov 01 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
详解webpack介绍&amp;安装&amp;常用命令
Jun 29 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
vue-resource post数据时碰到Django csrf问题的解决
Mar 13 Javascript
js简单粗暴的发布订阅示例代码
Jan 23 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 #Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 #Javascript
详解JavaScript中的事件流和事件处理程序
May 20 #Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 #Javascript
JavaScript中的Object对象学习教程
May 20 #Javascript
jQuery基本选择器(实例及表单域value的获取方法)
May 20 #Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 #Javascript
You might like
PHP中的output_buffering详细介绍
2014/09/27 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
python定时器使用示例分享
2014/02/16 Python
python对数组进行反转的方法
2015/05/20 Python
python统计cpu利用率的方法
2015/06/02 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
基于python实现名片管理系统
2018/11/30 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
python logging 日志的级别调整方式
2020/02/21 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
十佳大学生村官事迹
2014/01/09 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
高中生班主任评语
2014/04/25 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书