亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JavaScript改變CSS樣式的方法匯總

2024-05-06 16:19:36
字體:
來源:轉載
供稿:網友

JavaScript修改CSS有4種方法:1.修改節點style(內聯樣式);2.改變節點class或id;3.寫入新的css;4.替換頁面中的樣式表。今天主要給大家介紹下前2種,因為后兩種個人不是很推薦大家使用

JavaScript允許你即時的改變CSS樣式,這樣就可以將用戶的眼球吸引到你想他們關注的地方上,并且提供較好的交互體驗給力 。

JavaScript修改CSS有4種方法:

修改節點style(內聯樣式);

改變節點class或id;

寫入新的css;

替換頁面中的樣式表。

個人不建議使用后兩種方法,幾乎所有的功能都可以通過前兩種方式實現,并且代碼更加清晰、易理解。

后面還會說說如何獲取元素的真實樣式和一個表單中的注意事項。

1、修改節點style(內聯樣式)

這種方法權重是最高的,直接寫在節點的style屬性上,他會覆蓋其他方法設置的樣式。使用方法很簡單:

 

 
  1. var element = document.getElementById("test"); 
  2. element.style.display = "none" //讓元素隱藏 

但是要注意的是,有些CSS樣式名稱是由幾個單詞組成的例如font-size、background-image等,他們都是用破折號(-)連接起來的,然而JavaScript中破折號表示“減”,因此不能作為屬性名稱。我們需要使用“駝峰格式(camelCase)”來書寫屬性名,例如fontSize、backgroundImage。

還要注意的是,很多style都是有單位的,不能只給一個數字。例如fontSize的單位有px、em、%(百分比)等。

這種方法違背了表現和行為分離的原則,一般只適合定義元素經常變化的即時樣式(與行為相關),例如一個可用于拖拽的div,隨著拖拽,他的top、left屬性是不斷變換的,此時就不能用class或其他方式定義了,使用這種方式可以即時修改樣式,并且覆蓋掉其他方式的設置。

2、更改class、id

id和class是設置樣式的“鉤子”,更改之后瀏覽器會自動更新元素的樣式。

更改id的方法和class的類似,但是個人并不建議這樣使用,因為id是用于定位元素的,最好不要用它來定義元素的顯示樣式,并且id也常作為JavaScript的鉤子,可能會引起不必要的錯誤。

在JavaScript中,class是一個保留關鍵字,因此使用className作為訪問元素class的屬性,例如:

 

 
  1. .redColor{ 
  2. color: red; 
  3. .yellowBack{ 
  4. background: yellow; 
  5. element.className = "redColor";//設置class 
  6. element.className += " yellowBack";//增加class 

但比較郁悶的是,這個屬性是一個包含元素所有class的字符串,所有class以空格分開,這樣在刪除class時就很不方便(增加就好說,之間做個字符串連接就可以了,不過記得前面要加個空格~)。

我之前在刪除的時候用了正則表達式,根據class在字符串中的不同位置進行刪除(頭部、尾部、中間),不過后來想到了更好的辦法,就是在className屬性頭尾都加上一個空格,那就全部變成中間的方法了,直接進行子串替換:

 

 
  1. //刪除class 
  2. function removeClass(element,classRomove){ 
  3. var classNames = " "+element.className+" "
  4. classNames = classNames .replace(" "+classRomove+" "" "); 
  5. //String.trim(classNames); 
  6. element.className = classNames; 

一般的樣式修改最好都用這種方法,定義好CSS的樣式,JavaScript只是發出樣式改變的指令,具體的樣式定義還是交給CSS去做。

后兩種方法,既不優雅,也有一定兼容性問題,我就不介紹了~

3、獲取真實樣式

首先要說清楚的是,通過element.style是不行的,他只能獲取內聯樣式,樣式表中的定義無法獲取到。

既然元素的樣式可以定義在這么多種地方,那他的真實樣式到底是什么樣子就不好說了,有什么辦法能獲取到元素在瀏覽器中顯示的真實樣式呢?

其實微軟和W3C都提供了相應的方法,我們只需要進行一下封裝就可以用了:

 

 
  1. //獲取元素樣式 
  2. function getRealStyle(element,styleName){ 
  3. var realStyle = null
  4. if(element.currentStyle){ 
  5. realStyle = element.currentStyle[styleName];//IE 
  6. }else if(window.getComputedStyle){ 
  7. realStyle=window.getComputedStyle(element,null)[styleName];//W3C 
  8. return realStyle; 

記得傳入的styleName是用“駝峰格式”的~~

4、表單的顯示和隱藏(不要濫用CSS)

我們經常會見到一些表單的選項是動態添加的,例如你某個表單中選擇了婚姻狀態是“已婚”,那么就會多一個輸入框讓你輸入配偶的姓名。

如果沒有選擇那當然就要把“配偶”的相關表單都隱藏了,但在這個時候不應當用CSS來解決,即不能用style.display=”none”來隱藏。

因為無論你隱還是不隱藏它,輸入框就在那里,不增不減~ [暈] 直白點說,就是雖然隱藏了,但他還是存在與DOM中,如果此時用戶提交表單,會把這個隱藏的輸入框的內容一起提交,可能會出現些意想不到的錯誤~

正確的做法是將這段內容放入DOM超空間中,這樣就不會有上面的問題了。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲аv天堂网| 自拍偷拍亚洲欧美| 国产精品第一视频| 亚洲国语精品自产拍在线观看| 日韩在线中文字幕| 综合国产在线观看| 亚洲成人av中文字幕| 日本免费一区二区三区视频观看| 欧亚精品在线观看| 国产精品久久久久久久久粉嫩av| 91精品国产网站| 欧美激情久久久久| 在线不卡国产精品| 久久国产精品免费视频| 午夜精品久久久久久久白皮肤| 日韩av中文在线| 亚洲精品成人久久久| 亚洲第一页中文字幕| 日韩av手机在线观看| 亚洲国产欧美在线成人app| 美日韩精品免费视频| 久久天天躁狠狠躁老女人| 欧美精品videosex极品1| 色综合亚洲精品激情狠狠| 午夜精品久久久久久久久久久久久| 永久免费精品影视网站| 亚洲精品久久久一区二区三区| 国产精品美女无圣光视频| 亚洲精品成人久久久| 亚洲欧美成人精品| 久久精品国产欧美亚洲人人爽| 91色琪琪电影亚洲精品久久| 国产精品久久久久久婷婷天堂| 亚洲精品视频网上网址在线观看| 18久久久久久| 精品丝袜一区二区三区| 亚洲美女激情视频| 亚洲欧美在线播放| 最近2019中文免费高清视频观看www99| 国产亚洲精品91在线| 久久综合免费视频影院| 国产91在线视频| 中文字幕亚洲一区在线观看| 久久久在线观看| 中文欧美日本在线资源| 成人激情视频在线| 精品动漫一区二区三区| 欧美成人久久久| 久久中文精品视频| 亚洲国产精品成人va在线观看| 疯狂做受xxxx高潮欧美日本| 日韩一区二区在线视频| 中文字幕久久亚洲| 欧美一级免费看| 午夜精品在线视频| 日韩av理论片| 中文字幕精品一区二区精品| 久久九九免费视频| 91精品视频在线| 久久激情五月丁香伊人| 日韩高清中文字幕| 欧美激情区在线播放| 97久久精品人人澡人人爽缅北| 午夜精品福利视频| 亚洲福利在线播放| 亚洲伊人一本大道中文字幕| 55夜色66夜色国产精品视频| 国产有码一区二区| 中文字幕日韩av电影| 中文字幕日本精品| 91人成网站www| 国产+人+亚洲| 亚洲欧美资源在线| 亚洲欧美一区二区三区情侣bbw| 91性高湖久久久久久久久_久久99| 国产美女搞久久| 国产美女扒开尿口久久久| 欧美性猛交xxxx富婆| 国内外成人免费激情在线视频网站| 欧美日产国产成人免费图片| 亚洲午夜精品久久久久久久久久久久| 色老头一区二区三区| 欧美资源在线观看| 中文字幕亚洲色图| 久久亚洲电影天堂| 成人精品视频久久久久| 欧美xxxx综合视频| 欧美日韩亚洲91| 欧美日韩一区二区在线播放| 国产日本欧美在线观看| 国产美女91呻吟求| 91人人爽人人爽人人精88v| 欧美日韩国产成人| 国产午夜精品视频| 亚洲视频精品在线| 日韩视频精品在线| 精品国产一区二区三区久久| 国产一区二区三区在线看| 亚洲专区国产精品| 久久久久久久久国产精品| 国产精品免费一区| 国产精品久久久久不卡| 一区二区在线视频播放| 91麻豆国产语对白在线观看| 91国在线精品国内播放| 海角国产乱辈乱精品视频| 欧美人成在线视频| 国产97在线视频| 亚洲视频一区二区| 久久久久久噜噜噜久久久精品| 中文国产成人精品| 国产一区二区三区视频在线观看| 欧美亚洲在线视频| 精品动漫一区二区三区| 亚洲白拍色综合图区| 日韩在线观看免费高清| 亚洲国产99精品国自产| 欧美国产在线视频| 久久精品视频一| 91精品视频在线播放| 日韩美女免费视频| 日韩av网址在线观看| 国产精品视频999| 国产精品十八以下禁看| 日韩欧美在线中文字幕| 欧美日韩国产中字| 日韩欧美一区二区在线| 91视频88av| 欧美激情奇米色| 亚洲女人天堂视频| 亚洲永久在线观看| 日韩欧美在线字幕| 精品国产一区二区三区久久狼5月| 亚洲xxx视频| 日韩av影院在线观看| 亚洲精品suv精品一区二区| 欧美精品电影免费在线观看| 欧美激情影音先锋| 久久久久久噜噜噜久久久精品| 国产亚洲福利一区| 韩国美女主播一区| 久久亚洲精品小早川怜子66| 国产精品久久久久久久9999| 国产视频精品久久久| 久久中文字幕国产| 亚洲福利视频专区| 在线观看久久久久久| 欧美激情一级欧美精品| 亚洲老司机av| 91久久综合亚洲鲁鲁五月天| 日韩精品免费综合视频在线播放| 欧美插天视频在线播放| 国产精品久久久久久久久久免费| 蜜臀久久99精品久久久无需会员| 狠狠色狠狠色综合日日小说| 欧美裸体xxxx极品少妇| 国产精品视频久久久| 91在线观看免费高清| 亚洲精品久久7777777| 亚洲第一视频网站| 国产精品久久一区主播| 欧美一级视频免费在线观看| 成人淫片在线看| 欧美日韩在线视频观看|