我有預處理器導入問題。我有供應商的CSS,我想複製功能。不幸的是,我不控制html這種情況..所以基本上我有供應商的css &不同供應商的HTML,我試圖擴展一個CSS規則的功能到另一個。導入並擴展原始CSS?
現在,許多css預處理器的基本概念是擴展規則。
// Vendor
.foo { font-weight: bold; }
.bar { text-color: red; }
// Mine
.bar { .foo }
在上面的例子中,你沒有訪問.foo
或.bar
,但隨着預處理器,你可以從.foo
擴展功能爲.bar
,偉大的工程少/筆/等。問題在於供應商規則只在raw css中定義。
所以說,最明顯的解決方案是有Stylus/Less導入原始的css作爲手寫筆/少。但是,似乎都沒有能夠真正做到這一點。至少我發現了這一點。少似乎不能(@import "foo.css"
指令被忽略)雖然Stylus有一個選項實際包括導入的原始CSS,它似乎並沒有真正處理它。也就是說,它會包含css,但@extend
指令失敗(也許我錯了?)。
我能想到的另一個選項是將.css文件重命名爲預處理器語言擴展。由於我們想讓供應商的東西不在我們的手中,允許正確的版本控制/等,這涉及一個構建過程,它複製目標css文件並將它們重命名爲目標語言擴展,但這很容易出錯。手寫筆立即遇到了語法錯誤,並且少可能一樣容易(因爲不是所有的CSS都是有效的,大部分是,但不是全部)。
那麼..在這方面的任何額外的想法?希望有一個選項,我可能會錯過?也許SCSS處理這個更好?
目前,我發現的是/是不可能的..我覺得唯一的穩定的方法是簡單地將原始的CSS位複製到我的CSS代碼。如果供應商代碼發生變化,我將不得不手動更新,但至少我不會冒着供應商東西發生變化的風險,並且突然間構建過程失敗,因爲供應商推出了一些不受較少/ etc支持的CSS語法。這遠不是好事......但最糟糕的情況是我的CSS看起來很有趣,而且我需要更新。
編輯:
我要去嘗試下SCSS ..我們將看看怎麼回事。在網站上,他們要求所有的CSS(3只?)語法是有效的SCSS
EDIT2:爲清楚。我的問題是,給上面的場景,你做什麼?導入.css文件是不可能的(請參閱下面的註釋!),並且將.css文件重命名爲.less/.stylus反過來可能容易出錯,因爲less不是CSS的完美超集(即由於專有特性)。
!注意!:從那時起,我一直在深入研究解決這個問題的方法,而不是解決這個問題,並且在這個問題上遇到了一打支持票。其中主要討論似乎發生在#issue 1185,更重要的是,查看哪些*(我相信)解決此問題的更新日誌! CHANGELOG 1.4.0 Beta
因此,儘管如此,@import (less) "file.css"
可能是這裏的勝利場景,即使它可能由於測試版狀態而存在一些缺陷。 Yay :)
這裏有問題嗎? – cimmanon 2013-03-16 19:45:45