js操作樣式

一,內嵌樣式:

<script>
    var myDiv = document.getElementById("myDiv");

    alert(myDiv.style.width);//100px

    alert(myDiv.style['height']);//100px

    var style=myDiv.style;
    alert(style.backgroundColor);//red

    myDiv.style.backgroundColor='green';//myDiv背景色變為綠色 
</script> 

此時style屬性可以操作,可以通過 ele.style.arr 方式獲取并修改樣式。

注意:

  1. 當獲取類似font-size 屬性時,為避免混淆javascript保留字符 - , 需要轉化為駝峰命名法,改為fontSize;
    2.屬性值放在雙引號中。

二,放在<style></style>中的和外部樣式表:

<style type="text/css">
#myDiv {
    background-color:blue;
    width:100px;
    height:200px;
}
</style>

<div id ="myDiv" style="background-color:red; border:1px solid black;"></div>
<script>
    var myDiv = document.getElementById("myDiv");
    var finalStyle = myDiv.currentStyle ? myDiv.currentStyle : document.defaultView.getComputedStyle(myDiv, null);/*利用判斷是否支持currentStyle(是否為ie)
    來通過不同方法獲取style*/
    alert(finalStyle.backgroundColor);    //"red"
    alert(finalStyle.width);              //"100px"
    alert(finalStyle.height);             //"200px"
</script>

由于表現層與結構層的分離,使用style屬性會無效,對于這種情況,不同瀏覽器的方法不一樣。

1 非ie瀏覽器中,使用document.defaultView對象的getComputedStyle(ele,null/偽類)方法,該方法接受兩個參數,第一個為要考察的元素,第二個則要根據情況,如果只是考察元素本身則為null,如果要 考察偽類,則為響應的偽類。該方法獲取到的為元素應用的最終樣式組合,同樣是類似數組的一個實例。

2 在ie瀏覽器中,對getComputedStyle()方法不支持,但是針對每個標簽元素都有一個近似于style屬性的currentStyle的屬性,且用法和style用法相同。只不過獲取到的樣式范圍不一樣。currenStyle獲取到的和getComputedStyle()方法相接近。

為了在處理時達到兼容,可以根據這兩種不同的處理方式創建一個函數來達到兼容目的,使得不管在那種瀏覽器中,都可以成功獲取樣式。如上圖所示。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,806評論 1 92
  • 什么是事件: 我們可以簡單的把事件理解為瀏覽器的感知系統。比如說:他可以感覺到用戶是否點擊(click)了頁面、鼠...
    張松1366閱讀 6,832評論 1 6
  • 我們首先要明白,我們給頁面添加效果用到的js到底是什么?js其實包含三部分:dom 文檔對象模型 bom 瀏覽...
    一直以來都很好閱讀 817評論 0 0
  • 你用歡笑來掩飾你的悲傷, 夜未央,你早已淚兩行; 人群的喧鬧也遮擋不住你的孤獨, 來來回回走那些沒有盡頭的路。 我...
    星漫閱讀 355評論 1 2
  • 20170727 周四 (1) [拳頭]我不是一個問題,我是一個有待展開的奧秘[拳頭] 昨晚的課堂上,老師慈悲的耐...
    每天都微笑閱讀 449評論 0 0