假設你仍然有希望的主題是一個樣式表(而不是多張作爲cimmanon在評論中指出),並假設在你使用LESS 1.3。 2+,那麼以下代碼通過設置需要主題更改的類的循環來減少重複數量。
請注意,這對Codepen不起作用(它引發了錯誤uncaught throw #
,可能是因爲它們運行的是較早版本的LESS),但您可以通過將代碼放入LESS's compiler來正確編譯。
LESS(基於關閉您Codepen代碼爲演示添加的主題)
//////////////////////////////////////////////////////
// CONSTANTS
@lightColour: #fff;
@darkColour: #000;
@lightBg: #fff;
@darkBg: #000;
@numberOfThemes: 3; //controls theme loop
//////////////////////////////////////////////////////
// MIXINS
//Theme Definitions by parametric mixin numbers (1), (2), etc.
.themeDefs(1) {
@lightColour: #f00;
@darkColour: #fff;
@lightBg: #f00;
@darkBg: #fff;
}
.themeDefs(2) {
//inverse of 1
@lightColour: #fff;
@darkColour: #f00;
@lightBg: #fff;
@darkBg: #f00;
}
.themeDefs(3) {
@lightColour: #cfc;
@darkColour: #363;
@lightBg: #cfc;
@darkBg: #363;
}
.curvy {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
//////////////////////////////////////////////////////
// GENERAL STYLING
* {padding: 0;margin: 0;}
html {text-align: center;}
h2 {padding: 20px 0;}
.box {
.curvy;
color: @lightColour;
background: @darkBg;
display:inline-block; width:10%; padding:20px 5%; margin:0 1% 20px 1%;
}
//////////////////////////////////////////////////////
// THEME BUILDING
.buildThemes(@index) when (@index < @numberOfThemes + 1) {
[email protected]{index} {
.themeDefs(@index);
color: @lightColour;
background: @darkBg;
.box {
color: @darkColour;
background: @lightBg;
}
}
.buildThemes(@index + 1);
}
//stop loop
.buildThemes(@index) {}
//start theme building loop
.buildThemes(1);
CSS輸出(只顯示爲簡潔的環形主題CSS)
.theme-1 {
color: #ff0000;
background: #ffffff;
}
.theme-1 .box {
color: #ffffff;
background: #ff0000;
}
.theme-2 {
color: #ffffff;
background: #ff0000;
}
.theme-2 .box {
color: #ff0000;
background: #ffffff;
}
.theme-3 {
color: #ccffcc;
background: #336633;
}
.theme-3 .box {
color: #336633;
background: #ccffcc;
}
是否有你想讓你的「主題」都在同一個CSS文件中嗎?看起來只要使用每個文件具有一個主題的備用樣式表就會變得非常簡單。 – cimmanon 2013-03-07 16:09:04
嗨cimmanon。如果我只是使用CSS,我會沿着這條路線走下去。 我只是認爲在聲明後可能會有一種簡單的方法來改變實際的變量值,這意味着我只需要少量幾行就可以說出新的變量顏色在「.theme- 2「,然後一切都會改變顏色與這些新的變量值相關聯。儘管感謝您的建議。 – user1814828 2013-03-07 17:44:35
我明白你想要什麼,但你還沒有回答我的問題。爲每個文件創建1個主題將是最簡單的主題化方法,並允許用戶避免下載他們不需要的樣式,因爲他們永遠不會使用除了他們選擇的(或默認)主題之外的其他任何東西。如果每個頁面都有自己的主題(即主題不可配置),那麼使用單獨的樣式表並不合理。 – cimmanon 2013-03-07 17:52:16