從 !important 到關于嘆號的 !一切

jopen 12年前發布 | 6K 次閱讀 CSS

!important 的困惑

我的郵箱里有一個 label 是“!important”,當初是取義自 CSS 的 !important, 想借用“!important”的“重要”之義來標注重要郵件。后來就后悔了,由于 !important 這種嘆號前置的格式像極了嘆號作為邏輯非運算符的用法(為啥這句怎么讀怎么像病句),每次用這個 label 的時候,都會有種在說這封郵件其實并不重要的感覺。 這種困惑最終蔓延到寫 CSS 的過程中!終于有一天我被這嘆號折磨得無法忍受了!這 !important 到底是怎么來的!用嘆號表示否定又是怎么來的!

// 常用嘆號好傷神,剛剛打著打著情緒就莫名其妙激動起來了…

對 !important 這種古怪表達方式困惑的人當然不只我一個,stackoverflow上有個人也提了類似的問題:“為什么 CSS 和 C-based (的)語言中嘆號的涵義相反?”他還問道:“除了 CSS,還有什么語言是用嘆號表達肯定而非否定的呢?”(隨后有人提醒他,自然語言就是其中一種…) 回答很有趣,是這樣說的:

在 !important 中,嘆號更像是一個轉義符,和 important 是一體的,而非操作符。它本身并不像你說的那樣帶有肯定的涵義。……選擇用嘆號的原因有可能是因為在非程序語言中,嘆號有獲取注意力的作用。或許將它寫成 important! 或者 ¡important! 更容易理解,只不過 !important 更容易解析,打起來也更方便。

雖然這段解釋很合理,但還是沒法解決 !important 造成混淆的問題。改成 !unimportant 肯定更離譜了(除非你是用 More CSS,謝謝 @Nemo_A 告訴我這么有意思的東西,注意看頁尾的 copyright 信息),有人提議說把 !important 改成 !!important 就可以都說得通了,這想法太天才了,建議 More CSS 可以把這個建議納入下一版。

從 !important 到關于嘆號的 !一切

More CSS 的 !unimportant 用法

// 我不知道怎么過渡了。請大家把這里想像成自然和諧的過渡語句。

帶 著開始的那些感嘆開始尋找嘆號表示 not 的起源,從亞里士多德到布爾到丹尼斯里奇,都沒什么有趣的發現。但是考據的樂趣并不是找到問題的終極答案,而是過程中發現的各種花邊消息(這其實是一直以 來在沒有找到答案的時候為了安慰自己說的話)。嘆號的故事還是蠻有意思的。

關于嘆號的 !一切