2011-04-25 56 views
1

有什麼方法可以繞過LESS範圍界定嗎?它變得煩人。基本上,我有一個定義背景,邊框等的.text-box。然後,在一個小節中,有一個一次性更改來添加頁邊距:.text-box {margin-top:10px}。現在我無法在該部分中使用.text-box並獲取我的原始框樣式;相反,我所得到的只是保證金。我怎樣才能讓定義更高的定義?我想我可以把它變成一個函數,然後在兩個地方調用這個函數,但是因爲我使用的是LESS,所以我希望減少和KISS。在PHP中,您可以使用/ prefix或C++ using :: prefix來訪問全局名稱空間。LESS問題(範圍和顯式節點名稱)

此外,它似乎不像節點名稱的任何定義工作原型。意思是,我不能聲明它是ul.products,然後使用ul.categories {ul.products}。我必須省略節點名稱才能重新使用它。含義:.categories {.products}。這是一種疏忽/不可能嗎?

感謝

+0

LESS問題比其他問題更好! – coreyward 2011-04-25 19:11:38

+3

更多答案。沒有毫無意義的評論。 :P – 2011-04-25 19:20:53

回答

2

確定,所以讓我們說你有你的mixin定義,例如:

.text-box { 
    background: #eee; 
    border: 1px solid #ccc; 
    color: #333; 
    margin-top: 5px; 
} 

現在要添加屬性或修改它在一些款,然後簡單地做到這一點:

div.content { 
    div.sub_section { 
     .text-box; 
     margin-top: 10px; // this will override 5px defined in the mixin. 
    } 
} 

...這是把你的mixin到位,並添加一些你需要添加的屬性(它將覆蓋mixin本身的任何屬性,但要確保重寫屬性是d在mixin被調用後被定義。

它不是理想的解決方案,因爲它會在輸出css文件中創建兩個聲明(將會有一個來自mixin,後面跟着您在.sub_section中定義的那個),但除此之外,我不知道其他解決方案。不是定義的參數混入..

-

你的第二個問題 - 我想,少不支持的目的範圍有限的定義......如果你真的需要知道某些混入就是要使用特定的標籤,我會這樣處理它:

.ul_products { ... } 
.ul_categories { .ul_products; ... } 

ul.categories { .ul_categories; } 

你也可以定義一個包,並從那裏調用的東西:

​​

我希望我這樣做是正確..?