js操作css

1 .操作css樣式最簡單的方法,就是使用網(wǎng)頁元素節(jié)點的getAttribute方法题涨,setAttribute谎痢,removeAttribute方法,直接讀寫或者刪除網(wǎng)頁的style屬性味廊。

1 .div.setAttribute(
  'style',
  'background-color:red;'+'border:1px solid black;'
)
2 .div.style.backgroundColor="red"
3 .以上兩個寫法是完全一致的。
4 .div.style.cssText='background-color: red;'
  + 'border: 1px solid black;'
  + 'height: 100px;'
  + 'width: 100px;';

4 .style不僅可以使用字符串讀寫,而且本身還是一個對象毡们,部署了cssStyleDeclaration接口

cssStyleDeclaration接口

1 .元素節(jié)點的style屬性
2 .cssStyle實例的style屬性
3 .window.getComputedStyle()的返回值迅皇,只有這三個地方部署了這個接口,可以直接操作css的樣式

改寫規(guī)則

1 .如果中間有連字符的話衙熔,那么要按照駝峰式重寫
2 .如果是js的保留字,則規(guī)則名之前需要加上字符串css搅荞,比如cssFloat红氯。
3 .所有style的屬性值都是字符串,設(shè)置的時候必須加上單位
3 .el.style返回的只是行內(nèi)樣式咕痛,并不是該元素的全部樣式痢甘,通過樣式表設(shè)置的樣式,或者從父元素繼承的樣式茉贡,無法通過這個屬性得到塞栅。元素的全部樣式要通過window.getComputedStyle()得到。

實例屬性

1 .style.cssText:讀寫當(dāng)前規(guī)則的所有樣式聲明文本腔丧。刪除一個元素的所有行內(nèi)樣式放椰,最簡單的方法就是設(shè)置cssText為空字符串。
2 .style.length:返回一個整數(shù)值愉粤,表示當(dāng)前規(guī)則包含多少條樣式聲明
3 .style.parentRule:返回當(dāng)前規(guī)則所屬的那個樣式塊砾医,如果不存在樣式塊,該屬性返回null.

實例方法

1 .style.getPropertyPriority():傳入一個css樣式的屬性名作為參數(shù)衣厘,返回一個字符串如蚜,表示有沒有設(shè)置important優(yōu)先級。如果有則返回important影暴,否則返回一個空字符串错邦。
2 .style.getPropertyValue():傳入一個css樣式屬性名作為參數(shù),返回一個字符串型宙,表示該屬性的值
3 .style.item():接受一個整數(shù)值作為參數(shù)撬呢,返回該位置的css屬性名
4 .style.removeProperty()接受一個屬性名作為參數(shù),在css規(guī)則里面移除這個屬性早歇,返回這個屬性原來的值倾芝。
5 .style.setProperty(name,value,important):注意第三個值,不是必須箭跳,如果設(shè)置晨另,則該規(guī)則使用!importantant規(guī)則

css模塊檢測

1 .檢測當(dāng)前瀏覽器是否支持某個模塊,通常的方法是檢測style對象的某個屬性值是否為字符串。如果該屬性存在谱姓,會返回一個字符串借尿,如果不存在,則返回一個空字符串。

function isPropertySupported(property) {
  if (property in document.body.style) return true;
  var prefixes = ['Moz', 'Webkit', 'O', 'ms', 'Khtml'];
  var prefProperty = property.charAt(0).toUpperCase() + property.substr(1);

  for(var i = 0; i < prefixes.length; i++){
    if((prefixes[i] + prefProperty) in document.body.style) return true;
  }

  return false;
}

2 .css.escape():用于轉(zhuǎn)義css選擇器里面的特殊字符
3 .css.supports():用于表示當(dāng)前環(huán)境是否支持某一句css規(guī)則
4 路翻。

window.getComputedStyle()

1 .行內(nèi)樣式擁有最高的優(yōu)先級狈癞,改變行內(nèi)樣式,通常會立即反應(yīng)出來茂契,但是網(wǎng)頁元素最終樣式是綜合各種規(guī)則計算出來的蝶桶。因此,如果想得到元素的實際樣式掉冶,只讀取行內(nèi)樣式是不夠的真竖,需要得到瀏覽器最終計算出來的樣式規(guī)則。
2 .const app=document.querySelector("#app")
const appstyle=window.getComputedStyle(app)
3 .此處的appstyle是指定節(jié)點的最終樣式厌小,也就是各種css規(guī)則疊加后的結(jié)果,比其他方式得來的數(shù)據(jù)跟可靠
4 .第二個參數(shù)恢共,表示當(dāng)前的偽元素:before,:after,:first_line,:first-letter,
5 .返回的css值都是絕對值,長度是像素單位璧亚,返回值包括px后綴讨韭。
6 .css的簡寫形式無效。想要獲取margin屬性的值癣蟋,不能直接讀取透硝,只能marginLeft,font屬性也不能直接讀取梢薪,只能讀取font-size等單個屬性蹬铺。

css偽元素

1 .通過css向DOM添加的元素,主要通過:before和:after選擇器生成秉撇,content里面指定偽元素的內(nèi)容甜攀。
2 .style對象無法讀取偽元素的樣式,這個時候需要用到上面的方法

text=document.querySelector("#test")
result=window.getComputedStyle(test,':before').content
color=window.getComputedStyle(test,':after').color

styleSheet

1 .代表網(wǎng)頁的一張樣式表琐馆,包括link元素加載的樣式表和<style>元素內(nèi)嵌的樣式表,是一個link一張表么规阀?這個里面的樣式也是一張表
2 .用現(xiàn)代框架的話,基本是沒有使用這個的空間的瘦麸。
3 .styleSheet接口不僅包括網(wǎng)頁樣式表谁撼,還包括XML文檔的樣式表。所以他有一個子類CSSStyleSheet表示網(wǎng)頁的css樣式表滋饲。我們在網(wǎng)頁里面拿到的樣式表實例厉碟,實際上是cssStyle的實例。這個子接口繼承了StyleSheet的所有屬性和方法

實例屬性

1 .s.disabled:返回一個布爾值屠缭,表示該樣式是否處于禁用狀態(tài)中箍鼓,手動設(shè)置disabled屬性為false。則樣式表不會生效呵曹,這個屬性只能在js腳本中設(shè)置款咖,不能再HTML語句中設(shè)置何暮。
2 .s.href:返回樣式表的網(wǎng)址,對于內(nèi)嵌樣式表铐殃,該屬性返回null海洼。
3 .s.media屬性返回一個類似數(shù)組的對象,成員是表示適用媒介的字符串富腊,表示當(dāng)前樣式是用于屏幕坏逢,還是打印設(shè)備或者手持設(shè)備。屬性是只讀
4 .s.type:通常是text/css
5 .s.parentStyleSheet:css的@import命令允許在樣式表中加載其他的樣式表蟹肘,這個屬性可以探測到當(dāng)前表所依賴的父表是哪個词疼。
6 .s.ownerNode:表示styleSheet對象所在的dom節(jié)點,通常是link或者style
7 .s.cssRules:指向一個類似數(shù)組的對象cssRulesList實例帘腹,里面的每一個成員都是當(dāng)前樣式表的一條css規(guī)則,使用該規(guī)則的cssText屬性许饿,可以得到對應(yīng)的字符串阳欲。他的style屬性,指向一個對象陋率,用來讀取具體的css命令球化。為什么link引用的沒有這個東西。
8 .上面這個是不是實時更新的瓦糟。
9 .s.ownerRule:如果當(dāng)前樣式表不是通過@import引入的筒愚,ownerRule屬性返回null.
10 .

實例方法

1 .會用到這么底層的方法么?或者說我在瀏覽器里面實際改動這個樣式表菩浙,對用戶而言會有優(yōu)化體驗么巢掺?這個表會重載么?
2 .CssStyleSheet.insertRule():在當(dāng)前樣式表插入一個樣式劲蜻。
3 .CssStyleSheet.deleteRule():在當(dāng)前樣式表移除一個樣式陆淀。
4 .https://wangdoc.com/javascript/dom/css.html具體內(nèi)容在這個網(wǎng)址
5 .還包括一些查看自適應(yīng)的一些屬性和方法

動態(tài)加載css樣式

1 .跳到vue按需加載組件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末先嬉,一起剝皮案震驚了整個濱河市轧苫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疫蔓,老刑警劉巖含懊,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異衅胀,居然都是意外死亡岔乔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門拗小,熙熙樓的掌柜王于貴愁眉苦臉地迎上來重罪,“玉大人,你說我怎么就攤上這事〗伺洌” “怎么了搅幅?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呼胚。 經(jīng)常有香客問我茄唐,道長,這世上最難降的妖魔是什么蝇更? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任沪编,我火速辦了婚禮,結(jié)果婚禮上年扩,老公的妹妹穿的比我還像新娘蚁廓。我一直安慰自己,他們只是感情好厨幻,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布相嵌。 她就那樣靜靜地躺著,像睡著了一般况脆。 火紅的嫁衣襯著肌膚如雪饭宾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天格了,我揣著相機與錄音看铆,去河邊找鬼。 笑死盛末,一個胖子當(dāng)著我的面吹牛弹惦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播满败,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肤频,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了算墨?” 一聲冷哼從身側(cè)響起宵荒,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎净嘀,沒想到半個月后报咳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡挖藏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年暑刃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膜眠。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡岩臣,死狀恐怖溜嗜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情架谎,我是刑警寧澤炸宵,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站谷扣,受9級特大地震影響土全,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜会涎,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一裹匙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧末秃,春花似錦概页、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贺待,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間零截,已是汗流浹背麸塞。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涧衙,地道東北人哪工。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像弧哎,于是被迫代替她去往敵國和親雁比。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容