1. 程式人生 > >用js動態生成css樣式表

用js動態生成css樣式表

    有時候我們需要利用js來動態生成頁面上style標籤中的css程式碼,方法很直接,就是直接建立一個style元素,然後設定style元素裡面的css程式碼,最後把它插入到head元素中。但有些相容性問題我們需要解決。首先在符合w3c標準的瀏覽器中我們只需要把要插入的css程式碼作為一個文字節點插入到style元素中即可,而在IE中則需要利用style元素的styleSheet.cssText來解決。還需要注意的就是在有些版本IE中一個頁面上style標籤數量是有限制的,如果超過了會報錯,需要考慮這點。

下面直接放上程式碼,看註釋說明。

複製程式碼
function addCSS(cssText){
    
var style = document.createElement('style'), //建立一個style元素 head = document.head || document.getElementsByTagName('head')[0]; //獲取head元素 style.type = 'text/css'; //這裡必須顯示設定style元素的type屬性為text/css,否則在ie中不起作用 if(style.styleSheet){ //IE var func = function(){ try{ //防止IE中stylesheet數量超過限制而發生錯誤
style.styleSheet.cssText = cssText; }catch(e){ } } //如果當前styleSheet還不能用,則放到非同步中則行 if(style.styleSheet.disabled){ setTimeout(func,10); }else{ func(); } }else{ //w3c //w3c瀏覽器中只要建立文字節點插入到style元素中就行了
var textNode = document.createTextNode(cssText); style.appendChild(textNode); } head.appendChild(style); //把建立的style元素插入到head中 } //使用 addCSS('#demo{ height: 30px; background:#f00;}');
複製程式碼

當然這只是一個最基本的演示方法,實際運用中還需進行完善,比如把每次生成的css程式碼都插入到一個style元素中,這樣在IE中就不會發生stylesheet數量超出限制的錯誤了。

相關推薦

js動態生成css樣式

    有時候我們需要利用js來動態生成頁面上style標籤中的css程式碼,方法很直接,就是直接建立一個style元素,然後設定style元素裡面的css程式碼,最後把它插入到head元素中。但有些相容性問題我們需要解決。首先在符合w3c標準的瀏覽器中我們只需要把要插入的css程式碼作為一個文字節點插入到

js動態改變css樣式

動態改變頁面元素樣式:使用getElement系列方法訪問元素。改變樣式屬性:style屬性;className屬性。<!DOCTYPE html> <html> <head> <meta charset="UTF-8">

JS 對html標簽的屬性的幹預以及JSCSS 樣式屬性的幹預

inpu cti doc tel tex ttext button abcd element -任何標簽的任何屬性都可以修改! -HTML裏是怎麽寫, JS就怎麽寫 以下是一段js 作用於 css 的 href的 代碼 <link id="l1"

js動態改變css偽類樣式

  js動態改變css偽類樣式   首先我們來看下頁面上需要實現的基本效果,如下圖所示: 因此我們可以使用如下js程式碼來試試看,是否能使用js改變偽類?如下程式碼所示:   $(function() { $('.listnav li'

js動態生成form單並提交

在提交json資料時,可能會出後臺無法解析資料的bug,碰到這個不要怕,在提交資料前用js轉一下json就好了,下面我寫的程式碼裡有轉json的程式碼,如果只是傳單個數據,就沒必要寫成json格式了。 $("#exceldown").click(function() {

如何用JavaScript動態建立或增加CSS樣式

    1。簡單的方法,不管不顧,直接這樣就可以: document.createStyleSheet().cssText = '標籤{color:red;' + // 這個註

JS動態生成單,並新增行雙擊事件

//獲取某一出庫型別某日期所有出庫單 累計金額列表function getOutSheetAmtList(){        var hosnum=$('#hosnum').val();    var sdate=$('#sdate').val();//記賬日期 始    var edate=$('#eda

2017-05-17 js動態生成輪播圖小圓點

輪播圖 鼠標 borde images author eight 復習 innerhtml pad 從今天開始,把自己做的筆記轉移到博客園: 今晚復習了一下動態創建輪播圖小圓點做了一下小的筆記: 1 <!DOCTYPE html> 2 <html l

CSS樣式

標題 百分比 比較 對齊方式 nal 表示 滾動條 pad 相關 CSS樣式表的樣式主要可以分為大小,背景,字體,對齊方式,邊界邊框,列表方塊,格式布局等。 元素的大小: #div1{ width:300px; height:100

jQuery動態改變css樣式

過時 css樣式 劃過 jquery css 類方法 col 事件 log jQuery提供的事件類方法 - hover()。值得註意的是,hover()方法需要定義兩個函數,一個是鼠標劃過時;另一個是鼠標劃過後。$("#61dh a").css(‘color‘,‘#123

久未更 ~ 五之 —— 引入外部CSS樣式 小節

col div ... fun class utf-8 css樣式 splay date > > > > > 久未更 系列一:在html中引入外部css樣式表 1 //引入外部css樣式表 2 //<lilnk&

css樣式--樣式分類

head 附加 鏈接 內嵌 css樣式 href nbsp tex itl 樣式表分類 1、內聯式。寫在body裏。控制精確,可重復性差。 <body> <div style="color:#90F">更好發揮的返回結果還

css樣式中的樣式覆蓋順序

精確 一個 avi 樣式 ren code spartan tor 怎樣 原文:css樣式表中的樣式覆蓋順序 有時候在寫CSS的過程中,某些限制總是不起作用,這就涉及了CSS樣式覆蓋的問題,如下 <!DOCTYPE html> <html

如果在一個標簽上兩類並用,css樣式中引用時,兩個類必須寫在一起,不能有空格。

nbsp clas div 樣式表 ext style borde 引用 order 例: <html>   <style type="text/css">     .mui-table-view-cell.mui-collapse{      bo

CSS樣式(一)

縮進 刪除 idt 表示 wid 例如 精確 優點 mage 在HTML中為各標簽加上樣式有內聯、內嵌和外部樣式表三種添加方式。內聯的是直接在標簽內添加style="樣式"即可;內嵌的是直接嵌在網頁內,在<head></head>內加入&

CSS樣式概述---運維筆記

相同 內容 因此 id選擇器 對象 內部 直接 css 註意事項 CSS是一種標記語言,因此不需要編譯,可以由瀏覽器直接執行。 樣式表分為內部樣式表與外部樣式表,由樣式規則組成,一個樣式的基本語法包括三部分:選擇器,屬性,屬性值。 選擇器:表示修飾對象,包括標簽選擇器,類選

【2018-01-28】HTML-css樣式分類、選擇器

set html span ima meta class選擇器 優先 sheet har 樣式表,css:層疊式樣式表style後綴名:css 分類:內聯:寫在標記的屬性位置,優先級最高,重用性最差內嵌:寫在頁面的head中,優先級第二,重用性一般外部:寫在一個以css結尾

更新瀏覽器CSS樣式

stack target -s get sheet style overflow 樣式 pan 例: <link rel="stylesheet" href="css/c1.css?v=1" type="text/css"> ?v=1 https:/

JS設置CSS樣式的幾種方式

shee node eight 保留 tno strong tex light 樣式操作 1. 直接設置style的屬性 某些情況用這個設置 !important值無效 如果屬性有‘-‘號,就寫成駝峰的形式(如textAlign) 如果想保留 - 號,就中括號的形式

Android動態生成按鈕樣式

Android GradientDrawable ColorStateList 動態設置樣式 動態生成按鈕樣式 使用: int borderColor = Color.parseColor("#2E3135"); int bgColor = Color.parseColor("