講解決方法之前,先普及一下css樣式里優先級的一些知識,避免一些剛入行的小白看的迷迷糊糊。
優先級關系:內聯樣式 > ID 選擇器 > 類選擇器 = 屬性選擇器 = 偽類選擇器 > 標簽選擇器 = 偽元素選擇器
優先級規則:
1.css選擇規則的權值不同時,權值高的優先;
2.css選擇規則的權值相同時,后定義的規則優先;
3. css屬性后面加 !important 時,無條件絕對優先;
當然,記不住也沒關系,畢竟寫樣式時最常用的方法就是直接在css屬性后面添加一個 !important,使其絕對優先。
不過這樣也會出現一個問題,那就是JS里常用的更改樣式方法無效
js修改方法
js常用方法:元素名.style.屬性名='值';
例如:var btn=document.getElementsByTagName('button'); btn.style.background='red';
這樣是無效的。
而想要更改他,就需要使用setProperty()方法。
setProperty() 方法用於設置一個新的 CSS 屬性,同時也可以修改 CSS 聲明塊中已存在的屬性。
如:var btn=document.getElementsByTagName('button'); btn.style.setProperty('background','red','important');
注:setProperty()的第三個參數沒有 !
jq修改方法
常用的css修改方法
$(".test").css("width","100px !important");
但這種方法是錯誤的。
而想要強制修改,需要添加cssText
例子:
$(".test").css("cssText", "width:50px !important;);
方法親測有效,質量有保障!
參考網站:https://www.runoob.com/jsref/met-cssstyle-setproperty.html
https://www.cnblogs.com/lxl0419/p/10142292.html