扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在页面内用JS操作CSS除非用AJAX,但操作页面内的样式的话,是可以的。操作样式分为改变直接样式,改变className和改变cssText三种
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的广丰网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
一、局部改变样式
调用方法:
改变className
div id="demo"测试/div
script
document.getElementById('demo').className="test";
/script
改变直接样式
div id="demo"测试/div
script
document.getElementById('obj').style.backgroundColor="#003366";
/script
二、全局改变样式
可以通过改变外链样式的的href的值实现网页样式的实时切换
link rel = "stylesheet" type="text/css" id="css" href="firefox.css" /
span on click="javascript:document.getElementById('css').href = 'ie.css'"点我改变样式/span
由于CSS的规则是全局性的,添加任何一个样式,在全局都有效,优点是方便复用,缺点是会根据 权重的计算 造成样式冲突,非常难以管理。
有了钉子,自然就会有锤子。随着前端的发展出现了各种CSS模块解决方案,主要分两种:
一类是采用JS或者JSON 的方式写CSS,比如 jsxstyle , react-style ,虽然可以采用JS成熟方案来管理css, 但是它无法使用postcss ,sass等css预处理器,并且衍生了大批的api, 使用的代价较大。
另一类还是采用css 来写样式, 不过是通过工具生成CSS作用域的方式实现模块化,比如CSS module。常用的BEM命名技巧或者团队中约定的方案来实现命名空间从而实现模块化,不过约定总会出现问题,于是就出现了通过工具,比如webpack的css-loader根据算法,实现css 模块化。
webpack 内置的 css-loader 自带了CSS modoule, 配置如下:
create-react-app 2.0以上的版本中内置启动了CSS module, 如果需要特殊配置,则需要eject操作, 在webpack.config.js 中:
CSS module 默认采用局部样式,即给每个css 名添加上了“:local”, 对应的全局性的写法:
compose 组合样式:
对于样式复用,CSS module提供了唯一的方式 "compose":
多CSS class 的写法:
Sass 变量与JS共享
Css module 作者建议:
1.不使用选择器,只使用 class 名来定义样式
2.不层叠多个 class,只使用一个 class 把所有样式定义好
3.不嵌套
4.使用 composes 组合来实现复用
采用 classnames 来增强CSS module 在react 中的使用,类似Angular 中的样式指令:
参考链接:
JavaScript访问修改样式表,可以方便的动态修改页面:
一、访问元素中style属性的CSS样式
这个可以直接使用style对象方便的访问,例如:
div id = "mdiv" style="background-color:blue;"..../div
访问CSS的方法是:
script type="text/javascript"
//获得元素
var oDiv = document.getElementyId("mdiv");
//访问元素的style对象,再访问对象中的属性,也可以修改属性的值,直接为他赋值
alert(oDiv.style.backgroundColor);
/script
二、访问外部定义的CSS样式(类定义的CSS样式)
这个没法使用上面的方法去访问,因为CSS数据不是存储在style属性中,它是存储在类中的。
访问方法:先取得定义类的样式表的引用,用document.styleSheets集合实现这个目的,这个集合包含HTML页面中所有的样式表,DOM为每个样式表定义一个cssRules的集合,这个集合中包含定义在样式表中的所用CSS规则(注意:Mozilla和Safasi中是 cssRules,而IE中式rules)。
例如:
style
/*第一条规则*/
div.ss{
background-color:red;
width:101px;
}
/*第二条规则*/
a.btn2{
background:url(imag/2-AccessCtl.jpg);
}
/style
访问CSS:
var ocssRules = document.styleSheets[0].cssRules||document.styleSheets[0].rules;
//访问第一条规则
alert(ocssRules[0].style.backgroundColor);
//设置值
ocssRules[0].style.width = "992px";
//访问第二条规则
alert(ocssRules[1].style.background);
//设置值
ocssRules[0].style.background = "url(imag/3-back.jpg);";
以上内容是百度出来的
JavaScript动态建立或增加CSS样式表,参考如下:
1、简单的方法:
document.createStyleSheet().cssText = '标签{color:red;' +
// 这个注释只在当前JS中帮助理解,并不会写入CSS中
'width:300px;height:150px}' +
'.类名{……}' +
'#ID们{……}'
2、比较完美的方法,防止重复添加,通过添加样式表ID并对其判断来实现:
if (!document.styleSheets['要建立的样式表ID如theforever']) { //先检查要建立的样式表ID是否存在,防止重复添加
var ss = document.createStyleSheet();
ss.owningElement.id = '要建立的样式表ID如theforever';
ss.cssText = '标签{display:inline-block;overflow:hidden;' +
// 这个注释只在当前JS中帮助理解,并不会写入CSS中
'text-align:left;width:300px;height:150px}' +
'.类名{……}' +
'#ID们{……}'
;
}
选中标签,然后用style设置样式
div id="h5course"HTML5学堂(WX号),技术干货文章分享/div
script
var box = document.getElementById('h5course');
box.style.color = '#39f';
box.style.border = '2px solid #000';
/script
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流