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

如何使用BEM正确定位页面范围块

BEM(Block Element Modifier)是一种前端开发的命名规范和方法论,用于帮助开发者更好地组织和管理页面的样式和结构。它的核心思想是将页面划分为独立的块(Block),块内部可以包含元素(Element),并且可以通过修改器(Modifier)来改变块或元素的外观或行为。

使用BEM来正确定位页面范围块,可以按照以下步骤进行:

  1. 划分块(Block):首先,将页面划分为独立的块,每个块应该具有明确的功能和职责。块可以是页面的整个区域,也可以是一个独立的组件或模块。
  2. 命名规范:为每个块和元素选择一个唯一的类名,并按照BEM的命名规范进行命名。块的类名应该以单词形式表示,使用连字符(-)分隔单词。例如,一个导航栏块可以命名为nav,一个导航栏中的链接元素可以命名为nav__link
  3. 嵌套关系:在HTML结构中,按照块的嵌套关系来组织元素。即在块的父元素内部定义块的元素。这样可以更好地表示块与元素之间的关系。
  4. 修改器(Modifier):如果需要改变块或元素的外观或行为,可以使用修改器。修改器可以通过添加额外的类名来实现,类名应该以--开头。例如,一个高亮的导航栏链接可以使用nav__link--highlight来表示。
  5. 作用域限定:为了避免样式的冲突和污染,可以使用块的父元素作为作用域限定。即在块的类名前加上父元素的类名作为前缀。例如,一个位于header块内部的导航栏可以命名为header__nav

使用BEM可以带来以下优势:

  • 可维护性:BEM的命名规范和结构化的组织方式使得代码更易于理解和维护。开发者可以快速定位和修改特定块或元素的样式和行为。
  • 可重用性:通过将页面划分为独立的块和元素,可以更好地实现代码的重用。块和元素可以在不同的页面中使用,减少重复编写代码的工作量。
  • 可扩展性:BEM的结构化组织方式使得页面的扩展更加容易。可以通过添加新的块或元素来扩展页面的功能,而不会影响到其他部分的代码。

BEM适用于各种前端开发场景,特别是在大型项目或团队合作中更为有效。它可以帮助开发者更好地组织和管理页面的样式和结构,提高开发效率和代码质量。

腾讯云提供了一系列与前端开发相关的产品和服务,例如:

  • 腾讯云CDN(内容分发网络):用于加速静态资源的分发,提高页面加载速度。产品介绍链接:腾讯云CDN
  • 腾讯云云服务器(CVM):提供可扩展的虚拟服务器,用于部署和运行前端应用程序。产品介绍链接:腾讯云云服务器
  • 腾讯云对象存储(COS):用于存储和管理前端应用程序的静态资源,如图片、样式表和脚本文件。产品介绍链接:腾讯云对象存储

请注意,以上仅为示例,实际选择产品和服务应根据具体需求进行评估和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CSS规范--BEM入门

BEM的意思就是(block)、元素(element)、修饰符(modifier),是由Yandex团队提出的一种前端命名方法论。...使用BEM的诀窍是,你要知道什么时候哪些东西是应该写成BEM格式的。因为某些东西确实是位于一个的内部,但这并不意味它就是BEM中所说的元素。...一个元素的范围可能开始于任何上下文,因此你要确定只在你需要用到BEM的地方你才使用它。...一开始了解BEM的时候,可能会产生误解,出现以下不正确的命名方式: <!...在组件开发中其实不推荐使用原子类,因为这会降低组件的可复用性。可复用性的最理想状态就是组件不仅仅在不同的页面中表现一致,在跨项目的情况下,也能够运行良好。

1.1K20

浅谈 Css 规范

(block)是 BEM 的核心部分,它定义了一个 HTML 元素的基本结构和行为。可以使用大写字母命名,例如 .Header、.Main、.Footer 等。...使用小写字母命名元素和修饰符。 修饰符必须紧跟着元素或。 修饰符可以使用中划线(_)或破折号(-)进行命名。...将页面分解为独立的(Block)、元素(Element)和修饰符(Modifier),使样式更具模块化和可重用性。...可读性和可维护性: BEM 使用简洁明了的命名约定,使得 CSS 代码易于理解和维护。 增强可扩展性: BEM 的结构使得页面元素易于扩展和修改,不会影响其他部分的样式。...学习成本: 如果您正在使用 OOCSS 而您的同事不熟悉它,这将需要他们在继续之前学习如何使用它,这需要时间。

8310
  • CSS @scope 如何取代 BEM

    在这篇文章中,我们将展示如何在 Chrome 中使用 @scope 特性,以及如何使用它来替换前端项目中的 BEM。我们通过几个例子进行讲解,你可以在 GitHub 上的示例项目中查看并跟随操作。...在 GitHub 上的示例应用程序中, react-example 文件夹中有一个项目,其中的页面首先使用 BEM 进行了样式设计,然后使用 @scope 进行了重构。...最终注意到它是如何使样式更简洁、更易读的。 @scope 与 BEM 相比的其他优势 除了将 BEM 重构为 @scope 的优势外,使用 @scope 还可以更好地控制 CSS 级联。...CSS 级联是一种算法,它定义了网络浏览器如何处理组成 HTML 页面上元素的样式条件。 在处理任何前端项目时,开发者可能需要处理由于样式层叠而产生的奇怪结果。...通过使用@scope,可以通过紧密限定元素范围来控制层叠的副作用。 文件 no_scope.html 的样式和一些元素定义如下: <!

    10410

    编写模块化CSS:命名空间

    上周,我分享了如何使用BEM创建一个合理的CSS架构。 虽然BEM很棒,但它只是解决方案的一部分。 还有另一部分我还没有提到 —— 命名空间。...在今天的这篇文章中,我想与大家分享一下为什么只用BEM还是不够的,以及如何使用命名空间来弥补一些不足。 为什么BEM不能满足我们 我上周给大家展示的例子很简单。...我只向大家展示了如何处理单个中不同的修饰符和子代(或孙子代)元素。 但是如果有多个区块咱怎么办呐? 事情有点复杂。 我们使用一个网站范围的导航来说明两个之间的关系。 ? 好啦。 现在有两个区块。...换句话说,影响或其元素的位置的属性应该被抽象为一个单独的类用于重复利用。 在CSS中,定位的行为也称为布局。 在一般意义上,定位是布局。...既然你已经了解了命名空间的起源了,它可能会帮助你了解它的使用方式。 当涉及到布局时,我将布局分为两个不同的类别 —— 全局布局和级布局。 全局布局 全局布局是应用于所有页面的布局。

    2.7K70

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

    背景 经常我们在给一个大型网站写页面的css时候,经常会出现如下的css编写效果。...css编写的时候复用性不高,当存在多个样式一致的时候,我们可能会选择减少命名空间的方式来提升当前css的作用范围,但是可能会导致css样式冲突的问题。 由于我们的行业很棒,我们有很多推荐的解决方案。...什么是BEM 如果你从未接触过BEM,那么你第一次接触到BEM的时候它是长这个样子的。...但是在实际的项目使用中,我们会发现一个按钮可能是大按钮,可能是小按钮,也可能是红色的,或者黄色的。于是就引申出了BEM的modifier。 什么是修饰符 修饰符是改变某个的外观的标志。...要使用修饰符,可以将 --modifier 添加到中。假如我们要添加一个默认按钮,一个主要按钮,一个大按钮,一个小按钮,一个主要的小按钮。

    54220

    开发姿势篇——基础开发

    ,考虑复用性、易拓展性等,然后规划某些模块是否编写为可复用组件,复用范围等。  ...开发过程中,我们会写无数个级元素,那么其实每个级元素都相当于是一个盒模型,而一张完整的页面,正是由多个盒模型组合在一起组成的。如此来讲,我们的页面布局便是重中之重:我们应该如何合理的布局呢?...那么在我们的css代码中,如何使用BEM呢?...BEM 的意思就模块(Block)、元素(Element)、修饰符(Modifier),使用这种命名方式可以让 CSS 的类名变得有实际意义且能自我解释,具有更高的开发友好性。...找出问题原因:是什么问题导致的,具体表现如何? 确定解决办法:参考现成的解决方案,如哪些属性不能使用以及相应的 Hack 处理。 收集兼容性处理方法,积累成文档。

    1.1K20

    如何写出一套可维护的CSS库?

    前言 如何写出一套可维护的CSS库?不妨谈谈CSS的设计模式/架构吧。接下来将为你讲述三个主流的CSS设计思想和一个最近通用的CSS设计思想:OOCSS、SMACSS、BEMCSS、METACSS。...但是,我们不应过度使用,在不造成样式冲突的允许范围之内,尽可能使用短的、不限定html结构的选择符。这就是SMACSS的最小化适配深度的意义。...规则 BEM的命名模式在社区中有着不同方式,以下为 Yandex 团队所提出的命名规则为(本文中的代码使用该规则): ....由于是独立的,可以在应用开发中进行复用,从而降低代码重复并提高开发效率。可以放置在页面上的任何位置,也可以互相嵌套。...个人建议可以尝试使用 BEM 规范来书写代码。 BEM 命名会使得 Class 类名变长,但经过 GZIP 等压缩后,文件的体积其实并无太大影响。

    70830

    BEM 简介

    BEM 是一种前端项目开发的方法学,由 Yandex 公司提出。BEM 的名称来源于该方法学的三个组成部分的英文首字母,分别是(Block)、元素(Element)和修饰符(Modifier)。...这三个不同的组成部分称为 BEM 实体。 解决的问题 当一个项目比较大的时候,容易产出样式冲突的问题。BEM 主要解决样式的冲突的问题,以此帮助你在前端开发中实现可复用的组件和代码共享。...由于是独立的,可以在应用开发中进行复用,从而降低代码重复并提高开发效率。可以放置在页面上的任何位置,也可以互相嵌套。同一个可以在页面上存在多个实例。的不同实例具有相似的结构。...一个典型的的示例是菜单。一个项目中可以有多个不同的菜单,具体相似的结构和样式。 的名称应该是全局唯一的。一个页面可以 元素 元素是中的组成部分。元素不能离开使用。...在菜单中,每个菜单项是中的元素。 修饰符 修饰符用来定义或元素的外观和行为。同样的在应用不同的修饰符之后,会有不同的外观。当菜单出现在页面上的不同位置时,可以有不同的样式。

    79140

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

    BEM页面的类名分为(Block)、元素(Element)、修饰符(Modifier)。...(Block):一个是视觉上或者语义上的一个整体,它是一个具体且唯一的一个元素,例如,页面上的一个弹窗,或者是一个搜索框; 元素(Element):一般认为是的组成部分,元素比较用它父级的名称做为前缀...,但是,页面各个元素也是有主次之分的。...下面举个具体的案例,来看看掘金的页面布局: 页面上有一个头部,一个导航条,一个内容区域以及一个侧边栏,这些都属于布局的部分。...SMACSS 有很多的规则这里没有详细列出来,但是在关于 CSS 如何命名方面的规则其实比较少,而且它的布局规则与模块规则确实有些模糊,不太好区分。 作者:Shenfq

    95810

    Web前端进阶之路: 提升代码质量篇

    使用语义化标签的原因: 有利于开发者维护代码。语义化标签能提升代码的可读性,让开发者更快找到目标代码。 有利于SEO。爬虫通过语义化标签,能抓取更多页面的信息。...BEM 的名称来源于该方法学的三个组成部分的英文首字母,分别是(Block)、元素(Element)和修饰符(Modifier)。 CSS 的样式应用是全局性的,没有作用域可言。...具体来说:异常代码,是否捕获;写 switch 语句时,是否有 default 分支;当接口报错时,代码是否能正确处理;用户填表单的非法输入,是否会让程序奔溃;当用户输错网址,是否会跳404页面等等。...通过这个规范,用户可以了解版本变更的影响范围。...如何写出Bug少的代码 上面提到的:合理的代码设计可以降低Bug率。除此之外,还可以通过:代码评审,代码review和结对编程。 代码测试 通过代码测试,可以验证代码的正确性。

    1.7K20

    编写模块化CSS——BEM

    你是否做过多页面的大型网站或者其中一部分?如果做过,你可能会意识到 CSS 架构不够强大所带来的恐惧。你可能还会研究如何编写可维护的 CSS。 由于我们的行业很棒,我们有很多推荐的解决方案。...BEM 使用 .form 而不是 元素的原因是因为 类允许无限的可重用性,而即使是最基本的元素也可能改变样式。 按钮很好地阐释了可以包含不同样式的。...这给我们引入了 BEM 的下一部分 —— 修饰符。 修饰符(Modifier) 修饰符是改变某个的外观的标志。要使用修饰符,可以将 --modifier 添加到中。...有时,我发现需要使用很多单词来命名一个 BEM 或元素。举个例子 inner-section 。...他们是: 只把子子元素链接到有意义的 创建新的来保存元素 链接孙元素到 虽然 BEM 建议你将 BEM 元素写作 .block__element ,但它不会规定你的 HTML 应如何

    2.1K70

    如何更优雅的编写CSS代码

    CSS 代码组织方案:BEM 我曾经无数次给我的css类名提供我能想到的全部术语,你懂的,比如这些命名:.button .page-1 .page-2 。我经常不知道如何进行命名。...BEM 帮助我们解决该问题。BEM 是一种命名约定,表示“ 元素 修饰符”。 该方案可以使我们的代码更加结构化,更加模块化和更大的可复用性。现在我来解释下什么是、元素和修饰符。... 通常被视为一个组件。还记得小时候玩的乐高吗?好的,让我们回到小时候。 你打算如何建造一座简单的房子?你需要一个窗户,一个屋顶,一扇门,一些墙,就这些东西,这些就是我们需要的。...示例:.post--important,.post__btn--disabled 注意点 当你使用 BEM 时,你的命名只有 class 类名并且只使用 class 类名,没有 id ,没有标签,就只使用...这种情况请使用具体的 class 类名来替代。 是的,你的 HTML 文件将会因为 BEM 变得臃肿,但比起BEM带来的好处,这只是一个无足轻重的小缺点。 举个例子 这是给你的练习。

    1.9K10

    大型项目中的结构化CSS

    Peergrade.io处理CSS的方式 规则1: 使用前缀 (class类名) 在Peergrade.io中我们在所有样式名中使用前缀 .pg。 在你的CSS代码中如果不使用前缀可能会带来些麻烦。...当你写它的时候,你也许会想这里仅有一个.profile-description的列表命名,但一两个月后, 你必须要增改另一个列表时,混乱的结构已经超出你能想到的范围。...这允许我们仅可以修改在特定(block)级别的修饰符, 并且在子中不能重复修饰符(可以理解为父子嵌套时不重名;“E”在BEM中即元素elements)。...为了更好的理解BEM体系,可以转向这里 - 由Harry Roberts写的CSS指南 :BEM形式的命名。...---- 往期精选文章 使用虚拟dom和JavaScript构建完全响应式的UI框架 扩展 Vue 组件 使用Three.js制作酷炫无比的无穷隧道特效 一个治愈JavaScript疲劳的学习计划 全栈工程师技能大全

    1.2K40

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

    BEM 是 BlockElementModifier 的缩写 ,其中B 表示(block)、E 表示元素(element)、M 表示修饰符(modifier)。 这三个部分通常使用__ 与--连接。...即: .__元素--修饰符{} Block:代表了一个独立的级元素,可以理解为功能组件。...事实上: 从右到左进行匹配,遍历页面上每个 li元素并确定其父元素 #ul-id li {} 所以不要让你的css超过三层。...通过浏览HTML代码中的class属性,你就能够明白模块之间是如何关联的:有一些仅仅是组件,有一些则是这些组件的子孙或者是元素,还有一些是组件的其他形态或者是修饰符。...module.exports = {}; 为了让小伙伴编写符合 Bem 的规范,这里我们使用 stylelint-selector-bem-pattern 插件,它结合了插件 postcss-bem-linter

    77010

    CSS命名法BEM与scoped、module

    我一直使用的是-,因为各大UI库或者是CSS库都是使用-,这应该也成为一个标准规范。...CSS挺容易造成样式污染的,每个模块或者页面之间,总有一些命名容易相同,解决也简单,用权重或者重写,只是这种场景有时候还是挺头疼。...,BEM(Block)、元素(Element)、修饰符(Modifier)组成,__元素--修饰符: B:block,对应模块名,如dialog E:element 对应模块中的节点,如button...M:modifier 对应节点的状态,disabled 最终class名 dialog__button--disabled 使用BEM的element:el-cascader-node__label、...在我看来,scoped > module > BEM,引用工具来约束和人为约束肯定是选择使用工具去约束,module和scoped对比,也只是工具对类名的不同处理。

    64820

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

    无论你是否使用 BEM 命名法,你都应当确保 class 命名得当,力保一字不多、一字不少;将元素命名抽象化以提高复用性(例如 .ui-list,.media)。...注释 我使用行宽不超过 80 字节的文档风格注释: /** * This is a docBlock style comment * * This is a longer description...不过有时你可能希望告诉其他开发者 class 的使用范围。...ID 的私有度是 class 的 255 倍,所以在 CSS 中坚决不要使用。 选择器 务必保持选择器简短高效。 通过页面元素位置而定位的选择器并不理想。...思考一下,「我定位到这个元素,是因为它是 .header 下的 ul,还是因为它是我的网站导航?」这将决定你应当如何使用选择器。 确保你的核心选择器不是类型选择器,也不是高级对象或抽象选择器。

    8510

    怎样才能写出更好的 CSS

    当然,但是 CSS 框架也有一些缺点: 它经常会使用平淡无奇的设计。 CSS 框架使得定制很困难,更不用说超越框架了。 在使用之前,你必须先学习如何使用它们。...BEM 可以帮助我们解决这个问题。BEM 是一种命名约定,是英文 Block Element Modifier(元素修饰符)的缩写。 这种方法可以使我们的代码结构化,并提高模块化和可重用性。...这些就是我们的。它们有着本身的意义。 命名:名:.block 示例:.card、.form、.post、.user-navigation 元素 接下来,你应该如何用你的乐高积木建造一个窗口呢?...这个文件夹包含所有用于构建页面的组件,例如按钮、表单、滑块、弹出窗口等等。 layout:页面不同部分用到的布局,也就是说:页眉、页脚、导航、分区、你自己的网格等等。 pages:页面。...但是我该如何使用呢?我是说,哪些不支持scss文件的浏览器该怎么办呢?说的好!这是我们的最后一步,我们现在就来学习如何将SCSS编译为CSS。 4.

    1.7K10
    领券