iT邦幫忙

0

CSS/LESS: 如何改變element.style

以下的div可以用#id001.class001來選定:
<div id="id001" class="class001" style="margin: 0px auto">
請問要如何以LESS來將style改為 margin: 0px; 嗎?

1 個回答

10
wordsmith
iT邦高手 1 級 ‧ 2013-08-01 18:42:16
最佳解答

說的less是指這個嗎?http://lesscss.org/

如果是的話,那它和CSS選取的原則應該沒什麼兩樣吧。

less是透過事先編譯的方式,將less的code轉成css的code,所以一樣在less的寫法中,定義

#id001.class001 {margin:0 !important}

利用important的權重,覆寫inline的權重,應該就沒問題了。

看更多先前的回應...收起先前的回應...
bizpro iT邦大師 1 級 ‧ 2013-08-01 21:00:20 檢舉

感謝回答,

是的, 是lesscss.org, 可以用CSS的寫法來看LESS, 但這樣做就少了LESS的好處了.

您的答案我用過, 只是我想避開使用!important, 看能不能直接選到element.style, 如果可以避開使用!important最好.

fillano iT邦超人 1 級 ‧ 2013-08-02 07:19:04 檢舉

所以您是希望可以用css修改html已經有的inline style,而不用去動它?您的需求是什麼呢?

bizpro iT邦大師 1 級 ‧ 2013-08-02 10:09:17 檢舉

用!important可以解決問題,但可以直接選到element.style嗎?

fillano iT邦超人 1 級 ‧ 2013-08-02 13:14:58 檢舉

應該沒辦法...這超過less設計的目的,而且element.style會讓css比較難管理

fillano iT邦超人 1 級 ‧ 2013-08-02 13:25:52 檢舉

另外,less只產生css而已,並不是做query

wordsmith iT邦高手 1 級 ‧ 2013-08-02 13:44:49 檢舉

CSS的權重樣式分成四級:
A(行內),B(id),C(class),D(元素)

權重的比較方式是由A>D,一個元素有A定義CSS樣式時(也就是行內樣式), 後面再怎麼加權重也比不過,除非在同一行的style再加樣式在其後。

在這種情況下,css的世界中,只有!important可以覆蓋過這個設定。

當然,如果可以用JavaScript的話,直接改寫掉style的內容即可。

其實我不太理解你說「用CSS的寫法來看LESS, 但這樣做就少了LESS的好處」的意思是什麼,還有「選到element.style」這個聽起來很像是用JS在取elm,但除非像JS動態改寫Style,否則LESS一樣是CSS,一樣用CSS 的selector的原則,CSS的權重也不會因為LESS而改變。

所以我想也許你可以再說明一下你想怎麼用LESS。

當然也有可能我誤解你想做的事,或是LESS還有我不知道的用法,那就請bizpro兄再多指教。

bizpro iT邦大師 1 級 ‧ 2013-08-02 14:18:53 檢舉

感謝指教, 我只是想知道, 可不可以不用!important來改變inline style. 的確只有!important才能改掉inline style.

LESS可以使用公變數, 私變數, 階層, 運算,條件,...等, 這是直接寫CSS所沒有的. 當然, LESS必需compile成CSS, 最終還是必需用!important來改寫inline style.

ted99tw iT邦高手 1 級 ‧ 2013-08-02 14:54:01 檢舉

bizpro提到:
LESS可以使用公變數, 私變數, 階層, 運算,條件,...等

Natural number可以使用公因數, 公倍數, 階層, 運算,條件,...等

我要發表回答

立即登入回答