从 !important 到关于叹号的 !一切

!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 可以把这个建议纳入下一版。

More CSS

More CSS 的 !unimportant 用法

// 我不知道怎么过渡了。请大家把这里想像成自然和谐的过渡语句。

带着开始的那些感叹开始寻找叹号表示 not 的起源,从亚里士多德到布尔到丹尼斯里奇,都没什么有趣的发现。但是考据的乐趣并不是找到问题的终极答案,而是过程中发现的各种花边消息(这其实是一直以来在没有找到答案的时候为了安慰自己说的话)。叹号的故事还是蛮有意思的。

关于叹号的 !一切

  • ! 的起源:一种说法是说来源于拉丁语中对愉悦的感叹(io),”i”写到”o”的上面。
  • ! 可以念作 “Bang”,因为漫画中经常使用对话泡泡里一个 ! 来表示枪声。
  • 最早的打字机键盘中并没有叹号。叹号的打法是先打一个句点“.”,再退回去,补打一撇“’”,拼成一个“!”。叹号出现在打字机键盘上是在 1970s,大约是 QWERTY 键盘发明的一个世纪之后。
  • 含有叹号的地名:
    • 魁北克有一个地名叫 Saint-Louis-du-Ha! Ha!
    • 另外魁北克还有两个海湾和一条河的名字是以 ha! ha! 结尾的。
    • 英国有一个小镇叫 Westward Ho!,取名自 Charles Kingsley 的小说 Westward Ho!
    • 美国哈密尔顿 (Hamilton) 在1986年为了宣传改名为 Hamilton!

      Saint-Louis-du-Ha! Ha!

      连路牌也成为了景点

  • 雅虎 (Yahoo!) 之所以在 Yahoo 后面加了一个叹号,是因为 Yahoo 已经被 EBSCO 注册了,加一个叹号在后面实属无奈之举
  • New York Times 评论专栏编辑 David Shipley 和 Hyperion Books 的主编 Will Schwalbe 合著了一本电子邮件撰写指南,名字大概叫做 “Send: The Essential guide to Email for Office and Home“。书中指出电子邮件撰写中,使用叹号可以更好地表达期待和友好。比如 “Thanks!!!” 会比 “Thanks.” 更友好。
  • F. Scott Fitzgerald(《了不起的盖茨比》作者)反对使用叹号。他认为用叹号就好比笑自己讲的笑话一样。// 谁去翻翻《了不起的盖茨比》,里面真的没叹号吗?

无法控制地跑题

Cut out all those exclamation points. An exclamation point is like laughing at your own jokes.

— F. Scott Fitzgerald

// 要是我,会更喜欢这样说:

Cut out all those exclamation points! An exclamation point is like laughing at your own jokes!

— F. Scott Fitzgerald!

最后,贴个两年前关于叹号的笑话吧(其实通篇没有一个叹号出现):

世纪难题:P的阶乘等于NP

  • 路人

    MORECSS可以放到哥德堡里去。。。

    • Yuesong Li

      哥德堡??

  • kino0629

    最后一个笑话木有看懂= =

  • Zhiqiang ZHANG

    这 !important 到底是怎么来的? 通篇看下来没看到答案

  • Redswallow Hong

    咆哮教主千秋万代!!!!一统江湖!!!!!!

  • Justin Chen

    好蛋疼

  • http://fireyy.com fireyy

    把感叹号理解为 强调

  • http://twitter.com/wzyboy Sascha Weaver

    不仔细看那个 MoreCSS 的 © 我还真以为是有这东西呢,还想去点那个 Download More.js 呢……

  • sswv

    有关叹号的 morse code,你也可以考据一下。我前几天在练习拍电报时注意到了这个问题,并调研了其中一些纠结的历史。

  • http://twitter.com/jlzm597 黄晨帆

    谁能告诉我页尾的
    copyright 信息在哪?

    • http://cyrilis.com/ Cyr1l

      是指 more css 页面的最后的copyright信息 
      © April 1st 2012  。

  • Biohu

    P的阶乘等于NP
    这个果然内涵。。。

  • Phx

    P!=NP, 表达的是P不等于NP. 这里的!是与=结合, 不等于的意思, (P)(!=)(NP). 而最后一个笑话的笑点在于…(P!)(=)(NP)….

  • Jacques R. GAO

    最後那個…太神了…

  • Tianji

    从来没用过css的这个feature。。。。。

  • http://twitter.com/hengwow 王恒

    看m67这头像,莫非你俩!在一起了?

    • http://localhost-8080.com i404

      我回国了,改天一起吃饭的时候再八卦吧

  • Hitsugi min

    hahaha!!

  • daijie

    了不起的比尔盖茨

  • 七七

    囧!

  • http://www.facebook.com/yuting.cui.9 Yuting Cui

    话说,很多编程语言里用!表示not是因为万恶的c,然后c用!是因为b…然后b用!是因为Ken Thompson用的编译器是tmg,而tmg里表示not的是~…但是tmg的not是按位not,而b语言里还需要一个逻辑not。再然后就是个人猜测了,因为pdp-7的ksr-33键盘上第一行第一个就是!,估计Ken Thompson同学就是直接按顺序选的。具体的原因有哪位在google工作的同学帮忙问问Ken Thompson吧…

  • meepo

    学习了,哈哈

  • http://frantic1048.com/ Frantic1048

    在CSS里一直把!important看成是 unimportant,然后这属性自然就会被放到最后渲染。这样记倒不容易乱…

  • yefllower

    大概翻了一下书架上的英文版, 还真的没有出现感叹号耶. 不是你提醒我都没注意过
    就是他们在酒馆吵架到激烈的时候都, 就是人物自己说的话里都没有出现过感叹号,但是那种剑拔弩张的气氛却明明白白, 太神了… 不过倒是有的地方(比如有段大家一起吐槽天气太热)人物对白里是有出现感叹号的”Hot!Hot!”这样… (p.s.仰慕~)

  • code monkey

    [!important]=css hack?