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

給before和after偽元素設(shè)置js效果的方法

 更新時間:2015年12月04日 09:00:46   投稿:mrr  
本文通過實例給大家介紹給before和after偽元素設(shè)置js效果的方法,對js偽元素相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧

層疊樣式表(CSS)的主要目的是給HTML元素添加樣式,然而,在一些案例中給文檔添加額外的元素是多余的或是不可能的。事實上CSS中有一個特性允許我們添加額外元素而不擾亂文檔本身,這就是“偽元素”。

前面的話

   無法直接給before和after偽元素設(shè)置js效果 

例子說明

  現(xiàn)在需要為(id為box,內(nèi)容為"我是測試內(nèi)容"的div)添加(:before內(nèi)容為"前綴",顏色為紅色的偽類)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="box">我是測試內(nèi)容</div>  <script>    var oBox = document.getElementById('box');  </script>
</body>
</html> 

解決辦法

【方法一】動態(tài)嵌入CSS樣式

  IE8-瀏覽器將<style>標(biāo)簽當(dāng)作特殊的節(jié)點,不允許訪問其子節(jié)點。IE10-瀏覽器支持使用styleSheet.cssText屬性來設(shè)置樣式。兼容寫法如下:

<script>
function loadStyleString(css){
  var style = document.createElement("style");
  style.type = "text/css";
  try{
    style.appendChild(document.createTextNode(css));
  }catch(ex){
    style.styleSheet.cssText = css;
  }
  var head = document.getElementsByTagName('head')[0];
  head.appendChild(style);
}
loadStyleString("#box:before{content:'前綴';color: red;}");
<script> 

【方法二】添加自帶偽類的類名

<style>
  .change:before{content: "前綴";color: red;}
</style> 
<script>
  oBox.className = 'change';
</script> 

  [缺點]此方法無法控制偽元素里面的content屬性的值

【方法三】利用setAttribute實現(xiàn)自定義content內(nèi)容

<style>
  .change:before{content: attr(data-beforeData);color: red;}
</style> 
<script>
  oBox.setAttribute('data-beforeData','前綴');
</script> 

  [注意]此方法只可用setAttribute實現(xiàn),經(jīng)測試用dataset方法無效

【方法四】添加樣式表

  firefox瀏覽器不支持addRule()方法,IE8-瀏覽器不支持insertRule()方法。兼容寫法如下:

<script>
  function insertRule(sheet,ruleKey,ruleValue,index){
    return sheet.insertRule ? sheet.insertRule(ruleKey+ '{' + ruleValue + '}',index) : sheet.addRule(ruleKey,ruleValue,index);
  } 
  insertRule(document.styleSheets[0],'#box:before','content:"前綴";color: red;',0)  
</script> 

  [缺點]該方法必須有內(nèi)部<style>或用<link>鏈接外部樣式,否則若不存在樣式表,則document.styleSheets為空列表,則報錯

【方法五】修改樣式表

  先使用方法四添加空的樣式表,然后獲取新生成的<style>并使用其innerHTML屬性來修改樣式表

<script>
function loadStyleString(css){
  var style = document.createElement("style");
  style.type = "text/css";
  try{
    style.appendChild(document.createTextNode(css));
  }catch(ex){
    style.styleSheet.cssText = css;
  }
  var head = document.getElementsByTagName('head')[0];
  head.appendChild(style);
}
loadStyleString('');
document.head.getElementsByTagName('style')[1].innerHTML = "#oBox:before{color: " + colorValue + ";}";
</script> 

  [注意]只能使用getElementsByTagName('style')[1]的方法,經(jīng)測驗使用stylesheets[1]方法無效

DEMO

    <演示框>點擊下列相應(yīng)屬性值可進(jìn)行演示

相關(guān)文章

  • C#程序員入門學(xué)習(xí)微信小程序的筆記

    C#程序員入門學(xué)習(xí)微信小程序的筆記

    這篇文章主要給大家分享了一位C#程序員入門學(xué)習(xí)微信小程序的筆記,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • js實現(xiàn)點贊按鈕功能的實例代碼

    js實現(xiàn)點贊按鈕功能的實例代碼

    這篇文章主要介紹了js實現(xiàn)點贊按鈕功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的工作或?qū)W習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • javascript比較兩個日期相差天數(shù)的方法

    javascript比較兩個日期相差天數(shù)的方法

    這篇文章主要介紹了javascript比較兩個日期相差天數(shù)的方法,涉及javascript針對日期的轉(zhuǎn)換與數(shù)學(xué)運算相關(guān)技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • 瀏覽器的JavaScript引擎的識別方法

    瀏覽器的JavaScript引擎的識別方法

    識別瀏覽器的JavaScript引擎的方法對PC瀏覽器和移動瀏覽器都可用,其實實現(xiàn)原理就是下面的這段js,感興趣的朋友可以參考下
    2013-10-10
  • Layui數(shù)據(jù)表格判斷編輯輸入的值,是否為我需要的類型詳解

    Layui數(shù)據(jù)表格判斷編輯輸入的值,是否為我需要的類型詳解

    今天小編就為大家分享一篇Layui數(shù)據(jù)表格判斷編輯輸入的值,是否為我需要的類型詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • javascript設(shè)置頁面背景色及背景圖片的方法

    javascript設(shè)置頁面背景色及背景圖片的方法

    這篇文章主要介紹了javascript設(shè)置頁面背景色及背景圖片的方法,涉及JavaScript動態(tài)操作頁面元素屬性的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • 詳解a++和++a的區(qū)別

    詳解a++和++a的區(qū)別

    搞開發(fā)已經(jīng)很久了,一直搞不懂a(chǎn)++和++a到底有所什么不同,后來通過查閱相關(guān)資料總結(jié)出一點規(guī)律,下面小編通過本文給大家介紹
    2017-08-08
  • js獲取Element元素的四種常用方法

    js獲取Element元素的四種常用方法

    本文主要介紹了js獲取Element元素的四種常用方法,通過介紹getElementById、getElementsByClassName、getElementsByTagName和querySelector等方法,幫助讀者了解如何通過不同的方式獲取頁面中的元素,感興趣的可以了解一下
    2023-08-08
  • ES6模塊化的import和export用法方法總結(jié)

    ES6模塊化的import和export用法方法總結(jié)

    這篇文章主要介紹了ES6模塊化的import和export用法方法總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 解析Javascript單例模式概念與實例

    解析Javascript單例模式概念與實例

    本文將介紹Javascript模式中較為常見和實用的模式——單例模式,主要分為概念和實例部分。在介紹實例的同時也會對代碼中額外的知識點進(jìn)行講解。需要的朋友可以看下
    2016-12-12

最新評論