2015-08-30 24 views
0

我有一個在頁面加載後運行下面的代碼:的JavaScript加載CSS,但保持當前的風格

function prepare_bootstrap() 
{ 
    console.log("Preparing bootstrap..."); 
    var items = document.body.getElementsByTagName("*"); 
    for (var i = items.length; i--;) 
    { 
     items[i].style.cssText = '!important'; 
    } 


    var style1 = document.createElement("link"); 
    style1.rel = "stylesheet"; 
    style1.href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"; 
    document.body.appendChild(style1); 

    var style2 = document.createElement("link"); 
    style2.rel = "stylesheet"; 
    style2.href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css"; 
    document.body.appendChild(style2); 

    var script = document.createElement("script"); 
    script.src = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"; 
    script.onload = script.onreadystatechange = function() 
    { 
     if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") 
     { 
      prepare_bootstrapdialog(); 
     } 
    }; 
    document.body.appendChild(script); 
} 

我加載引導,允許格式良好的彈出窗口。 但是,引導程序會覆蓋幾乎所有內容,導致頁面顯得雜亂無章。 我試着讓每一種風格都很重要,但說實話,我不知道我在做什麼。

有沒有什麼辦法讓CSS不覆蓋以前的CSS? 謝謝!

編輯:如前所述,不可能首先加載引導,因爲JavaScript是書籤的一部分。

+1

首先加載引導,然後加載你的樣式 – slashsharp

+1

你完全誤解'!important'。 – SLaks

+0

嘗試http://getbootstrap.com/customize/並且不要使用'!important'! – mwl

回答

0

已閱讀此:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style#A_scoped_stylesheet

雖然只能在某些瀏覽器中工作,所以不適用於面向公衆的網站。做到這一點的最好方法就是不僅僅包括bootstrap的全部內容,而是挑選出需要的部分並使用它們。你可以自定義建立引導的位置:

http://getbootstrap.com/customize/

你真的不應該只是加載你不積極使用CSS樣式。如果遇到樣式問題,這樣做會爲您創建更多的調試工作,也意味着您可能會浪費帶寬。

0

您應該加載引導樣式表第一,這樣,任何樣式表後,該鏈接將覆蓋引導的

(這是利用Ç SS的cascading部分)


https://stackoverflow.com/a/964343/4206206

+0

是的,但我不能。 JavaScript必須在頁面加載後運行。 (它是書籤的一部分) –