我有一個MVC網站,除了特定的設計元素,用一種特定的顏色(比如說藍色)着色以外,它是黑白色的。我做了所有來自CSS的着色。是否可以在運行的mvc網站中編輯css文件?
我想要做的就是不時切換到另一個顏色。問題是,如果我這樣做切換讓加載文檔時從jquery說,一個異步加載元素中的顏色不會改變。
是否有可能從MVC中更改css文件本身,或者是否也有異步加載元素的事件?
我有一個MVC網站,除了特定的設計元素,用一種特定的顏色(比如說藍色)着色以外,它是黑白色的。我做了所有來自CSS的着色。是否可以在運行的mvc網站中編輯css文件?
我想要做的就是不時切換到另一個顏色。問題是,如果我這樣做切換讓加載文檔時從jquery說,一個異步加載元素中的顏色不會改變。
是否有可能從MVC中更改css文件本身,或者是否也有異步加載元素的事件?
把不同的元素放在不同的文件中,然後只包括你關心的那個?例如:
在文件default.css
#myDiv {
color: blue;
}
現在我可以有其他的文件..。讓我們說red.css
。
#myDiv {
color: red !important;
}
現在,在您的主頁,你可以基於任何商業邏輯,你喜歡加載red.css
。以下是一個示例:
<link rel="stylesheet" type="text/css" href="/css/default.css" />
<% if (SomeCondition) { %>
<link rel="stylesheet" type="text/css" href="/css/red.css" />
<% } %>
這實際上不是一個壞主意! :)但不幸的是,這個網站的管理員不能勝任這件事,所以我不能要求她每次切換到新顏色時都寫一個新的CSS。我也猜不出他們將來會使用什麼顏色,所以我不能(或不想)限制他們的選擇。我在想的是管理界面上的一個小型彩色選擇器,當單擊「保存」按鈕時,它會在css中進行更改。 – Tenshiko 2011-03-19 17:47:04
將顏色選擇器值放在數據庫中,然後創建一個「模板」CSS文件。然後做Brant Bobby的建議,除了做一個簡單的字符串替換你的顏色值。現在你已經獲得了MVC根據存儲在別處的顏色值生成的樣式表。 – 2011-03-21 14:40:39
您的顏色多久變化一次?如果更改不經常發生,則可以創建一個操作方法,該方法根據當前時間返回不同的樣式表。
public ActionResult GetCss() {
string stylesheet = GetStylesFromSomewhere();
return Content(stylesheet, "text/css");
}
它不會經常發生。我們每隔一個月說一次。但正如我在上面的評論中所描述的那樣,我不知道他們將來會使用哪種顏色,並且我不能要求siteadmin編寫css。真的不想成爲那樣的人:) – Tenshiko 2011-03-19 17:54:34
我重讀了這個問題,認爲我應該給出一個完全不同的答案。
該CSS主要是聲明性的。這是一個很大的方便。如果你聲明的是這種方式,你不需要關心在新元素上重新應用css,或者重新處理DOM。它發生在「瀏覽器中」。每次發生某種事情(例如添加新元素)時,都必須將新元素強制更改爲新狀態,這不僅不方便,而且會導致大量錯誤。所以不,沒有「異步加載元素」的一般事件,但你不應該尋找一個。
CACHING
具有恆定的CSS文件中的任何網絡環境主要是一個好主意。瀏覽器緩存css,並且可以在每次需要時使用它。如果你改變你的CSS,瀏覽器不會注意到。當然,需要考慮很多設置,但在大多數情況下都是如此。
所以,如果你可以編輯你的css文件,它不會真的很重要,因爲你需要以某種方式告訴瀏覽器注意到這一變化。
有一種技術叫做高速緩存禁用它主要把GET參數的CSS後,如:??
<link href="https://www.famous-cats.com/style/puna.css?v=3" rel="stylesheet" type="text/css" />
瀏覽器認爲,V = 1是從不同的V = 2,雖然你只是引用了同一個文件。所以它會使用不同的GET參數緩存它的每個版本。
好的。
修改文件
但即使你更改文件:這是改變CSS文件本身是一個好主意?如果95%的規則每次都是相同的(所有不是關於那一種顏色的),您可能想要將其分隔在「主」文件中,並且只更改關於顏色的部分,這些部分可以不同文件/內聯html。
關於更改文件的另一件事是,如果您不打算按程序生成新樣式,則應該只寫常量文件並切換它們。
這是lesscss到asp.net的端口。檢查http://lesscss.org/它的功能,它基本上是一個語法略有不同的sass。
好的一點是,你可以使用變量,並從url參數中獲取它的值,所以如果你鏈接style.less?color = fuschia,它只會將名爲「color」的變量設置爲你喜歡的顏色。
少就是乾淨的東西,可以大大減少開發時間。
的解決方法,我建議
只是做着色的CSS不同於主之一:
<link href="https://www.famous-cats.com/style/main.css" rel="stylesheet" type="text/css" />
<link href="https://www.famous-cats.com/style/color.less?color=00FF55" id="colorcss" rel="stylesheet" type="text/css" />
如果你需要改變顏色,只要致電:
document.getElementById('colorcss').href = 'color.less?color=F35741';
(我給鏈接標籤一個id)。
它的工作原理。
深入淺一點,並檢查如何使用顏色變量。你可以在管理員上選擇一種顏色。
另外內聯的CSS不是魔鬼的工作,你可以輕鬆地在剃刀上創建它。如果這只是一些規則,它不會傷害任何人。所以,如果你不多,可以使用內聯css,或用MVC控制器動作(只需將mimetype設置爲text/css,並使用URL參數進行顏色更改/緩存清除)來生成css。
我希望這能回答你的問題。
嗯......聽起來有趣!我會試試這個! – Tenshiko 2012-02-16 10:18:43
如果您自己編輯CSS文件,其他人在更改時瀏覽網站會發生什麼?他們是不是會看到不同的顏色,儘管它可能與他們的活動無關? – drudge 2011-03-17 20:24:18
真的沒關係。這整個事情基本上只是設計。因此,讓我們假設網站的一般高亮顏色從藍色變爲綠色,如果這就是您所說的話,那麼看起來不會是錯誤,因爲所有藍色元素都會切換爲綠色。所以我覺得沒關係。 – Tenshiko 2011-03-19 17:51:14