聊聊JS控制css樣式的幾種方法

JS控制css樣式的幾種方式

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

1,通過style屬性或者setAttribute()來更改樣式

ele.style.width='50px';//最常用

ele.style.cssText='width:50px';//并不會覆蓋原先所有css

ele.style.setProperty("width",?"50px",?"important");//可以傳第三個參數(shù)

ele.setAttribute("style",?"width:?50px")//也不會覆蓋原先所有css放心用

ele.style.width='50px';//最常用

ele.style.cssText='width:50px';//并不會覆蓋原先所有css

ele.style.setProperty("width",?"50px",?"important");//可以傳第三個參數(shù)

ele.setAttribute("style",?"width:?50px")//也不會覆蓋原先所有css放心用

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

//css代碼

div::after{

content:attr(data-myadd);

width:10px;

}

//js代碼

div.setAttribute('data-myadd',需要動態(tài)加載的內容)

//css代碼

div::after{

content:attr(data-myadd);

width:10px;

}

//js代碼

div.setAttribute('data-myadd',需要動態(tài)加載的內容)

3,通過更改類名來更改樣式

ele.className='';

ele.classList.add();//emmmm沒什么好說的

ele.className='';

ele.classList.add();//emmmm沒什么好說的

4,那么重點來了:利用document.styleSheets我們獲取到所有樣式表,然后選擇一個樣式表通過 insertRule 來添加樣式;也可以創(chuàng)建新的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:當前規(guī)則所屬樣式表;IE不支持

insertRule(rule,index):在index前插入一條rule新規(guī)則;?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是添加到第幾條;現(xiàn)代瀏覽器

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是添加到第幾條;現(xiàn)代瀏覽器

lastSheet.addRule('div','width:10px;',0)//IE瀏覽器

5,動態(tài)加載樣式表

如果需要更改的樣式比較多,還是建議通過動態(tài)加載樣式的方式來改變頁面樣式

//改變樣式文件的引用

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');

//動態(tài)加載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');

//動態(tài)加載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}');

本文來自PHP中文網,原文地址:https://www.php.cn/website-design-ask-479590.html?推薦視頻教程:《js基礎教程

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容