首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

BEM是否有区分状态选择器和子类选择器的约定?

BEM(Block Element Modifier)是一种前端开发的命名约定,用于组织和命名CSS类。它的目标是提供一种清晰、可维护和可扩展的方式来编写CSS代码。

BEM约定中确实有区分状态选择器和子类选择器的规定。

  1. 状态选择器:BEM约定中使用双下划线(__)来表示一个块元素的不同状态。状态选择器用于表示块元素在不同状态下的样式变化。例如,一个按钮块元素可以有不同的状态,如激活、禁用等。在BEM约定中,我们可以使用类似button__state--active的命名来表示按钮块元素的激活状态。
  2. 子类选择器:BEM约定中使用单连字符(-)来表示一个块元素的子元素。子类选择器用于表示块元素内部的子元素。例如,一个导航栏块元素可以包含多个导航项子元素。在BEM约定中,我们可以使用类似navbar-item的命名来表示导航栏块元素的导航项子元素。

BEM约定的优势包括:

  1. 可读性强:BEM约定使用清晰的命名规则,使得代码易于理解和维护。开发人员可以快速了解一个元素的作用和关系。
  2. 可扩展性好:BEM约定提供了一种模块化的方式来组织CSS代码,使得代码的扩展和重用更加容易。开发人员可以独立地修改和扩展每个块元素,而不会影响其他元素。
  3. 低耦合性:BEM约定鼓励使用块元素和子元素的组合方式来构建页面,减少了CSS选择器的嵌套和依赖关系,从而降低了代码的耦合性。

BEM约定适用于各种前端开发场景,特别是大型项目和团队协作。它可以帮助开发人员更好地组织和管理CSS代码,提高开发效率和代码质量。

腾讯云相关产品和产品介绍链接地址:

  1. 腾讯云服务器(CVM):提供可扩展的云服务器实例,满足不同规模和需求的应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  2. 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于图片、视频、文档等各种类型的文件存储。详情请参考:https://cloud.tencent.com/product/cos
  3. 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发人员构建智能化应用。详情请参考:https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CSS规范--BEM入门

理想状态下,我们开发一套组件过程中,我们应该可以随意为其中元素进行命名,而不必担心它是否与组件以外样式发生冲突。...BEM最难部分之一是明确作用域是从哪开始到哪结束,以及什么时候使用(不使用)它。随着接触多了,了经验积累,你慢慢就会知道怎么用,这些问题也不再是问题。 4 你是不是用错BEM了?...关于BEM修饰器 BEM修饰器代表着元素状态,但有时候元素状态需要js来控制,此时遵循规范没有任何好处,比如激活状态BEM推荐写法是: .block__element { display...在项目中,使用原子类之前应该考虑一下,这个场景是否变动大而且不可复用,如果是的话,我们可以放心使用原子类。...*/ } 这还仅仅只有两个组件而已,实际项目中,十几个或几十个组件,难道我们要每个组件都检查一下来“新组件名是否以往组件子元素命名冲突了”么?

1.2K20

浅谈 Css 规范

可读性可维护性: BEM 使用简洁明了命名约定,使得 CSS 代码易于理解维护。 增强可扩展性: BEM 结构使得页面元素易于扩展修改,不会影响其他部分样式。...避免样式冲突: BEM 命名约定避免了样式冲突,每个块元素都有独立命名空间,不会受到外部样式影响。 缺点: 命名冗长: BEM 命名规范较为严格,可能导致类名过长,增加了代码量阅读难度。...两个基本原则: 独立结构样式(即不要将定位、尺寸等布局样式与字体、颜色等表现样式写在一个选择器中)。...命名规则 SMACSS 推荐使用前缀来区分不同部件: 基础规则是直接作用于元素,因此不需要前缀,一般使用元素、属性、伪类等选择器。不应该出: class、ID、!important 等。...命名约定:ITCSS需要遵循一定命名约定规范,有时可能需要花费额外时间精力来命名组织样式代码。 可能导致过度设计:过度遵循ITCSS规范可能导致样式表过度设计,增加不必要复杂性。

9410
  • CSS — BEM 命名规范

    __ 双下划线:双下划线用来连接块子元素 _ 单下划线:单下划线用来描述一个块或者块子元素一种状态 BEM 是一个简单又非常有用命名约定。...1.1 BEM 命名模式 BEM 命名约定模式是: .block {} .block__element {} .block--modifier {} 每一个块(block)名应该有一个命名空间(...block__element 代表 .block 后代,用于形成一个完整 .block 整体。 block--modifier 代表 .block 不同状态或不同版本。...在 css 定义时,也必须依靠层级选择器来限定约束作用域,以避免跨组件样式污染。...BEM 格式 在当前流行 Vue.js / React / Angular 等前端框架中,都有 CSS 组件级作用域编译实现,其基本原理均为利用 CSS 属性选择器特性,为不同组件生成不同属性选择器

    2.7K31

    【编码规范】Airbnb CSS u002F Sass 编码风格指南

    目录 术语 规则声明 选择器 属性CSS 格式 注释 OOCSS BEM - ID 选择器 JavaScript 钩子 - 边框Sass 语法 排序 变量 Mixins 扩展指令...如果你使用 BEM,也可以使用下划线(参见下面的 OOCSS BEM)。 不要使用 ID 选择器。 在一个规则声明中应用了多个选择器时,每个选择器独占一行。...给没有自注释代码写上详细说明,比如: 为什么用到了 z-index 兼容性处理或者针对特定浏览器 hack OOCSS BEM 出于以下原因,我们鼓励使用 OOCSS BEM 某种组合:...”,是一种用于 HTML CSS 类名命名约定。...BEM 最初是由 Yandex 提出,要知道他们拥有巨大代码库可伸缩性,BEM 就是为此而生,并且可以作为一套遵循 OOCSS 参考指导规范。

    2.4K20

    「前端工程四部曲」模块化前世今生(下)

    BEM BEM 是一种非常有用、强大且简单命名约定,可以说是一个CSS命名规范,也可以说是一种思想。它使前端代码更易于阅读理解、更易于使用、更易于扩展、更健壮明确,并且更加严格。...这种巧妙命名方法让你CSS类对其他开发者来说更加透明而且更有意义。BEM命名约定更加严格,而且包含更多信息,它们用于一个团队开发一个耗时大项目。...而 BEM 就不一样了,虽然看上去很丑,但我们能清晰地看到个叫 .site-search 块,它内部是 .site-search__field site-search__button 两个元素。...,它们实现功能除了一些最基本的如 CSS 局部作用域之外还有一些独有功能,就比如下面这些: 全局选择器 基于状态样式 客户端与服务器端渲染 缓存 内置自动前缀 媒体查询 选择器嵌套 内置动画支持 其他插件软件包...「优点:」 优点很多,比如 CSS in JS 本质上是 JavaScript 代码,因此我们可以将复杂逻辑应用于样式规则,例如循环、条件、变量、基于状态样式等等, 这样的话如果我们需要创建有动态功能复杂

    72220

    使用BEM命名规范来组织CSS代码

    BEM 是 Block(块) Element(元素) Modifier(修饰器)简称 使用BEM规范来命名CSS,组织HTML中选择器结构,利于CSS代码维护,使得代码结构更清晰(弊端主要是名字会稍长...) 如何使用BEM 一个独立(语义上或视觉上),可以复用而不依赖其它组件部分,可作为一个块(Block) 属于块某部分,可作为一个元素(Element) 用于修饰块或元素,体现出外形行为状态等特征...,可作为一个修饰器(Modifier) 在本规范中,以双下划线 __ 来作为块元素间隔,以单下划线 _ 来作为块修饰器 或 元素修饰器 间隔,以中划线 - 来作为 块|元素|修饰器 名称中多个单词间隔...,不使用ID或标签名来约束选择器,且CSS(或者SCSS编译后CSS)中选择器嵌套不超过2层,增加效率复用性,减少选择器之间耦合度 比较常见嵌套情景:需要通过块状态对内部元素进行调整时 .search-form...,某些时候必要) */ .search-form_theme1 .search-form__input {} /* 错误:使用了标签 */ button.search-form__button {

    98161

    jQuery中,$.$().什么区别以及多个选择器执行

    $代表jQuery对象,同时也是一个函数对象 $()jQuery()是jQuery核心函数,执行这两个元素返回是一个DOM元素 $()是一个函数,等同于jQuery(),可在括号内传参数,传参后可获取元素...$(“.one”)表示获取class=“one”元素,返回一个jQuery对象 $(”.one”).onclick表示class=”one”点击事件 $.post() $.get() $.ajax...() 都是jQuery对象方法 jQuery中,多个选择器是依次执行,不是同时执行 ,是在上一个选择器执行完基础上,才开始执行下一个。...例如:$(“li:gt(0):lt(2)”) // 选择第二个第三个li,gt(0)表示下标大于0,lt(2)表示下标小于2。...下标大于0为黑色区域,此时,下标为1蓝色区域下标变为0,下标为3粉色区域下标变为1,执行过滤选择下标为2后,即为红色框内,也就是最初下标为12元素,即第二个第三个li元素(假设所有的颜色框均为

    1.2K40

    两种 CSS 方法论 「详细分析」

    现在用 Bootstrap 弹窗组件,举一个更加具体例子: 鼠标放上去没放上去状态区别的。...另外,现在网上已经非常多文章在介绍 BEM 了,耐心找,肯定能找到优秀教程。今天文章会分享比较少人介绍两种 CSS 方法论:SUIT CSS SMACSS。...命名规则:[-][-后代名][--修饰符],这样命名方式,在编写 HTML CSS 时候几个好处: 有助于区分组件根元素,后代元素,以及用来修饰类; 降级类名重复几率...SMACSS 中允许在布局样式中,使用 ID 选择器,有助于在 HTML 中一眼区分出节点在布局中位置。其他非 ID 选择器类,需要添加 l- 前缀,表示这属于布局样式。...状态规则 状态是用来描述模块在不同状态外观,使用 is- 前缀,这有助于我们在 HTML 中区分元素状态

    97010

    如何使用CSS命名规范提高您编码效率

    开发者通常会忽视一个基本部分,那就是实施CSS命名规范,有些人会在调试管理庞大代码库时才意识到糟糕CSS代码多可怕。...无论你是否意识到,在编码测试或技术面试中,你命名习惯都会传达关于你开发实践信息。它们可以用来评估你行为效率。因此,在本文中,我们将展示CSS命名最佳实践,以提高代码质量。...相关样式:与相关元素相关样式块应放置在样式表中。 简洁CSS选择器:CSS选择器不应过长或过于嵌套,也不应使用复杂后代选择器。 适当选择器命名:选择器应该具体命名为其应用元素。...BEM(块、元素、修饰符):BEM是一种流行CSS命名约定,由俄罗斯科技公司Yandex开发,旨在提供一种模块化CSS样式方法,提供代码可重用性,并使大规模CSS维护成为可能。...标准化命名前缀:采用统一命名约定(例如,BEM块名称或原子CSS类)应该在整个项目中标准化,并保持一致性。

    38530

    Vue多人协作开发规范统一指南

    面对这种项目,首先得总体个思路:将大模块拆分成小模块,一个一个突破,找到其中之间每个组件联系,这样写增加新业务就上手容易一点了。 其实Vue项目,主要搞清楚这几点,上手相对容易一点。 1....key 配合 v-for,以便维护内部组件及其子树状态。...-- 使用 BEM 约定 --> .c-Button { border: none; border-radius: 2px; } .c-Button--close { background-color...第二种方式 components/ |- MyComponent.vue 基础组件命名 ❝「应用特定样式和约定基础组件 (也就是展示类、无逻辑或无状态组件) 应该全部以一个特定前缀开头,比如...❝在 scoped 样式中,类选择器比元素选择器更好,因为大量使用元素选择器是很慢

    1.7K10

    团队分享,Bem规范调研及实践

    通过浏览HTML代码中class属性,你就能够明白模块之间是如何关联一些仅仅是组件,一些则是这些组件子孙或者是元素,还有一些是组件其他形态或者是修饰符。...这里刚开始使用 bem 时候容易犯一个问题,就是把 ul li 样式写成 card__content__list card__content__list__item 因为这样更能体现层级关系...这有悖BEM命名规范,BEM命名中只包含三个部分,元素名只占其中一部分,所以不能出现多个元素名情况。这样约定可以防止当层级很深命名过长问题。...: ignore */ .no-flexbox .Component { display: block; } 总结 BEM 最难部分之一是明确作用域是从哪开始到哪结束,以及什么时候使用或不使用它...已收录,一线大厂面试完整考点、资料以及我系列文章。

    79610

    CSS命名法BEM与scoped、module

    兴趣可以看看: 百度前端编码规范 CSS命名其实挺随意,使用驼峰、-、_都可以,并不影响使用,常用应该是-下划线_连接。...平时我们不会关注这个,这其实是CSS属性选择器,打包时候给每个标签都添加一个唯一data-v-hash。...M:modifier 对应节点状态,disabled 最终class名 dialog__button--disabled 使用BEMelement:el-cascader-node__label、...BEM:隔离污染做很好,但是名字太长长,命名困难,多人协作情况下通过人为约定约束实现BEM太过困难。...在我看来,scoped > module > BEM,引用工具来约束人为约束肯定是选择使用工具去约束,modulescoped对比,也只是工具对类名不同处理。

    66920

    前端:Vue前端开发规范,值得收藏!

    为组件样式设置作用域 对于应用来说,顶级 App 组件布局组件中样式可以是全局,但是其它所有组件都应该是作用域。 这条规则只单文件组件有关。你不一定要使用 scoped 特性。...设置作用域也可以通过 CSS Modules,那是一个基于 class 类似 BEM 策略,当然你也可以使用其它库或约定。...-- 使用 BEM 约定 --> .c-Button { border: none; border-radius: 2px; } .c-Button--close { background-color...基础组件名 应用特定样式和约定基础组件 (也就是展示类、无逻辑或无状态组件) 应该全部以一个特定前缀开头,比如 Base、App 或 V。...*/ 复制代码 四、谨慎使用 (潜在危险模式) 1.

    1.5K40

    通用 CSS 笔记、建议与指导!

    BEM 命名法可以使得选择器更规范,更清晰,更具语义。...这样我们就可以根据亲元素来划定选择器命名空间并传达该选择器职能,例如根据这个选择器是一个子元素(__)还是其亲元素不同状态(--)。 由此,.page-wrapper 是一个独立选择器。...BEM 命名法虽然不太好看,而且相当冗长,但是它使得我们可以通过名称快速获知元素功能元素之间关系。与此同时,BEM 语法中重复部分非常有利于 gzip 压缩算法。...无论你是否使用 BEM 命名法,你都应当确保 class 命名得当,力保一字不多、一字不少;将元素命名抽象化以提高复用性(例如 .ui-list,.media)。...牢记:class 无所谓是否语义化;应当关注它们是否合理。不要强调 class 名要符合语义,而要注重使用合理且不会过时名称。 过度修饰选择器 由前文所述,过度修饰选择器并不理想。

    9010

    这几个CSS概念你了解吗?

    为了解决冲突就需要进行模块化区分,没有了命名冲突,更好让组件间沙箱化,而CSS Module就是css模块化实现方式之一 CSS Module 在打包时候会将类名转换成带有hash值新类名,...,它实现原理是通过PostCSS来实现,通过给想对应dom新增一个属性,同时给css选择器新增一个对应属性,来对应这个唯一dom,如下所示 ?...啊乐同学:你说CSS Module是 css 模块化一种实现方式,还有其他CSS模块化实现方式吗? 有的,比如BEM 命名规范,还有下节会介绍 CSS in JS 这里简单介绍下BEM ?...答:可以,styled-components team 专门为Vue开发了一个 vue-styled-components,Reactstyled-components用法非常相似,兴趣可以玩玩...拓展: styled-components 官网 3.CSS 原子类 其实这个概念已经很老了,本质上也是一种编写 CSS 思想,简而言之就是通过用原子类构造选择器,比如我们定义一个base.css

    1.6K20

    vue项目前端规范

    ,下划线分割单词 # 组件 官方文档推荐及使用遵循规则: PascalCase (单词首字母大写命名)是最通用声明约定 kebab-case (短横线分隔命名) 是最通用使用约定 组件名应该始终是多个单词...scoped 中出现 官方文档说明:在 scoped 样式中,类选择器比元素选择器更好,因为大量使用元素选择器是很慢 分类命名方法(使用单个字母加上"-"为前缀) 布局(grid)(.g-)...模块(module)(.m-) 元件(unit)(.u-) 功能(function)(.f-) 皮肤(skin)(.s-) 状态(.z-) 统一语义理解命名 布局(.g-) 语义 命名 简写 文档...父级选择器伪类选择器 (:first-letter, :hover, :active etc) 伪类元素 (:before and :after) 父级选择器声明样式 (.selected, .active...-- 使用 BEM 约定 --> // good .c-Button { border: none; border-radius: 2px; } .c-Button--close

    2.6K54

    CSS基础-CSS选择器:ID、Class、Tag

    Class选择器 作用与特点 Class选择器通过元素class属性来选择元素,具有更高灵活性重用性。一个class可以在多个元素上使用,也可以在一个元素上使用多个class。...随意命名class可能导致代码难以阅读维护。 避免:遵循BEM(Block Element Modifier)或其他命名约定,确保class名称具有描述性语义性。...问题:过度使用,导致选择器权重问题。过多嵌套复合class选择器可能导致优先级混乱。 避免:尽量保持选择器简洁,合理使用组合选择器伪类,避免不必要权重增加。...在实际应用中,合理选择使用哪种选择器,遵循良好命名规范,可以有效避免样式冲突维护难题,提升开发效率。...随着CSS发展,诸如属性选择器、伪类选择器等高级选择器也日益重要,它们进一步丰富了CSS表达能力,值得深入学习应用。

    65510

    从element-ui源码来看BEM实现

    BEM代表“块(block),元素(element),修饰符(modifier)”,开发组件过程中经常使用这三个实体,而在选择器中,这三个实体由以下符号来表示扩展关系: - 中划线:仅作为连字符使用...__ 双下划线:双下划线用来连接块子元素。 _ 单下划线:单下划线用来描述一个块或者块子元素一种状态。...我在element组件库中mixins.scss文件中找到了想要答案。 接下来我要讲就是如何利用sass,编写具有可读性可维护性BEM规则css代码。...,而接下来三个函数,分别判断了是否存在修饰符、flag例如(.isCenter)、伪类情况。...上面的所有代码都在这里哦,需要可以直接看完整代码学习。

    1.9K30
    领券