茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JavaScript改變CSS樣式的方法匯總
    來源:易賢網(wǎng) 閱讀:1587 次 日期:2015-05-11 14:41:54
    溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript改變CSS樣式的方法匯總”,方便廣大網(wǎng)友查閱!

    avaScript修改CSS有4種方法:1.修改節(jié)點(diǎn)style(內(nèi)聯(lián)樣式);2.改變節(jié)點(diǎn)class或id;3.寫入新的css;4.替換頁面中的樣式表。今天主要給大家介紹下前2種,因?yàn)楹髢煞N個人不是很推薦大家使用

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

    JavaScript修改CSS有4種方法:

    修改節(jié)點(diǎn)style(內(nèi)聯(lián)樣式);

    改變節(jié)點(diǎn)class或id;

    寫入新的css;

    替換頁面中的樣式表。

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

    后面還會說說如何獲取元素的真實(shí)樣式和一個表單中的注意事項(xiàng)。

    1、修改節(jié)點(diǎn)style(內(nèi)聯(lián)樣式)

    這種方法權(quán)重是最高的,直接寫在節(jié)點(diǎn)的style屬性上,他會覆蓋其他方法設(shè)置的樣式。使用方法很簡單:

    var element = document.getElementById("test");

    element.style.display = "none" //讓元素隱藏

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

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

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

    2、更改class、id

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

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

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

    .redColor{

    color: red;

    }

    .yellowBack{

    background: yellow;

    }

    element.className = "redColor";//設(shè)置class

    element.className += " yellowBack";//增加class

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

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

    //刪除class

    function removeClass(element,classRomove){

    var classNames = " "+element.className+" ";

    classNames = classNames .replace(" "+classRomove+" ", " ");

    //String.trim(classNames);

    element.className = classNames;

    }

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

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

    3、獲取真實(shí)樣式

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

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

    其實(shí)微軟和W3C都提供了相應(yīng)的方法,我們只需要進(jìn)行一下封裝就可以用了:

    //獲取元素樣式

    function getRealStyle(element,styleName){

    var realStyle = null;

    if(element.currentStyle){

    realStyle = element.currentStyle[styleName];//IE

    }else if(window.getComputedStyle){

    realStyle=window.getComputedStyle(element,null)[styleName];//W3C

    }

    return realStyle;

    }

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

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

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

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

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

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

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目
    易賢網(wǎng)手機(jī)網(wǎng)站地址:JavaScript改變CSS樣式的方法匯總
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)