所有分类
  • 所有分类
  • 后端开发
JS搞定CSS?别忘了这个小花招

JS搞定CSS?别忘了这个小花招

现在,咱们知道HTML文档可以包含多个样式表,所有这些样式表都可以包含不同的规则,甚至可以包含更多的样式表(当使用@import时)。但是,为了演示例,咱们将stylesheet上的.CSSInJS属性设置为标志的形式,通过标志来判断是否要

真的是不能想象竟然要我们用js搞个全新的样式表出来!这可不仅仅是调整元素的样子或者css样式这么简单呀。想起来就让人头疼得不行,对?

const el = document.createElement('div')
el.style.backgroundColor = 'red'
// 或者 
el.style.cssText = 'background-color: red'
// 或者
el.setAttribute('style', 'background-color: red')

// ...
Object.assign(el.style, {
 backgroundColor: "red",
 margin: "25px"
})

别忘了,关键是要用`.style`跟Object.assign()搭档!以后调整多条样式时,轻松一按就能搞定,不用再为嵌套的小麻烦心烦意乱了。操作起来又快又便捷,特别方便!

// ...
const propertiesCount = el.style.length
for(let i = 0; i < propertiesCount; i++) {
 const name = el.style.item(i) // 'background-color'
 const value = el.style.getPropertyValue(name) // 're'
 const priority = el.style.getPropertyPriority(name) // 'important'
 
 if(priority === 'important') {
  el.style.removeProperty()
 }
}

// ...
el.style.item(0) === el.style[0]; // true

你了解啥叫高级CSS类吗?其实跟”.className”挺像的,但要注意用`.ClassName`时得把这个符号加在每个想修改的元素上。别忘了新添的和原有的都不能遗漏!看起来有点儿繁琐?

// ...
el.className = "class-one class-two";
el.setAttribute("class", "class-one class-two");

JS搞定CSS?别忘了这个小花招

说实话,搞个小花招就能搞定了。对了,还能试试新的`.classList`属性。记得IE9那破东西就别试了,IE10和IE11也只能将就着用下。

这个CSSStyleSheet其实就跟原来的StyleSheet差不多,只是改了个名而已。它多出了些看着牛逼,但实际上不能乱改的属性,比如那个.ownerNode,还有.href呀、.title啥的。这些都是从用户自己设置的样式表里冒出来的东西喔!总的说来,HTML可不仅仅是一堆字符,他还可能偷偷藏了好多样式表!每个表格都有它独特的规矩,而且你还能用@import轻易地把其他表格也加进来!

// ...
const classNames = ["class-one", "class-two", "class-three"];
classNames.forEach(className => {
 if(!el.classList.contains(className)) {
  el.classList.add(className);
 }
});

for(styleSheet of document.styleSheets){
 console.log(styleSheet);
}

你看懂了吗?不用慌张,这个”Rules”和CSSRuleList几乎是一样滴,只是这儿的”index”是从0开始计数,就好像HTML中的CSS样式排序那样。每个CSSStyleSheet里面都藏着各种各样的CSSStyleRule,其实这些就相当于咱们平常见到的CSS样式!

就是想要搞个小工具出来,把样式配对文件输进去,就能弄出一堆新样式class。你最好能看得懂ES6或者别的JavaScript组件模块,这样其他人就没法捣乱你的样式。比如说,加入”HSOfDS(XSSID_css)”这个标识,就能知道什么时候该用它了。搞定之后,新样式表就会直接放到document.styleSheets里面,只需要用’sheet’这个属性去找就可以了。觉得这个点子怎么样?挺有用的?




瞅见了没?要是想要修改网页上的DOM元素样式或修改CSS类别啥的,就试试这俩方法。第一种是在DOM元素后面加上”.”,然后再用Object.assign()方法,简单又方便。第二种则是直接控制.classList属性,你们懂的,超实用!快试试这些小技巧,有无新灵感,欢迎来评论区分享!别忘了给自己点赞哟~然后别忘了跟亲朋好友们炫耀一番!

// ...
const ruleIndex = styleSheet.insertRule("div {background-color: red}");
styleSheet.deleteRule(ruleIndex);

原文链接:https://www.icz.com/technicalinformation/web/javascript/2024/03/11341.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?