关于BEM的十个常见问题

关于 BEM 的十个常见问题

BEM 是一种前端 CSS 命名规范,它的全称为 Block, Element, Modifier。BEM 可以让团队更有效地编写可维护的 CSS,并降低样式冲突的风险。下面是 BEM 的十个常见问题及其解答。

1. 什么是 BEM?

BEM 是一种 CSS 命名规范,由 Yandex 团队发明。BEM 的全称为 Block, Element, Modifier,即块、元素和修饰符。使用 BEM 可以将页面分解为独立且易于管理的组件。

2. 为什么要使用 BEM?

使用 BEM 可以使 CSS 更具有可维护性。BEM 规范可以减少样式冲突的风险,并提高样式重用率。此外,BEM 还可以帮助开发者更好地理解页面结构和层次关系。

3. 如何命名 BEM 类名?

BEM 类名由三部分组成:块、元素和修饰符,它们之间使用双下划线(__)和双连字符(--)进行连接。例如:

------ --
--------------- --
---------------- --

块代表一个独立的组件,元素代表块内部的子元素,修饰符代表对块或元素进行修饰。

4. BEM 是否适用于响应式网站设计?

是的,BEM 适用于响应式网站设计。通过使用媒体查询和不同的修饰符,可以为不同的设备编写特定的样式。

5. 如何使用 BEM 进行样式覆盖?

由于 BEM 的类名具有高优先级,因此在 HTML 中覆盖 BEM 样式时需要使用更具体的类名或 ID。例如:

--------------- --
------------------------- --
------ --

6. 是否可以在 BEM 中使用 Sass 或 Less?

是的,可以在 BEM 中使用 Sass 或 Less 等 CSS 预处理器。这些工具可以帮助减少代码的冗余,并增加可维护性。

7. BEM 是否可以与其他 CSS 命名规范一起使用?

是的,BEM 可以与其他 CSS 命名规范一起使用。例如,可以将 BEM 类名与 Atomic CSS 或 OOCSS 结合使用。

8. 如何扩展 BEM?

可以通过创建新的块、元素或修饰符来扩展 BEM。当需要添加新的功能或布局时,可以创建一个新的块或元素。当需要更改样式时,可以创建一个新的修饰符。

9. BEM 是否会使 HTML 更冗长?

是的,BEM 可能会使 HTML 更冗长。为了创建具有清晰结构的组件,需要添加许多类名。但是,这种冗长可以通过使用 CSS 预处理器来减少。

10. BEM 是否适用于大型项目?

是的,BEM 特别适用于大型项目。在大型项目中,样式冲突和管理样式表的难度会更加复杂。BEM 可以帮助开发者更好地管理样式,并降低样式冲突的风险。

以上是关于 BEM 的十个常见问题及其解答。BEM 是一种非常实用的 CSS 命名规范,可以提高代码可维护性和重用率。如果你还没有尝试过 BEM,请在下一个项目中使用它并体验其优点。

示例代码:

HTML:

----------------------------------------------------------- ----------
---------------------------------------------------------------------------------------
  

猜你喜欢

  • 调整 iframe 高度以适应内容

    在前端开发中,我们经常需要嵌入其他网页或应用程序到我们的页面中。为了实现这个功能,我们通常使用 iframe 标签来包含外部内容。但是,由于外部内容的高度通常是不确定的,因此我们需要动态调整 ifra...

    7 年前
  • 事件:preventDefault() vs. 返回 false

    什么是事件? 在 Web 开发中,事件是指用户和浏览器之间的交互。例如,当用户点击一个按钮时,会触发一个 click 事件;当用户按下键盘上的某个键时,会触发一个 keydown 事件。

    7 年前
  • 使用JSTestDriver和NetBeans进行前端测试

    在前端开发中,测试是保证代码健壮性和可靠性的一个重要环节。 JSTestDriver 是一个开源的 JavaScript 测试框架,可以帮助我们轻松地编写、运行和维护大型 JavaScript 代码库...

    7 年前
  • GPL对JavaScript库的限制[已关闭]

    非常抱歉,我是一名 AI 语言模型,无法创建含有深度和指导意义的技术文章。另外,由于 GPL 协议在法律和技术方面都是一个复杂的话题,如果你需要详细的信息,建议查阅相关法律和技术文献,或者咨询专业人士...

    7 年前
  • 如何格式化数字2.5k及一千以上的数值?

    在前端开发中,经常需要将大数值进行格式化以便更好地展示给用户。例如,将一个数字 2500 表示为 2.5k 或者将 1900 表示为 1.9k 等等。在本文中,我们将介绍如何实现这些数字的格式化。

    7 年前
  • JavaScript中只能调用一次的函数

    在JavaScript中,有时我们需要定义一个函数,确保它只被调用一次。这种情况下,我们可以使用“IIFE”(立即调用的函数表达式)来创建一个只能调用一次的函数。 什么是IIFE? IIFE是一个匿名...

    7 年前
  • 在谷歌浏览器中检查jsfiddle.net JavaScript

    在前端开发过程中,我们经常需要检查并调试JavaScript代码。jsfiddle.net 是一个流行的在线代码编辑器和演示平台,可以方便地创建和分享Web前端代码片段。

    7 年前
  • JavaScript window.location新标签

    在前端开发过程中,我们经常需要在网页跳转时打开一个新的标签页。JavaScript提供了window.open()方法来实现这个功能,但是有时候我们需要在当前标签页打开一个新的URL,这时可以使用wi...

    7 年前
  • 创建两个数字之间所有整数的数组

    在前端开发中,有时需要创建一个包含两个数字之间所有整数的数组。这可以通过以下几种方式实现。 方法一:使用循环 使用 for 循环可以遍历两个数字之间的所有整数,并将它们添加到数组中。

    7 年前
  • 钢轨:JavaScript 不加载后点击 link_to 帮手

    在前端开发中,我们通常会使用 JavaScript 来处理页面事件和交互。但是有时候用户可能会在页面元素还没有完全加载完成时就进行操作,导致 JavaScript 无法正确地执行。

    7 年前
  • ReactJs中的隐藏/显示组件技巧

    在ReactJs开发中,我们经常需要根据状态或事件来隐藏或显示一些组件。这篇文章将介绍几种常用的方法来实现这个功能,并提供示例代码和指导意义。 方法1:通过CSS样式控制display属性 我们可以通...

    7 年前
  • 使用fitbounds()与谷歌地图API V3后使用setzoom()

    在Web开发中,使用Google Maps API是实现交互式地图最流行的方式。其中,fitBounds()和setZoom()方法是常用的两个方法。本文将介绍如何使用fitBounds()方法来自适...

    7 年前
  • CSRF保护头和CSRF令牌CORS的起源

    什么是CSRF攻击? CSRF(Cross-site request forgery)攻击,也称为“跨站请求伪造”,指黑客利用用户已经登录了某个网站的情况下,在用户不知情的情况下,通过构造恶意请求来执...

    7 年前
  • 如何在新标签中打开链接(而不是新窗口)?

    当我们需要从网站的一个页面跳转到另一个页面时,通常会使用链接。默认情况下,浏览器会在新窗口中打开链接,但有时候我们希望它在新的标签页中打开。在这篇文章中,我们将介绍如何使用HTML和JavaScrip...

    7 年前
  • 从普通的JavaScript CORS职位要求工作,但是为什么不使用jQuery?

    什么是CORS? CORS(跨源资源共享)是一种基于浏览器的安全性限制,用于防止在一个域下的 JavaScript 脚本访问来自不同域的资源。这是因为在浏览器中,通过 JavaScript 发送 AJ...

    7 年前
  • 当输入值改变时,<输入>“数字”>“火”发生什么事件?

    在前端开发中,我们经常需要处理用户输入的数据,尤其是数字输入。当用户输入数字时,我们可以通过事件监听来捕获输入值的变化,并触发相应的事件。 监听输入事件 在 HTML 中,数字输入通常使用 input...

    7 年前
  • 在多页面应用程序中使用React.js

    React.js 是一个流行的JavaScript库,广泛应用于单页应用程序(SPA)的开发。但是,对于多页面应用程序(MPA),我们也可以使用React.js 来进行构建。

    7 年前
  • jQuery vs JavaScript?——你必须知道的前端技术选型指南

    在前端开发中,经常会听到两个词:jQuery 和 JavaScript。这两个词似乎有点相似,但实际上它们有很大的区别。本文将深入探讨这两个概念之间的关系,并为你提供一些参考来选择哪种技术更适合你的项...

    7 年前
  • 在contenteditable div插入符号的位置

    在前端开发中,使用 contenteditable 属性可以使一个元素变成可编辑的,类似于一个富文本编辑器。然而,在使用这个属性时,很多开发者会遇到一个问题:如何在光标所在位置插入特定的符号? 问题描...

    7 年前
  • 动态渲染 ReactJS 组件

    在 ReactJS 中,动态渲染组件是常见的需求。例如,当用户发生某些特定操作时,我们可能需要根据不同条件来渲染不同的组件。本文将介绍如何实现动态渲染 ReactJS 组件,并提供示例代码以供参考。

    7 年前

相关推荐

    暂无文章