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 中给这个操作分配其它的快捷键。)

SHP转TXT、TXT转SHP工具(附工具下载链接) 关于TXT,可以选择整个图层生成一个TXT。也可以勾选“每个地块单独存TXT”,然后选择一个字段,根据字段值,给每个地块生成一个TXT文件。支持选择和数据框一样的坐标系,也可以选择一个图层,工具会采用和这个图层一样的坐标系。1、TXT数据支持输入单个或者多个TXT文件,也可以直接选择TXT所在的文件夹。所有的TXT数据都生成到一个矢量数据图层。关于这一行的内容,可以在地块坐标行设置中进行设置。其他:①面节点闭合:勾选,则回到起点。属性描述:可以直接复制粘贴进来,也可以直接修改。也可以改为任意字母。 阅读详情

相关推荐

系统动力学仿真软件Vensim下载

Vensim是由美国Ventana Systems, Inc.所开发,是采用图示化编程的方式构建系统动力学模型,上手简单。Vensim有很多系列产品,其中Vensim PLE (Personal Learning Edition)是面向个人学习者的,完全免费,可直接官网下载,截止于2022/04/10,最新的Vensim PLE版本是9.2.3。

PMIIᶜᶜ的博客 1万+

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

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

RisingWonderland - Blog 1万+

Lenovo 拯救者15ISK硬件升级实战:从内存到固态硬盘的全面优化

本文详细介绍了为联想拯救者15ISK笔记本电脑进行硬件升级的完整实战指南。通过评估升级可行性,指导如何挑选兼容的内存条与NVMe固态硬盘,并提供详细的拆机安装步骤与系统安装避坑技巧。升级后,笔记本的开机速度、软件加载及多任务处理能力获得飞跃式提升,让老旧设备重获新生。

weixin_29310631的博客 557

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

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

chiyan347的博客 5017

使用相对路径设置IAR的Additional include directories 以及 $PROJ_DIR$ 的用法

新建IAR工程时免不了要导入工程用到的头文件,那么导入头文时是用相对路径还是绝对路径呢?当然是相对路径了,因为绝对路径会有弊端,那就是,如果将来更换了工程放置的路径,那么这个相对路径就凉凉了,编译必然报错。所以最好还是用相对路径,那么相对路径怎么用呢? 请看以下 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 版权声明 本博文系广州欧科曼科技有限公司所有,转载请注明出处。 广州欧科曼科技有限公司致力于瑞萨MCU及周边相关产品开发设计。 ema

announced1的博客 5391

matlab 求解多项式的根 四种方法

matlab 求解多项式的根 四种方法 方法一 %多项式求根函数roots p=[1,-3,1];%建立多项式系数向量p x=roots(p)%求多项式的根 x=-5:0.1:5;%步长为0.1 y1=x.*x-3*x+1;%构建一个函数 y2=zeros(size(x));%产生一个与x同大小的零向量 plot(x,y1,x,y2); 方法二 %利用函数fzero f=@(x)x*x-3*x+1; x1=fzero(f,0.5) x2=fzero(f,2.5) 方法三 %利用f

weixin_57038822的博客 1万+

css字体加横线方法

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

Y2960018173的博客 3871

信息系统项目管理师(高项)重点!

学习高项自己做的笔记

PanJWei的博客 3301

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

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

weixin_33753845的博客 3091

【HALCON工业视觉应用探索】02. C# + Halcon铸件毛刺机器人打磨引导:点云处理从实验室到工业现场的全流程落地

摘要:铸件毛刺的自动化打磨是机械制造领域的重要难题,其随机性(高度0.1-3mm)和复杂工况导致人工打磨效率低(3分钟/件)、工伤率高。本文基于Halcon 24.11与.NET 6,构建了一套点云处理方案:通过线激光扫描仪获取三维点云,经预处理、毛刺检测、路径规划三大模块,引导机器人完成打磨。虚拟实验测试显示,对高度>1mm的毛刺检出率达100%,定位误差±0.08mm,但工业现场受油污、粉尘影响,性能降至检出率68-75%、处理时间>45秒。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1128

ADS基础教程24 - Gerber文件的导入

一、引言二、基本概念1.仿真文件下载2.仿真文件介绍二、导入步骤1.新建workspace2.选择Layout结构3.导入设计4.选择文件类型5.导入文件6.预览文件内容7.铜皮离散问题四、总结选择。通过本文章结束,可以了解ADS中如何将导入Gerber文件,并且对导入的铜皮进行合并。下一步就针对导入的文件进行层叠设置和编辑。END!}}END!

XZ_ZC的博客 3054

CSS3之hyphens(连字符)

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

大白兔 8816

【模型】OpenClaw 接入阿里云永久免费模型方案

Qwen2.5-7B-Instruct 模型为例。

海兰 4473

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

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

anba7411的博客 569

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

小丁的博客 766

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

被放养的研究生的博客 362

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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、付费专栏及课程。

余额充值