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

使用BEM修饰符类

BEM修饰符类是一种前端开发中常用的命名规范,用于标识和描述HTML元素的样式和状态。BEM是块(Block)、元素(Element)、修饰符(Modifier)的缩写,它的设计目标是提供一种清晰、可维护和可扩展的CSS类命名方式。

  1. 概念:BEM修饰符类是一种命名规范,用于标识和描述HTML元素的样式和状态。它通过将类名分为块、元素和修饰符三个部分,来构建可重用的、模块化的CSS代码。
  2. 分类:BEM修饰符类可以分为块(Block)、元素(Element)和修饰符(Modifier)三种类型。
    • 块(Block):代表一个独立的、可重用的组件或模块,它是一个高层次的抽象,可以包含多个元素和修饰符。块的类名应该以一个单词作为前缀,例如:.block
    • 元素(Element):代表块中的一个子元素,它是块的一部分,不能独立存在。元素的类名应该以块的类名作为前缀,用双下划线连接,例如:.block__element
    • 修饰符(Modifier):代表块或元素的不同状态或变体,用于修改其外观或行为。修饰符的类名应该以块或元素的类名作为前缀,用双短横线连接,例如:.block--modifier.block__element--modifier
  • 优势:BEM修饰符类的优势在于提供了一种清晰、可维护和可扩展的CSS类命名方式。
    • 清晰:BEM修饰符类的命名规范清晰明了,可以直观地了解到元素之间的层次关系和状态。
    • 可维护:BEM修饰符类的命名规范使得CSS代码易于维护,因为每个类名都有明确的含义,可以准确地定位和修改样式。
    • 可扩展:BEM修饰符类的命名规范支持模块化开发,可以方便地扩展和重用样式。
  • 应用场景:BEM修饰符类适用于任何需要组件化和模块化的前端开发项目,特别是大型项目或团队协作开发的场景。
    • 大型项目:BEM修饰符类可以帮助开发者组织和管理大量的CSS代码,减少命名冲突和样式覆盖的问题。
    • 团队协作:BEM修饰符类的命名规范清晰明了,可以提高团队成员之间的代码可读性和理解性,减少沟通成本。
  • 推荐的腾讯云相关产品和产品介绍链接地址:
    • 腾讯云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
    • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务。产品介绍链接
    • 腾讯云数据库(TencentDB):提供多种类型的数据库服务,包括关系型数据库和NoSQL数据库。产品介绍链接
    • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。产品介绍链接
    • 腾讯云物联网(IoT):提供全面的物联网解决方案,帮助连接和管理物联网设备。产品介绍链接
    • 腾讯云移动开发(Mobile):提供移动应用开发和运营的一站式解决方案。产品介绍链接
    • 腾讯云区块链(Blockchain):提供安全、高效的区块链服务,支持多种场景的应用。产品介绍链接
    • 腾讯云视频处理(VOD):提供视频上传、转码、剪辑、播放等一系列视频处理服务。产品介绍链接
    • 腾讯云音视频通信(TRTC):提供实时音视频通信能力,支持多种场景的应用。产品介绍链接
    • 腾讯云云原生应用平台(TKE):提供容器化应用的部署和管理平台,支持云原生架构。产品介绍链接
    • 腾讯云网络安全(Security):提供全面的网络安全解决方案,保护用户的云端资产。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

组件库使用BEM

bem的优势 最近在开发一个组件库,选择了BEM作为css的组织形式,主要考虑了以下三个方面的优势: 逻辑分层,容易理解。...BEM基于block、element、modify的组织形式,基本与组件的组织形式吻合。只要遵循了BEM的命名方式,对于开发和修改组件,哪些元素和状态已经存在,都可以直观的看出来。...反过来,通过html标记的BEM命名,可以直观地理解组件的功能和依赖关系。 强约束,便于团队协作。...只要定义好了大的框架和命名,那么团队其他成员基于BEM的规范进行开发,理解成本降低,而且基本不存在样式冲突的问题。...预编译器支持 目前常用的css预编译器,如sass、less、stylus,基本对BEM的支持都很好,举个例子(语法差异暂时忽略): .block { &__element { }

51030
  • TypeScript修饰符

    public 修饰的属性或者方法是共有的,可以在任何地方被访问到,默认所有的属性或者方法都是public private 修饰的属性或者方法是私有的,不能在声明他的外面访问 protected 修饰的属性或者方法是受保护的...,他和private类似,但有一点不同,protected成员在派生中仍然可以访问。...) } } 创建相关实例进行调用内部属性及方法, 当一个成员变量没有修饰的时候默认是可以访问的,默认是public修饰 ?...给name属性添加private修饰符, private 属性只能在的内部进行访问 ? 创建Child进行继承Person ? 我们可以在子类内部通过super关键字调用父的属性以及方法....子类继承父,子类可以就可以访问父的公开属性或者方法了.一旦属性被定义成私有的那么就不可以访问了.

    39310

    python中成员修饰符

    在java,c#的成员修饰符包括,公有、私有、程序集可用的、受保护的。 对于python来说,只有两个成员修饰符:公有成员,私有成员 成员修饰符是来修饰谁呢?当然是修饰成员了。...python成员: 字段,方法,属性 每个成员的修饰符有两种: 公有成员:内部外部都能访问 私有成员:字段前面加两个_,比如:__cc,只有自己的内部能访问,继承的父,子类均不能访问....__name) #不能这样访问 obj.f1()#的私有字段只能在的内部进行访问,不能在的外部进行访 #输出 alex 如果在外部访问就会报错: class Foo: def __init...__cc) Foo.f3() #使用访问,也可以使用实例对象访问 #输出 123 使用实例对象访问: class Foo: __cc = "123" #创建私有静态字段 def...__cc) obj = Foo() obj.f3() #使用实例对象访问 二、公有成员: 公有成员的特征是:可以在的内部访问,也可以在的外部访问 1、修饰的普通字段 class Foo:

    38710

    java的访问修饰符

    1、java中外部类的访问修饰符有如下四种: public,默认,abstract,final // public,默认,abstract,final。...,即在同一个包中可以访问; abstract是表示该类为一个抽象,不能实例化该类,即不能使用Test3 test3 = new Test3();的方式获取Test3的实例。...如果要使用它则需要找一个继承该类; final表示该类不能被子类继承,该类即为最终,不可再被继承。 2、为什么不能用private和protected修饰外部类呢?...内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。...当一个内部类使用了private修饰后,只能在该类的外部类内部使用。 2、protected:受保护的,同一个包内或者不同包内的子类可以访问。

    1.1K20

    Java中,及其组成所使用的常见修饰符

    Java中,及其组成所使用的常见修饰符 (1)修饰符的分类: 权限修饰符:private、默认、protected、public 状态修饰符:static、final  抽象修饰符:abstract...(2)常见的及其组成所使用修饰符: 修饰的: 有:默认、public、final、abstract         示例如下:           class Demo...{}        //默认修饰符           public class Demo {}           final class Demo {}    //最终,不能被继承...abstract class Demo {}   //抽象 常用修饰符:public class Demo {} 特别注意:静态不可以修饰外部类,但是可以修饰内部类。...          public static final int d = 70;   //表示自定义的通过名访问的常量 常用成员变量的修饰符:private int x = 10; -

    55420

    关于BEM的反思

    反思BEM 在“学习爱BEM”中,我要表明我对BEM语法的新感受。 我很高兴地报告说,经过2年以上,我仍然对我的选择感到满意。 当我们在项目中选择代码风格时,我们使用BEM和ITCSS的组合。...我的经验告诉我,这导致不必要的长名(BEM已经有错,并且没有必要尝试在CSS中反映HTML的结构。 解决这个问题花了我很长一段时间。 在CSS中反映HTML的底层结构似乎是一个干净的想法。...缩短修饰符长度 在BEM中,修饰符用两个连接符表示。 例如,我们有一个带有基c-button的按钮。 定义一个大按钮,它是常规按钮的变体,使用c-button--large修饰。...基本思想是你用“ - ”编写修饰符,并且他们有一个责任,即他们应该只修改一件事情。 使用这种做法可以缩短HTML,但我认为这是有问题的。 BEM是如此强大之处在于重构。...举个例子:如果你的命名为c-button--large,如果你想去除它,你可以在项目中包括javascript,html, css中搜索使用到这个字符串的地方。 使用这种方法,你能寻找到什么?

    62320

    java中修饰符的用法_定义修饰符有哪些

    目录 一、 修饰符 二、方法修饰符 三、变量修饰符 四、访问控制修饰符总结 ---- 一、 修饰符 1.访问修饰符:公共修饰符public 公共修饰符 public : Java 语言中的访问控制符只有...注意:Java或属性如果缺省访问控制修饰符,就属于default/friendly类型修饰符,但是实际上Java中并没有名为default或者friendly的访问修饰符(即不能使用default或者...(2)静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个方法;而不使用static 修饰、限定的方法是属于某个具体对象的方法。...由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。...使用修饰符 protected 的主要作用是允许其它包中的子类来访问父的特定属性。 (4)缺省默认修饰符 :没有访问控制符或者是用default修饰的成员变量可以被该类本身或同一包中的其他访问。

    75410

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

    BEM 将页面的名分为块(Block)、元素(Element)、修饰符(Modifier)。...工具使用 u- 打头,后面接名(使用驼峰的方式命名),中间可以加上 sm、md、lg 这种响应式的规则。...命名规则:[-][-后代名][--修饰符],这样的命名方式,在编写 HTML 和 CSS 的时候有几个好处: 有助于区分组件的根元素,后代元素,以及用来修饰的; 降级名重复的几率...修饰符是一种表示组件特定状态的名,修饰符名称同样使用小驼峰规则来命名,并且和组件名直接需要用两个短横线(--)进行连接,这与 BEM 表现一致。...组件的命名方式外,还提供了完整的基础,以及测试套件用来检测你的 CSS 名是否符合规范,具体使用方法可以查看官方文档(https://github.com/suitcss/suit)。

    97110

    编写模块化CSS——BEM

    BEM 中,块被写为像 class 的名字一样,如下所示: ? BEM 使用 .form 而不是 元素的原因是因为 允许无限的可重用性,而即使是最基本的元素也可能改变样式。...如果设置了一个 .button 的按钮,则可以在任何 元素上选择是否使用 .button 。...这给我们引入了 BEM 的下一部分 —— 修饰符修饰符(Modifier) 修饰符是改变某个块的外观的标志。要使用修饰符,可以将 --modifier 添加到块中。...在传统的 BEM 中,当你使用修饰符时,你应该 将块和修饰符添加 到 HTML 中,以便在新的 .button--secondary 中不重写 .button 样式。 ? ?...因此如果我使用 -modifier (如某些方法建议的),我将无法一眼看出 -section 是否是修饰符。所以这是一个馊主意。

    2.1K70

    浅谈 Css 规范

    元素可以使用小写字母命名,例如 .header、.main、.footer等。 修饰符(modifier)是针对块或元素的特定状态或行为进行配置的方法。...修饰符可以使用中划线(_)或破折号(-)进行命名,例如 .header--large、.main--centered、.footer--light 等。 命名规则 使用大写字母命名块。...使用小写字母命名元素和修饰符修饰符必须紧跟着元素或块。 修饰符可以使用中划线(_)或破折号(-)进行命名。...避免样式冲突: BEM 的命名约定避免了样式冲突,每个块和元素都有独立的命名空间,不会受到外部样式的影响。 缺点: 命名冗长: BEM 的命名规范较为严格,可能导致名过长,增加了代码量和阅读难度。...OOCSS的话,需要创建更多的 “原子类”,并且每个样式对应一个,这样可以重复使用这些样式,避免写相同的样式。

    9410

    CSS命名法BEM与scoped、module

    module 这个没用过,也没有去弄个demo,大致意思就是可以自己定义编译的规则,把名编译成只对当前组件有效的字符串,可以是hash字符,也可以是带组件名名加hash字符串,最终就是得到唯一的名...,BEM由块(Block)、元素(Element)、修饰符(Modifier)组成,块__元素--修饰符: B:block,对应模块名,如dialog E:element 对应模块中的节点,如button...M:modifier 对应节点的状态,disabled 最终class名 dialog__button--disabled 使用BEM的element:el-cascader-node__label、...module:通过名,做到了绝对隔离,但又因为绝对隔离,修改样式或者复用又变得困难。 BEM:隔离和污染做的很好,但是名字太长长,命名困难,多人协作的情况下通过人为约定约束实现BEM太过困难。...在我看来,scoped > module > BEM,引用工具来约束和人为约束肯定是选择使用工具去约束,module和scoped对比,也只是工具对名的不同处理。

    66920

    从element-ui源码来看BEM实现

    以前看过一些CSS的编码规范,也照着规范编写代码,但是还是觉得自己的CSS编码风格不是很好,在平时开发中使用各个知名的组件库的时候,发现现在挺多组件库都是BEM的命名风格了,于是找了比较知名的element...BEM代表“块(block),元素(element),修饰符(modifier)”,开发组件的过程中经常使用这三个实体,而在选择器中,这三个实体由以下符号来表示扩展关系: - 中划线:仅作为连字符使用...type-block__element_modifier 以上的描述是从腾讯的前端规范库中找到的,简单的来说理解了块、元素、修饰符三个分类之后,就能大致理解BEM代码是什么样的结构了,可是了解结构是一方面...、flag例如(.isCenter)、伪的情况。...利用刚刚介绍的函数,以及块、元素、修饰符的实现代码,在sass中已经能非常高效率并且优雅的基于BEM规范的代码了。

    1.9K30

    正确使用 new 修饰符

    几乎 .NET 所有开发人员都知道 new 修饰符可以重新定义从基中继承的非虚成员,但是大部分开发人员并不知道怎么才能正确使用,甚至出现了滥用的情况。...这里边虽然使用了 new 修饰符,但是它不会把非虚方法转化为虚方法,只会在中增加一个方法。...除非是基里面的方法和派生中的方法重名的情况才可使用 new 修饰符。...我们在使用 new 修饰符前应该考虑清楚以后可能带来的后果,如果后其成本比直接修改名称要高,那么就应该修改派生中重名的方法名称。...二、小结 只有当基新增的方法名和派生中的方法名重名时才可使用 new 修饰符,并且使用 new 修饰符前应该考虑清楚以后造成的后果。

    33820

    面试官:了解 CSS 的 BEM规范?

    什么是BEM 如果你从未接触过BEM,那么你第一次接触到BEM的时候它是长这个样子的。...我们只需要设置了一个 .button 的按钮,然后可以在任何按钮上使用该类,就可以生成该组件的传统样式。...使用.button而不是用button的原因是因为允许无限的可重用性,而即使是最基本的元素也可能改变样式。...但是在实际的项目使用中,我们会发现一个按钮可能是大按钮,可能是小按钮,也可能是红色的,或者黄色的。于是就引申出了BEM的modifier。 什么是修饰符 修饰符是改变某个块的外观的标志。...要使用修饰符,可以将 --modifier 添加到块中。假如我们要添加一个默认按钮,一个主要按钮,一个大按钮,一个小按钮,一个主要的小按钮。

    55020

    访问修饰符使用

    访问修饰符的重要意义在于:控制、属性以及方法的可见性。 可见性,顾名思义,就是当前被修饰的内容对于其他内容是否可以访问的性质。...具体情况如下表所示: 情况&限制符 public protected default private 同一中 是 是 是 是 同一包中 是 是 是 子类 是 是 不同包中 是 上面的表格展示了使用不同的访问限制符时...按照这种情况,可以看到,private的限制能力最强,只能在同一中起作用,在本类以外的任何地方访问都会失败;而public是限制能力最弱的修饰符,正常来讲,在任何地方都可以对以public作为访问限制的访问...另外,如果没有标注任何修饰符,那么修饰符就是default,所以一定要特别注意。...需要注意: 修饰的时候,可以用的修饰符只有public和default(其实还有final),不得使用其他的修饰符,成员内部类可以使用private进行修饰。

    63630
    领券