首頁 >web前端 >前端問答 >js如何控制css

js如何控制css

藏色散人
藏色散人原創
2021-07-10 10:57:536187瀏覽

js控制css的方法:1、透過style屬性或「setAttribute()」來更改樣式;2、改變偽類「(after,before)」的「content」內容;3、透過更改類名來更改樣式等等。

js如何控制css

本文操作環境:windows7系統、javascript1.8.5&&CSS3版,DELL G3電腦

js如何控制css?

JS控制css樣式的幾種方式

我們在js的工作學習中總是會遇到一些不輕易透過style屬性動態載入css樣式的情況(eg:偽類的樣式控制,動畫的樣式控制),這裡總結一下js改變樣式的幾種方法:

1,透過style屬性或是setAttribute()來更改樣式

ele.style.width='50px';//最常用
ele.style.cssText='width:50px';//并不会覆盖原先所有css
ele.style.setProperty("width", "50px", "important");//可以传第三个参数
ele.setAttribute("style", "width: 50px")//也不会覆盖原先所有css放心用
ele.style.width='50px';//最常用
ele.style.cssText='width:50px';//并不会覆盖原先所有css
ele.style.setProperty("width", "50px", "important");//可以传第三个参数
ele.setAttribute("style", "width: 50px")//也不会覆盖原先所有css放心用

2,如果只是改變偽類(after,before)的content內容也可以這麼做

//css代码
div::after{
    content:attr(data-myadd);
    width:10px;
}
//js代码
div.setAttribute('data-myadd',需要动态加载的内容)
//css代码
div::after{
    content:attr(data-myadd);
    width:10px;
}
//js代码
div.setAttribute('data-myadd',需要动态加载的内容)

3,透過更改類別名稱來更改樣式

ele.className='';
ele.classList.add();//emmmm没什么好说的
ele.className='';
ele.classList.add();//emmmm没什么好说的

4,那麼重點來了:利用document.styleSheets我們取得到所有樣式表,然後選擇一個樣式表透過insertRule 來新增樣式;也可以建立新的cssRules,透過addRule()來新增樣式

document.styleSheets:获取到的是所有样式列表的集合
href:通过link标签引入的样式表,则是样式表的URL,否则为null
media:当前样式表支持的所有媒体类型集合
type:样式表类型的字符串
disabled: 通过disabled来屏蔽掉该样式表,可以用来切换样式表 ; document.styleSheets[i].disabled = true
cssRules:是当前样式列表的所有样式集合;document.styleSheets[i].cssRules
cssText:当前样式表的某一个样式的样式document.styleSheets[i].cssRules[i].cssText
selectorText:当前样式的选择符
parentStyleSheet:当前规则所属样式表;IE不支持
insertRule(rule,index):在index前插入一条rule新规则; document.styleSheets[0].insertRule('* {background:blue;color:#000}',0)不支持IE;document.styleSheets[0].addRule('*',' {background:blue;color:#000}',0)支持IE;
deleteRule(index):删除某个央视列表的第index个样式;IE用removeRule(index)
//使用document.styleSheets获取样式表的时候最好获取最后一个,在最后一个样式表上添加样式
var sheets=document.styleSheets;
var lastSheet=sheets[sheets.length-1];
lastSheet.insertRule('#div{width:10px}',index)//将#div样式直接添加到cssRules中;index是添加到第几条;现代浏览器
lastSheet.addRule('div','width:10px;',0)//IE浏览器
//使用document.styleSheets获取样式表的时候最好获取最后一个,在最后一个样式表上添加样式
var sheets=document.styleSheets;
var lastSheet=sheets[sheets.length-1];
lastSheet.insertRule('#div{width:10px}',index)//将#div样式直接添加到cssRules中;index是添加到第几条;现代浏览器
lastSheet.addRule('div','width:10px;',0)//IE浏览器

5,動態載入樣式表

如果需要更改的樣式比較多,還是建議透過動態載入樣式的方式來改變頁面樣式

//改变样式文件的引用
function loadStyle(url){
  var link = document.createElement('link');
    link.type = 'text/css';
    link.rel = 'stylesheet';
    link.href = url;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(link);
}
loadStyle('test.css');
//动态加载css代码片段
var style = document.createElement('style');
    style.type = 'text/css';
    style.rel = 'stylesheet';
    try{ //Chrome Firefox Opera Safari
        style .appendChild(document.createTextNode(code));
    }catch(ex){//IE
        style.styleSheet.cssText = code;
    }
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(style);
}
loadCssCode('body{background-color:#f00}');
//改变样式文件的引用
function loadStyle(url){
  var link = document.createElement('link');
    link.type = 'text/css';
    link.rel = 'stylesheet';
    link.href = url;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(link);
}
loadStyle('test.css');
 
//动态加载css代码片段
var style = document.createElement('style');
    style.type = 'text/css';
    style.rel = 'stylesheet';
    try{ //Chrome Firefox Opera Safari
        style .appendChild(document.createTextNode(code));
    }catch(ex){//IE
        style.styleSheet.cssText = code;
    }
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(style);
}
loadCssCode('body{background-color:#f00}');

推薦學習:《javascript高級教學

以上是js如何控制css的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn