欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS如何設(shè)置元素樣式的方法示例

 更新時(shí)間:2017年08月28日 16:29:27   作者:璿而不華  
本篇文章主要介紹了JS如何設(shè)置元素樣式的方法示例,主要介紹了三種方法,具有一定的參考價(jià)值,有興趣的可以了解一下

一看到這個(gè)標(biāo)題,大家可能首先想到的就是使用“[元素].style.[CSS屬性名] = [屬性值]”這樣的套路去設(shè)置元素樣式,但實(shí)際上,我們其實(shí)還有其他方式可以選擇。

接下來(lái),我將詳細(xì)介紹三種設(shè)置元素樣式的方式。

一、style

這個(gè)其實(shí)就是我們所熟知的方式,舉個(gè)例子~~

<div id="box"></div>
var box = document.getElementById("box");
box.style.width = '100px';
box.style.height = '100px';
box.style.backgroundColor = "#f00";

顯示效果:

這種方式看似簡(jiǎn)單粗暴,但寫(xiě)法過(guò)于繁冗,尤其是在需要添加很多樣式時(shí)尤為突出。并且需要注意的是,對(duì)于使用短劃線的CSS屬性名,必須將其轉(zhuǎn)換成駝峰大小寫(xiě)形式。(如示例中的backgroundColor)

二、style.cssText

這種方式相對(duì)于上面方法更為簡(jiǎn)潔,更像是直接在元素上寫(xiě)CSS:

[元素].style.cssText = [CSS樣式];

例如:

box.style.cssText = 'width: 200px; height: 200px; border: 1px solid #f00;';

確實(shí),寫(xiě)法上很方便。

但是,缺點(diǎn)是后面同樣通過(guò)這種方式添加的樣式會(huì)覆蓋之前通過(guò)style特性指定的樣式。

同樣還是上面的例子,只不過(guò)是將兩段JS寫(xiě)在一塊:

var box = document.getElementById("box");
box.style.width = '100px';
box.style.height = '100px';
box.style.backgroundColor = "#f00";
box.style.cssText = 'width: 200px; height: 200px; border: 1px solid #f00;';

如果按照層疊樣式表的特性,上面定義的紅色的背景顏色應(yīng)該還存在,然而實(shí)際上,下面通過(guò)style.cssText方式定義的樣式會(huì)將style(包括style.cssText)方式添加的樣式全部重寫(xiě)。所以,這個(gè)例子最終表現(xiàn)結(jié)果與上面只有一句時(shí)的效果是一樣的:

最后注意下兼容性,IE8及更早版本均不支持cssText。

三、insertRule()

這個(gè)用法相對(duì)上面兩種方法都較為復(fù)雜一些:

[sheet].insertRule([CSS樣式],指定位置)

[sheet]表示某個(gè)樣式表,它可以通過(guò)document.styleSheets來(lái)獲得。那么,document.styleSheets又是什么呢? 說(shuō)得簡(jiǎn)單一點(diǎn)就是應(yīng)用在文檔中的所有樣式表,包括通過(guò)link標(biāo)簽引入的樣式和style標(biāo)簽定義的樣式。如果理解上還是有點(diǎn)困難,那么我們還是放個(gè)實(shí)例吧~~

首先頭部引入樣式表:

<link rel="stylesheet" type="text/css" href="css/index.css" rel="external nofollow" />

當(dāng)然,這個(gè)樣式表得真實(shí)存在,就算里面什么樣式都不寫(xiě)也沒(méi)關(guān)系。也可以直接用style標(biāo)簽,內(nèi)容為空也不要緊。

然后用JS獲取這個(gè)樣式表:

var sheet = document.styleSheets[0];

最后我們就可以給這個(gè)樣式表中添加樣式了:

sheet.insertRule('#box{width: 300px; height: 300px; background-color: #0f0;}',0);

如果是在上面所有例子的基礎(chǔ)上添加的這段代碼,那么顯示結(jié)果會(huì)是這樣的:

大小還是200*200大小,背景顏色是綠色,說(shuō)明通過(guò)style.cssText所設(shè)置的寬高樣式把通過(guò)insertRule()設(shè)置的樣式覆蓋了,原因很簡(jiǎn)單,style(包括style.cssText)方式設(shè)置的樣式屬于行內(nèi)樣式,自然要比通過(guò)insertRule()設(shè)置的樣式優(yōu)先級(jí)更高咯~~

那么,示例當(dāng)中insertRule()的第二個(gè)參數(shù)0又是指的什么呢?

它指的是我們需要添加CSS代碼的位置,所以參數(shù)0就代表的是該樣式表的最開(kāi)始位置。

例如,我們先給樣式表中手動(dòng)添加一段樣式(以下例子與上述例子無(wú)關(guān)):

<style>
  #box{ width: 100px; height: 100px;}
</style>
var sheet = document.styleSheets[0];
sheet.insertRule('#box{width: 300px; height: 300px; background-color: #0f0;}',0);

以上執(zhí)行結(jié)果就是,寬高100*100的綠色盒子:

如果將insertRule()中的第二個(gè)參數(shù)改為1,那么通過(guò)JS添加的這段CSS代碼相當(dāng)于添加到了#box{ width: 100px; height: 100px;}的后面,類似下面這樣:

<style>
  #box{ width: 100px; height: 100px;}
  #box{ width: 300px; height: 300px; background-color: #0f0;}
</style>

顯示結(jié)果:

同樣需要注意的是,insertRule()不兼容IE8及更早版本,但可以使用addRule()替代,語(yǔ)法稍微有點(diǎn)不同,上面例子這樣寫(xiě):

復(fù)制代碼 代碼如下:

sheet.addRule('#box','width: 300px; height: 300px; background-color: #0f0;',0);

第一個(gè)參數(shù)代表元素,第二個(gè)參數(shù)代表CSS樣式,第三個(gè)參數(shù)代表插入位置,前兩個(gè)參數(shù)必選,最后一個(gè)可選,不填則默認(rèn)為0。

結(jié)束語(yǔ):瀏覽器兼容性問(wèn)題對(duì)于前端開(kāi)發(fā)者來(lái)說(shuō)一直是個(gè)很頭疼的問(wèn)題,很多問(wèn)題也是主要集中在IE上,只希望可惡的IE早日退出歷史舞臺(tái)吧!希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS實(shí)現(xiàn)圖片放大縮小的方法

    JS實(shí)現(xiàn)圖片放大縮小的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)圖片放大縮小的方法,結(jié)合實(shí)例形式分析了javascript動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,需要的朋友可以參考下
    2017-02-02
  • JavaScript使用setTimeout實(shí)現(xiàn)倒計(jì)時(shí)效果

    JavaScript使用setTimeout實(shí)現(xiàn)倒計(jì)時(shí)效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript使用setTimeout實(shí)現(xiàn)倒計(jì)時(shí)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 微信小程序Getuserinfo解決方案圖解

    微信小程序Getuserinfo解決方案圖解

    本文通過(guò)圖文并茂的形式給大家介紹了微信小程序Getuserinfo解決方案,需要的朋友可以參考下
    2018-08-08
  • 詳解webpack進(jìn)階之loader篇

    詳解webpack進(jìn)階之loader篇

    本篇文章主要介紹了詳解webpack進(jìn)階之loader篇,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 微信小程序分包的超詳細(xì)步驟

    微信小程序分包的超詳細(xì)步驟

    分包指的是把一個(gè)完整的小程序項(xiàng)目,按照需求劃分為不同的子包,在構(gòu)建時(shí)打包成不同的分包,用戶在使用時(shí)按需進(jìn)行加載,下面這篇文章主要給大家介紹了關(guān)于微信小程序分包的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 淺析JavaScript函數(shù)的調(diào)用模式

    淺析JavaScript函數(shù)的調(diào)用模式

    這篇文章主要為大家詳細(xì)介紹了JavaScript函數(shù)的調(diào)用模式,包括方法調(diào)用模式,構(gòu)造器調(diào)用模式,apply/call調(diào)用模式,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 用javascript讀取xml文件讀取節(jié)點(diǎn)數(shù)據(jù)

    用javascript讀取xml文件讀取節(jié)點(diǎn)數(shù)據(jù)

    這篇文章主要介紹了用javascript讀取xml文件讀取節(jié)點(diǎn)數(shù)據(jù)的具體實(shí)現(xiàn),需要的朋友可以參考下
    2014-08-08
  • layer.msg()去掉默認(rèn)時(shí)間,實(shí)現(xiàn)手動(dòng)關(guān)閉的方法

    layer.msg()去掉默認(rèn)時(shí)間,實(shí)現(xiàn)手動(dòng)關(guān)閉的方法

    今天小編就為大家分享一篇layer.msg()去掉默認(rèn)時(shí)間,實(shí)現(xiàn)手動(dòng)關(guān)閉的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • 詳解js刪除數(shù)組中的指定元素

    詳解js刪除數(shù)組中的指定元素

    在本篇文章中我們給大家分享了js刪除數(shù)組中的指定元素的詳實(shí)示例方法,有需要的朋友們學(xué)習(xí)下
    2018-10-10
  • 讓AJAX不依賴后端接口實(shí)現(xiàn)方案

    讓AJAX不依賴后端接口實(shí)現(xiàn)方案

    網(wǎng)頁(yè)中的ajax請(qǐng)求越來(lái)越多,或者應(yīng)用開(kāi)始就一直使用ajax與后端進(jìn)行數(shù)據(jù)交換,本文將詳細(xì)介紹,需要的朋友可以參考下
    2012-12-12

最新評(píng)論