CSS 类名的单词连字符:下划线还是连接符?

CSS样式名中的下划线与连字符 编程 在上面的示例中,我们创建了一个名为"header"的类选择器,用于定义整个页眉的样式。然后,我们使用连字符将样式名分为"header__logo"和"header__nav"两个类选择器,分别用于定义页眉中的logo和导航的样式。在CSS样式名中,下划线和连字符都是常见的命名约定,用于提高可读性和语义性。在编写CSS样式时,根据个人偏好或使用的命名约定,选择合适的命名方式,以使代码易于理解和维护。本文将详细介绍在CSS样式名中使用下划线和连字符的编程实践,并提供相应的源代码示例。如有任何疑问,请随时提问。 阅读详情


本文的部分内容整理自我对此问题的解答: 命名 CSS 的类或 ID 时单词间如何连接? – 知乎

问题

CSS 类或 ID 命名时单词间连接通常有这几种写法:

  • 驼峰式: solutionTitle、solutionDetail
  • 用横杠(连接符)连接: solution-title、solution-detail
  • 下划线连接: solution_title、solution_detail

应该采用哪种写法呢?选择的时候是出于个人习惯还是有别的考虑?

看了下豆瓣,美团,淘宝的源码,都是采用 solution_title 的写法。

我的回答

首先定个性,这是个纯粹的“代码风格”问题。

什么是“代码风格”问题?有一些特征:

  • 技术规范不会硬性规定。虽然规范有时可能会提供指导性的建议,或者有时会有行业大牛出来鼓吹最佳实践。
  • 个性化十分明显。也就是萝卜青菜各有所爱、公说公有理婆说婆有理,永无定论。

扯完之后说一下我自己的习惯:

以前用下划线

主要原因是在编辑器中双击可以选中;另外自己觉得下划线好看(纯个人喜好)。除此以外可能还有一点“小白式谨慎”(避免与 CSS 属性名/值弄混、避免与减号弄混),或者我的启蒙教材就是使用下划线的。

现在主要使用连字符

后来逐渐接手或参与了一些别人的项目,接触过各种代码风格。在老外的一些项目中接触到大量的使用连字符的命名,看多了感觉也不难看。在编辑器中也可以通过“双击并拖动”来选中,所以就逐渐过渡到了连字符。

在特殊场合用驼峰式

驼峰式写法输入不方便、引入了大小写的复杂度、可读性无优势,因此很少在日常开发中使用。而正因为如此,我目前主要在一些框架级的类名中使用,以便于日常开发的命名习惯区分开,避免无意中污染框架级样式的可能性。

关于标准

有网友提到:

HTML 和 CSS 语法中,无论是属性名和值,用到连接符的地方都是 - 没有 _。Follow 标准有益无害。

这种说法我并不赞同。因为“follow 标准”一说没有根据,而且逻辑不清。

我们很容易理清一件事——给元素的 class 和 id 命名,本质上是给 HTML 标签的 class 与 id 属性写入值。HTML 的 标签属性值 的合法性与 HTML 标签属性名、CSS 属性的名/值的命名习惯有关系吗?

说到“标准”,其实我也完全不知道 class 和 id 的合法值是什么、不知道下划线是否合法,甚至记不太清楚 class 与 id 的值是否是大小写敏感的。为此,我查阅了现行规范 HTML 4.01 和 CSS 2.1 的部分章节。CSS 2.1 是这样说的:

In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); …

也就是说,用下划线来连接多个单词作为 class 或 id 的值,是合法的。

(贺师俊老师提示道:CSS 1 和 2 的规范在这一点上有错误,没有把下划线加进去;直到 CSS 2.1 中,这个问题才被修正。)

其它观点

关于可读性

贺师俊老师(@hax)提出了一个容易被忽略但实际上很重要的因素:

- 比 _ 有一点好的地方是, _ 有时候会难以分辨,就好像空格一样。而 class 里面有没有空格是挺重要的。比较以下三种用法:

1
2
3
< div class = "a_very_very_very_long long_class short_class" >
< div class = "a-very-very-very-long long-class short-class" >
< div class = "aVeryVeryVeryLong longClass shortClass" >

关于编辑器

很多同学提到了不同的单词连接方式对选择操作的影响,比如双击可以直接选中用 _ 连接的多个单词,但用 - 连接的多个单词则无法全部选中,选区会在 - 处终止,即只能选中一个单词。

Sublime Text

对此,一丝同学(@yisibl)在 微博 做了科普:

CSS 命名用连字符 - 不能双击选中的问题一直是一个伪命题,这是编辑器的问题,因为这个而选用下划线 _ 实在有些牵强。在 Sublime Text 2 的全局配置文件 Preferences.sublime-settings 中找到 word_separators 字段,删掉其中的 - 即可双击选中一连串的多个单词。

hyphen-in-css-class-dash-or-underscore-sublime-text

Vim

也有一位 潘魏增同学 提供了 Vim 的配置方法:

如果使用 vim,可以设置 set iskeyword+=-,这样就可以匹配选中以 – 连接的关键词,search 和 mark 的时候会比较方便。

(抱歉,这里只是纯转发,暂时无法验证。)

UltraEdit

我在 Windows 下一般用 UltraEdit 干活,它有一种操作叫作 Ctrl + 双击。而且我们可以设置此操作的分界符,很灵活。

hyphen-in-css-class-dash-or-underscore-ultraedit

鼠标选择

如果你的编辑器不支持上述配置或操作,要想一次性选中以 - 连接的多个单词,其实也是有解决方案的: 双击的最后一击先不要松开,再左右拖动就可以以单词为单位扩张选区。(这种选择方式几乎适用于所有编辑器,而且 Windows 和 Mac 通吃。)

实际上我并不建议像前面几种方法那样在编辑器中取消 - 的分界符身份,而是建议使用这种“双击 + 拖动”的方法来选择任意数量的单词。因为,某些时候你只想选中 one-two-three 中的 one-two 或 two-three 或单个单词,那么这种方法显然更自由更精确——想选少选少,想选多选多。

— Bonus Track —

如果你在使用 WebStorm(或它的兄弟 IDE),就不要用鼠标点来点去了,不优雅。

你可以把光标移到某个单词上,用 Ctrl + W(在 Mac 下是 Cmd + W)快捷键就可以选中当前单词;更神奇的是,这个快捷可以连续使用,可以不断把选区扩张到更大的语法单元:单词->一串单词->整个字符串(或语句)->对象(或函数作用域)-> …… ->整个文件。

(唯一不便的是,这个快捷键在其它程序中是关闭当前窗口的操作,容易混淆,建议在 IDE 中给这个操作分配其它的快捷键。)

Labelme安装教程(附Anaconda安装教程) 本文详细介绍了如何安装Anaconda和Labelme,还提供了常见问题的解决建议。 阅读详情

相关推荐

CH592F RISC-V蓝牙LED灯设计:WS2812B驱动与微信小程序控制

蓝牙低功耗(BLE)是嵌入式物联网设备主流无线通信技术,其核心在于协议栈轻量化、射频稳定性与外设协同调度。基于RISC-V内核的蓝牙SoC(如CH592F)凭借高集成度、低待机电流和免外部巴伦的射频设计,显著降低硬件复杂度与BOM成本;而WS2812B作为单线级联RGB LED,依赖微秒级精准时序,需借助定时器+DMA机制规避CPU干预,保障动态效果流畅性。该方案融合电容触摸交互、GATT服务自定义与微信小程序标准Bluetooth API对接,适用于智能照明、DIY彩灯及教学实践等场景,是BLE+LED实

weixin_31163455的博客 434

CSS 类名的单词连字符:下划线还是横杠?

本文转载自 cssmagic,原文链接:Click me 本文的部分内容整理自我对此问题的解答: 命名 CSS 的类或 ID 时单词间如何连接? - 知乎 问题 CSS 类或 ID 命名时单词间连接通常有这几种写法: 驼峰式: solutionTitle、solutionDetail用横杠连接: solution-title、solution-detail下划线连接

RisingWonderland - Blog 1万+

低功耗和UPF介绍

参考[UPF]低功耗(Low Power Design)and UPF介紹

青春易逝,愿不负昭华,期待梦与远方 1万+

CSS 类名的使用习惯:下划线还是横杠?不强制!!!

有时候会不会很烦恼在CSS命名的时候纠结用下划线还是横杠呢? 本人做过4-5年的前端开发,也看过很多的大神写的代码,发现大神都是习惯用 - 来命名类的,但是本人至始至终都是用 _ 来命名,因为编辑器双击不能选中。今天突然纠结了一下,到底哪个比较好呢? 翻看了一下相关文档,发现不管是用 - 还是用 _ 都是可以的。所谓的用-就能代表标准?并不是的。 所以,不管用下划线还是横杠,还是看个人喜欢吧。 ...

chiyan347的博客 5017

2 海康视觉平台VisionMaster 上手系列:大纲及准备

海康视觉平台VisionMaster 大纲,课前准备 快速入门 工业机器视觉 机器视觉

HuangGong2022的博客 1万+

EfficientNet中的MBConv模块详解:为什么它能如此高效?

本文深度解析了EfficientNet中的MBConv模块,详细介绍了其核心设计理念、效率优化技术和复合缩放理论。MBConv通过深度可分离卷积、倒残差结构和注意力机制三大关键技术,实现了计算效率与模型性能的平衡,成为高效网络结构设计的典范。

tcp8optimizer的博客 350

css字体加横线方法

还可以使用下划线 style="text-decoration:underline;上划线style="text-decoration:over-line;可以使用style="text-decoration:line-through;

Y2960018173的博客 3871

疾风气象大模型4.0白皮书

《疾风气象大模型白皮书摘要》 疾风气象大模型(J-AFM)是国内首个基于3D建模的气象智能平台,突破传统二维气象分析的局限,采用体素化技术构建"x-y-z-t"四维统一模型,实现从分钟级短临到30天跨时效的连续预测。核心技术包括:1)多源数据三维同化,融合雷达、卫星、风廓线等异构数据;2)物理约束AI解码器,嵌入能量守恒、湍流封闭等气象原理;3)行业适配插件,服务风电、光伏、航空等领域,如山地风场尾流校正、云影短临预测。平台支持批流一体推理与边缘部署,提供概率化输出和误差溯源能力,显著降

专注AI大模型,软件混淆,授权 542

CSS类名class下划线”_”、减号”-”该如何选择

为什么80%的码农都做不了架构师?>>> ...

weixin_33753845的博客 3091

基于STM32的智能鞋柜系统设计与实现

摘要:本文设计并实现了一种基于STM32F103C8T6单片机的智能鞋柜系统。该系统通过DHT11温湿度传感器、PM2.5粉尘传感器和MQ-135空气质量传感器构建多维度环境监测网络,结合光电红外传感器和光敏传感器实现柜门状态识别与智能照明。系统采用分层控制策略,当温度低于15℃或湿度高于65%时自动启动加热和通风,PM2.5超标时启动通风,污染物浓度升高时激活紫外线杀菌。创新性地实现了柜门状态与紫外线消毒的双保险互锁机制,确保使用安全。测试结果表明,系统温湿度控制精度达±0.4℃/±2.0%RH,PM2.

3254968421的博客 253

STM32 驱动直流无刷电机(BLDC)发声

STM32 驱动直流无刷电机(BLDC)发声

perseverance51博客 3401

CSS3之hyphens(连字符)

1,连字符 连字符分为硬连字符和软连字符: 硬连&amp;amp;hyphen;字符:,即使该单词没有中间换行,也会显示连字符 软连字符:&amp;amp;shy;,只有单词中间换行才显示连字符 2,hyphens属性 CSS3了提供hyphens属性指定文字多行自动换速行应断字既可以在中的相关资料:软使用连字符指定换速行点,也可以由浏览器在适当的位置插入换行符。 属性值: 可以加前缀-webkit-状...

大白兔 8816

【Claude Code 源码解析教程】第25章:测试与调试

Claude Code 作为复杂的 AI 编程助手,测试与调试是保证质量的关键环节。项目建立了完善的测试体系,包括单元测试、集成测试、端到端测试等多个层次,同时提供了丰富的调试工具和技巧。

rengang66的博客 211

[转]CSS 类名的单词连字符:下划线还是横杠?

问题 CSS 类或 ID 命名时单词间连接通常有这几种写法: 驼峰式:solutionTitle、solutionDetail 用横杠连接:solution-title、solution-detail 下划线连接:solution_title、solution_detail 应该采用哪种写法呢?选择的时候是出于个人习惯还是有别的考虑? 看了下豆瓣,美团,淘宝...

anba7411的博客 569

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

连字符 - vs 下划线 _:谁才是编程界的“分割线”之王?

摘要:连字符 - 和下划线 _ 在编程中有截然不同的使用场景。URL 和 HTTP Header 必须用连字符(SEO友好,兼容Nginx),而变量命名则需避免连字符(会被视为减号)。CSS类名和文件名推荐连字符(输入快捷),但代码中的字段名常用下划线(如Python/SQL)。核心原则是按场景选择并保持一致性——连字符胜在效率,下划线赢在规范。这场战争没有绝对赢家,只有最适合的符号。⌨️🚀 (字数:149)

小丁的博客 766

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

下划线与连字符的区别是什么?

下划线与连字符的区别是什么?

被放养的研究生的博客 362

html name的css,HTML css、id、name、js 代码命名规范-Fun言

CSS 类或 ID 命名时单词间连接通常有这几种写法:1)驼峰式:solutionTitle、solutionDetail2)用横杠连接:solution-title、solution-detail (CSS和ID都推荐)3)下划线连接:solution_title、solution_detail应该采用哪种写法呢?选择的时候是出于个人习惯还是有别的考虑?首先定个性,这纯粹是“代码风格”的...

weixin_32553639的博客 738

做了三年的前端开发,你知道如何标准规范书写 CSS吗?

CSS书写顺序 1.位置属性 (position, top, right, z-index, display, float等)   2.大小 (width, height, padding, margin)   3.文字系列 (font, line-height, letter-spacing, color- text-align等)   4.背景 (background, border等) 5.其他 (animation, transition等) CSS书写顺序 CSS书写规范使用CSS缩写属

weixin_55688024的博客 155

css 书写规范

CSS书写顺序 1.位置属性 (position, top, right, z-index, display, float等)   2.大小 (width, height, padding, margin)   3.文字系列 (font, line-height, letter-spacing, color- text-align等)   4.背景 (background, ...

weixin_30552811的博客 134

CSS常见的选择器

常用的伪元素有:before、::before:after、::after为了区分伪元素和伪类,建议伪元素使用2个冒号,比如::first-line。

Welisit的博客 686

web前端逃坑指南------如何规范书写CSS

CSS书写顺序 1.位置属性 (position, top, right, z-index, display, float等)   2.大小 (width, height, padding, margin)   3.文字系列 (font, line-height, letter-spacing, color- text-align等)   4.背景 (background, border等) 5...

一个萌新菜鸡的的博客 260

浅说下划线与减号

下划线与减号的本质差别在于分词。逻辑上必须要有强和弱的两种连接,两者并非取代关系。

萝卜头实验室 7708

05 CSS02

# 目标 1、选择器进阶 2、背景相关属性 3、元素显示模式 4、CSS三大特性 5、综合案例

NYX_UNI的博客 960
上一篇: CSS reset的重新审视 – 避免样式重置
下一篇: display:inline-block是什么意思
timtimup_KSM
博客等级 码龄11年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值