读者 Kartlos 通过电子邮件向我推荐了伟大的 Snook 先生 几年前写的一篇有趣文章。 我之前好像没见过,而且它确实是一篇“CSS 技巧”,所以我决定分享一下。
想法是您可以在 HTML 中使用 unicode 字符(读作:花哨符号)作为类名,甚至可以使用这些相同的字符编写 CSS 选择器。
<div class="♫">
A.A. Bondy
<em>I Can See The Pines Are Dancing</em>
</div>
.♫ {
display: block;
background: #eee;
padding: 5px;
}
很酷吧? 我认为我上面的例子也非常语义化,因为带有音符类名的 div 标记了音乐家和歌曲。 也许更语义化,因为音符比任何英语单词更能代表音乐。
我创建了一个 超级简单的演示页面 来展示它的工作原理。 哦,是的 - 它在 IE6™ 中有效 - 并且通过了验证™
但是…
一件有趣的事情? 查看该页面的源代码。 我使用 PHP 包含了所有演示的页眉和页脚,由于该页面的字符编码(?),PHP 无法运行它,它只是作为文本存在。

这不对劲。

Coda 会先发出警告。
奇怪吧? 如果你知道如何双向工作,请告诉我。
其他用途
Jonathan 在他最初的文章中提出了一种针对盒子角的方案。
<div class="□">
<div class="┌">
<div class="┐">
<div class="└">
<div class="┘">
content
</div>
</div>
</div>
</div>
还记得几年前我们大多数人都在使用嵌套的 div 和图像来实现圆角吗? 角符号很巧妙,但我可以看到<div class="□">今天被用作“容器”或“盒子”类型的类,或者也许最重要的是,用于 清除浮动。
我在 Forrst 上发布了一个关于这个的小代码片段(抱歉,我知道大多数人还没有在那里创建帐户),一位名叫 Aaron 的用户提出了一个有趣的想法:使用颠倒的文字来制造麻烦!id='ɹǝpɐǝɥ', id='ɹǝddɐɹʍ', id='ɹǝʇooɟ'
这太有趣了!
非常有趣,并且是一种相当语义化的使用类名的方法。
Chris,这是一个非常棒的技巧。 不过我身体里的每个编程细胞都在尖叫着“不要在生产环境中使用它”哈哈。
关于 PHP,我在演示页面的源代码中没有看到任何标签 - http://pastebin.com/1hG0Xdzu
酷主意! 我没有看到 PHP 标签有任何问题,而且我一直使用 UTF-8。
例如
http://hatboats.se/unicode/
http://hatboats.se/unicode/index.phps
哈哈,太棒了! 我可能会尝试一下,在我的博客的“链接之爱”部分使用一个爱心 lol
很有趣,我非常喜欢使用“□”作为容器的想法。
箭头,⇇ 可以用于浮动,⅓,⅔ 等对于网格也很有用
使用 ⇇ 用于浮动类似于使用“floatleft”作为类名…
这太酷了,我喜欢盒子角的方法。 不知道当蒂姆·伯纳斯·李谈论语义网络时,他是否想到了这一点 - 用于 DRM 加密文件的音符。
作为一个长期参与语义网络的程序员,我可以相当自信地说,UTF-8 类名 - 虽然很酷 - 并不完全是 timbl 所说的语义网络。
在赌场/在线博彩网站上使用 ♠ ♣ ♥ ♦ 会很酷。 只需要找到一个想要使用的人!
虽然这可能不是我每天都会使用的东西,但这确实让我的一天变得美好。 太有趣了,我真没想到会考虑使用这些字符。
有些事情简直令人沮丧,而另一些事情则令人兴奋!
还不确定这属于哪种 lol
Chris,
所以,您应该使用 ⋆ 作为您的主要类。
喜欢它。
看看一些星星…. (⋆)
http://www.fileformat.info/info/unicode/char/search.htm?q=star&preview=entity
我认为每个人都应该始终使用 UTF-8。 与使用 ISO-8859-1 等相比,它具有更多优势。
我 ♥ 它。 所有通信现在变得比字母更具象征意义,这真令人兴奋。
哈哈…这太有趣了…也很酷
感谢 Chris,这篇文章很有趣,让我从过去 6 个小时一直在盯着的让人头疼的代码中解脱出来! ; )
这真的很酷。 从来没想过可以做到这一点? 除了警告之外,还有其他问题吗?
盒子想法非常有趣,而且非常有用,我总是忘记我给某些类起了什么名字,等等,将它与一个符号联系起来会更容易记住。
而且,它会让您的样式表看起来很酷!
我可能会开始尝试一下,看看大家的反应!
这是一个很酷的技巧! 奇怪的是,我完全同意在“音乐”中使用音符符号的语义性。 我很想看到有人将其偷偷地添加到他们的标记中。
此外,这里有一个 Forrst 邀请码,适用于 25 个注册,专门献给你们:tricky(在 forrst.com/signup 上使用它)
这确实很有趣。 感谢您的提示,也感谢 @Kyle 提供的 Forrst 邀请码!
这很可爱!
这里有一个 Unicode 地图
http://www.atm.ox.ac.uk/user/iwi/charmap.html
请永远不要这样做,每个人。 请。
关于为什么这样做,你能提供一些细节吗? 我自己显然也遇到了问题,比如 PHP,但还有其他问题吗?
Roger,你说得对。 它实际上不实用也不语义化,只是有点好玩。 我不同意 ♫ 是标记艺术家和歌曲名称的更语义化方法。 如果你真的在标记一个乐谱(以某种方式?),而不是用于识别乐曲的标签,那就另当别论了。
那么节号 § 呢? 它是否可以作为“部分”这个词的合适替代品?
优秀的帖子 Chris。我喜欢使用 □ 的想法,并且可能会开始将其用于清除。
但这不类似于包含表现性类名吗?看起来不太语义化……
传统的论点是,像“left”这样的类名是非语义化的,因为它具有表现性。它包裹的东西可能并不总是位于“left”侧。一个更好的名称是“sidebar”,因为它可能更好地描述了它内部的内容。
将音符作为包裹音乐信息的 div 的类名对我来说非常语义化。这有什么“表现性”呢?
嗯,我想我是在想音符更像是一个视觉符号,而不是一个实际的描述。
(我真的很喜欢这个想法,我只是觉得它有点不对劲。)
“sidebar”只比“left”稍微语义化一点。Sidebar 仍然暗示了位置和内容的视觉解释,而不是实际的内容。 “sidebar” 并没有告诉我该元素中有什么,它告诉了我它应该是什么。
将音符作为包裹音乐信息的 div 的类名,在精神上当然语义化,但对于代码编辑器来说是完全无法访问的。它依赖于对符号的解释,无论是智力上的,还是如果有人有视觉问题,可能是听觉上的。
你正在语义化地为可访问性开发网站,然后又创造了一个美味的讽刺,即你代码本身的编辑和阅读对于所有人来说都是不可访问的?这很有创意,但在实际上看起来很荒谬,即使是在如何让人们在不使用复制粘贴的情况下在键盘上找到那个字符的基本层面上也是如此。
很酷… 但是那个 PHP 错误可能会导致一些严重的安全性问题,你不觉得吗?
Chris – 我刚刚尝试在 Coda 中输入那个符号,没有任何问题。我使用了“编辑”>“特殊字符”菜单项来插入它,但我确实将 Coda 设置为使用 UTF-8 编码……。
这怎么算是一种技巧?我们欧洲人已经使用 UTF-8 字符串很多年了。符号是原创的,但像“class=’entête’”这样的 UTF-8 字符串很常见。
很酷的技巧。我使用像 !?+~ 这样的符号作为简短的特殊类名,比如管道字符(“|”)作为垂直分隔符。然后我在 CSS 中对字符进行转义(“.\|”)。在 Javascript 和 jQuery 中也运行良好(但在 Dojo 中不行)。
lol,什么鬼东西 class=”⧻ഞﶈ”
有谁知道这是否可以用于 id 以及类名?
Chris – 不知道你什么时候会回来,并且不得不修改六个月前用这个“技巧”编写的代码… 当你试图记住 ♫ 和 ♣ 的按键时,你会恨死自己的。
话虽如此,PHP 可执行文件不支持 UTF-16。将源文档另存为 UTF-8,这样应该就可以了。如果你检查一下演示的源代码,虽然你已经将元头设置为 UTF-8,但文档本身实际上仍然是 UTF-16。
我同意 Blake 的观点。编写代码时的工程权衡之一是可维护性。非文本名称很酷很新颖,但我不确定它们是否更好。
我的一个软件工程老师声称源代码(这同样适用于 CSS)是原始开发人员与所有未来代码维护人员进行沟通的一种媒介,而计算机在执行代码时的行为是一种副作用。
使用 FF3.6,查看源代码显示了 PHP 调用,而不是像你说的那样运行它们。
顺便说一下,发现得真好。一个为你的类名增添趣味的方法:B
有趣、酷炫、尴尬… 同时… 而且我们说的是 CSS。我们一定是书呆子;)
抱歉,但我认为这完全不语义化。实际上我会说在这种情况下它比单词更不语义化。
对于某些人来说,音符符号可能代表实际的音符(这是我自己将音符符号联系起来的方式),一般意义上的音乐,或者仅仅是声音。
我不认为语义学和抽象是好的组合。例如,这就是为什么我认为你在菜单中将“文章”写在你报纸图标旁边的原因。
嘿 Chris,感谢你在文章中提到我。
对于有效的 XHTML 字符实体引用,我建议大家访问这个网站:http://www.digitalmediaminute.com/reference/entity/
非常有趣的事情;我在网上看到过一些使用字符作为子域名的网站 =)
真不愧是你,Chris,总是能像这样跳出框框思考。不错。
我根本不认为它语义化。一对八分音符可以代表很多东西。一个艺术家姓名?一首歌曲?一个艺术家姓名和一首歌曲?一张专辑?一个节奏?如果你必须查看它使用的上下文才能找到它的含义,那么它就不是语义化的。
如果 □ 可以表示一个框、一个容器或一个清除修复,那么它就不是语义化的。
使用图片作为语义学的问题是,不同的人对它们有不同的理解。看到一个 □ 不会为任何人提供任何信息,除了页面创建者之外。他们必须查看它周围的元素才能了解该类的作用。将此与 clearfix 类名进行对比,你毫无疑问地知道该类是一个 clearfix。
很酷?是的。语义化?不。
我再次不同意。我认为“clearfix”非常不语义化。这如何帮助描述它包含的内容?它绝对做不到,它纯粹是一个表现性修复。我认为语义化就是指不指定地进行描述。
但是你什么都没有描述。你使用了一张对你来说有意义的图片,而只有你自己知道。这怎么算语义化呢?
因为音符是音乐的象征性表示,而象征性表示 = 语义学。我并不是地球上唯一知道这一点的人,所以它不是“只有我”。如果我的桌子上放着两个口袋文件夹,一个上面有一个十字架,另一个上面有一个音符,你认为我会把我的乐谱放在哪个文件夹里?
你假设我知道你把乐谱放在一个贴着两个八分音符的文件夹里。
我对你一无所知。如果我看到你的桌子上放着两个文件夹,一个贴着十字架,另一个贴着两个八分音符,我会开始对你信仰和音乐背景进行猜测。贴着十字架的文件夹可能包含圣经、讲道记录、教堂成员的照片、2000 年的教堂公告。我可以环顾你的办公室/房间,试图准确地辨别出文件夹中包含的内容,但我对这个文件夹一无所知,直到我打开它并看到你到底把什么东西放在一个贴着十字架的文件夹里。对你来说很清楚,因为你知道文件夹里到底是什么。对我来说,它是一个贴着图片的文件夹,我必须查看上下文线索或查看文件夹才能准确地找到文件夹中包含的内容。
我同意音乐符号是音乐的通用表示,但一对八分音符并不能告诉我你把什么东西放在贴着音符的文件夹里。可能是乐谱,可能是你必须批改的音乐理论课的试卷,可能是你喜欢歌曲的歌词,或者可能是你拥有的 CD、盒式磁带和 MP3 的详细清单。我不知道它包含什么,直到我打开它。一般来说,是的,我知道它与音乐有关,但这是我从图片中得到的全部信息。如果图片是语义化的,我将毫无困难地辨别出文件夹的精确内容。
你假设有人知道图片对你意味着什么。这样做,你让读者/维护者必须通过查看上下文线索或查看容器的内容来推测内容。
我认为 Jeremy 这里说得很对,尤其是关于符号的问题,但我感觉你们大多数人完全没有理解 Unicode 类名的意义。
Unicode 字符集不仅仅包含很酷的符号;Unicode 是多语言的。
<div class="コンテナ">
对于日语设计师/开发人员来说,在语义学方面可能更容易阅读。另外,oakleafs 的说法也是对的 :p
听起来很有趣。
…你是怎么做倒写字体的?:-)
我知道一个网站,你可以在上面输入文本,然后得到翻转后的文本,但如何自己做呢?
实际上,角落的想法非常聪明!我相信我们从现在开始会使用它!
我喜欢角落的想法,刚刚把链接发给了六个人!哈哈哈,我简直不敢相信它看起来会多么酷;)
感谢你提供这个,我忍不住一直咯咯地笑,这招太棒了!
干杯!
Mr.Crazy Chimp
太酷了!我喜欢这个想法。它对所有浏览器都适用吗?
它很好,但我发现这些字符更…
这很酷。但正如 @Ronald 所说,它支持所有主流浏览器吗?
太棒了
这很有趣,也很不寻常,但我认为它毫无用处。
这很有趣,但恕我直言,“图标” 并不真正具有语义。
好吧,是的,音符符号更具语义,如果你完全疯了。实际上(认真地说)音符符号与任何与音乐相关的事物都松散地相关。因此,歌曲歌词或歌曲标题比用于音符的 utf 符号更适合作为类名。也许使用音符符号是一个糟糕的例子,它说明了一个总体上好想法。但也许它类似于一个使用语法着色以及对所有十六进制颜色代码着色的 html/css 编辑器。对我来说有点过头了。
顺便说一下,可怕的盒子 css 应该有朝一日会消失,被能做更多表现性事情的东西所取代,比如 svg。抱歉 chris - 我没有疯,也没有自言自语 - 盒子/音符应该被 utf 替换,成为一个伟大的白象。不过,能激发这样的讨论也很好。
我不知道这有可能!谢谢 Chris。
既然我们谈论语义类名,有趣的是,文档有一个头部、一个主体和一个页脚,但我们为什么不把侧边栏称为“右臂”或“左臂”呢?
事实上,我们遗漏了一大堆身体部位。哈哈!
看来我们又回到了幼儿园!
别误会我的意思,我喜欢这个想法。这也是让你的网站构建对编码人员来说很令人沮丧的好方法,反之亦然,更不用说雇用来自各种国籍的多名员工了,不同的自然书写符号也会让人感到沮丧 =]
所以,用中文姓名和符号会很有趣…
拜托,认真点!
我能理解使用它来压缩包含大量样式表,每个元素都使用多个类名的样式表。
你可以在开发中使用所有语义,然后在将代码推送到线上之前,通过一个最小化脚本替换类名。
好吧,没有 Unicode 选择器,互联网将会是什么样子。
当这看起来很有趣时,我不建议/使用它。类名和 ID 在 SEO 中起着重要作用,所以最好明智地选择它们。
真是个有趣的想法。如果你想要一个用于浏览 Unicode 字符的漂亮 Javascript 应用程序,试试 Unicode 字符查找器