BEM命名规范的详解

BEM (Block Element Modifier) 是一种前端命名规范,它的目标是提高代码复用率和可维护性。该规范在大型项目中使用越来越广泛,因为它使代码更易于理解和修改。

BEM 的基本概念

BEM 规则包括三个基本概念:块(Block)、元素(Element)和修饰符(Modifier)。下面对这些概念进行详细说明。

块(Block)

块是一个独立的组件,它具有明确的功能和语义。块的名称应该简洁、清晰,并且不能依赖上下文。例如,一个导航栏可能被称为 nav,一个标题可以被称为 heading

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

元素(Element)

元素是块的组成部分,它只有在块的上下文中才有意义。元素的名称应该与块的名称紧密相关,以双下划线(__)分隔。例如,导航栏中的每个链接可以被称为 link

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

修饰符(Modifier)

修饰符是块或元素的变体,它用于修改外观、状态或行为。修饰符的名称应该以单下划线(_)分隔。例如,一个大小为小的按钮可以被称为 button_small

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

BEM 的优点

使用 BEM 命名规范有以下几个优点:

可重用性

BEM 使组件更容易重用,因为它们与上下文无关。这意味着您可以将一个组件从一个页面移到另一个页面而不需要做任何修改。

更好的可读性

BEM 命名规范使代码更易于理解和修改。每个类都有一个明确的目的,并且不依赖于上下文。这使得开发人员能够更快地理解代码并进行修改。

更好的可维护性

BEM 命名规范使代码更易于维护。每个类都有一个清晰的目的,这意味着当您需要修改某些功能时,您可以更快地找到并修改相应的代码。

如何使用 BEM

块和元素

  1. 创建块时,请使用一个单一的 CSS 类来表示它。例如:.nav
  2. 当创建一个块的子元素时,使用两个下划线作为块名称和元素名称之间的分隔符。例如:.nav__item
---- ------------
  --- ------------------
    --- -------------------- -------- -------------------------------
    --- -------------------- -------- --------------------------------
    --- -------------------- ----

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

猜你喜欢

  • npm 包 custom-error-instance 使用教程

    简介 custom-error-instance 是一个 Node.js 模块,用于创建自定义错误类型的实例。使用该模块可以轻松地创建具有自定义错误名称、状态码和消息的错误类。

    6 年前
  • npm 包 combine-errors 使用教程

    在前端开发中,我们常常需要处理非常多的错误信息,但这些错误信息可能来自于不同的模块或库,因此在捕获和处理这些错误时,代码显得十分冗长。npm 包 combine-errors 可以帮助我们简化这个过程...

    6 年前
  • npm 包 localenv 使用教程

    随着前端项目的日益复杂,很多时候需要在不同的环境中测试和部署。localenv 是一个非常有用的 npm 包,可以帮助我们管理本地开发环境的配置。 安装 使用 npm 安装 localenv: ---...

    6 年前
  • npm 包 envvar 使用教程

    在前端开发中,我们经常需要访问环境变量。而 envvar 是一个可以方便地读取环境变量的 npm 包。本文将详细介绍如何使用 envvar 包,并附带示例代码。 安装 可以通过以下命令安装 envva...

    6 年前
  • npm 包 envobj 使用教程

    在前端开发中,我们通常会用到各种环境变量和配置信息。然而,在不同的环境下,如开发、测试、生产等,这些配置信息可能会有所不同。为了方便管理和使用这些配置信息,我们可以使用 npm 包 envobj。

    6 年前
  • npm 包 https-pem 使用教程

    简介 HTTPS 是一种保护 Web 通信安全的协议,而 HTTPS 证书则是这种协议的重要组成部分。生成 HTTPS 证书需要使用 OpenSSL 这样的工具,但对于前端开发者来说,使用 OpenS...

    6 年前
  • npm 包 next-line 使用教程

    什么是 next-line? Next-line 是一个 JavaScript 模块,它提供了一个简单的方法 nextLine() 来读取文本文件中的下一行。这个模块支持 Node.js 环境和现代浏...

    6 年前
  • npm 包 http-headers 使用教程

    在前端开发过程中,操作 HTTP 请求头是一项非常重要的任务。而 npm 上有一个名为 http-headers 的包,提供了对 HTTP 请求头进行操作的便捷工具。

    6 年前
  • npm 包 request-stats 使用教程

    简介 request-stats 是一个 Node.js 库,用于跟踪 HTTP 请求的各种统计信息,如请求时间、响应时间、状态码等。该库可以帮助开发人员快速分析和优化网络请求性能。

    6 年前
  • npm 包 log-http 使用教程

    前言 在前端开发中,我们经常需要记录 HTTP 请求的日志以便于调试和排查问题。而 log-http 是一个方便的 npm 包,可以帮助我们轻松地记录 HTTP 请求和响应的信息,包括请求方法、URL...

    6 年前
  • 当下的浏览器格局

    当下的浏览器格局 随着互联网的发展,浏览器已经成为人们最常用的工具之一。在前端开发中,了解当下主流浏览器的特点和差异,可以帮助我们提高开发效率,确保网站在不同浏览器上的兼容性。

    6 年前
  • Netflix 使用 GraphQL 的经验总结

    Netflix 使用 GraphQL 的经验总结 Netflix 是一个全球知名的视频流媒体平台,其 Web 应用程序使用了 GraphQL 技术。GraphQL 是一种由 Facebook 开源的查...

    6 年前
  • npm 包 react-whc-notification 使用教程

    使用 React-whc-notification npm 包的指南 React-whc-notification 是一个流行的 npm 包,它提供了一个简单易用的通知组件,可以在 React 应用程...

    6 年前
  • 浏览器存储之争

    在前端开发中,浏览器存储是一个非常重要的话题。浏览器存储技术允许网站在本地存储数据,以便用户可以在不同的浏览器会话和页面之间共享数据。本文将介绍三种常见的浏览器存储技术:cookie、localSto...

    6 年前
  • npm 包 merry 使用教程

    在前端开发中,我们经常需要使用各种工具来提高生产力和效率。其中,npm 是前端开发中最常用的包管理工具之一。而 merry 则是一个非常实用的 npm 包,它可以帮助我们轻松地创建出漂亮的动画效果。

    6 年前
  • NPM 包 Abstract-Logging 使用教程

    什么是 abstract-logging? abstract-logging 是一个 Node.js 日志库,它提供了一种抽象化的方式来记录应用程序中的日志。使用 abstract-logging 可...

    6 年前
  • npm包 hapi-pino 使用教程

    介绍 在前端开发中,使用Node.js的项目通常会使用npm包来处理依赖关系。hapi-pino是一个优秀的npm日志框架,它可以让我们轻松地记录应用程序的日志信息。

    6 年前
  • npm 包 http-ndjson 使用教程

    简介 http-ndjson 是一个 Node.js 模块,用于解析和生成 NDJSON(Newline Delimited JSON)格式的数据。它支持从 HTTP 请求中读取 NDJSON 数据流...

    6 年前
  • npm 包 pino-http 使用教程

    pino-http 是一个基于 pino 的 Node.js HTTP 请求日志记录器,它可以帮助你在记录请求和响应时获得更好的性能,并提供了更多有用的信息。本文将详细介绍如何使用 pino-http...

    6 年前
  • npm 包 pino-colada 使用教程

    简介 pino-colada 是一个基于 pino 的日志输出工具,它可以将 JSON 格式的日志以可读性更高的形式输出到控制台。同时它支持自定义格式化,让你可以根据自己的需求输出更满足业务场景的日志...

    6 年前

相关推荐

    暂无文章