CSS规范BEM CSS和OOCSS的示例代码详解

yizhihongxing

CSS规范BEM CSS和OOCSS的示例代码详解

引言

在日常前端工作中,CSS规范的重要性不言自明。 CSS标准的定义和规范比较宽泛,因此前端工程师们经常会遇到样式混乱、代码重复、可维护性差,难以改造等问题。为了解决这些问题,我们需要编写遵循统一规范的CSS代码,其中BEM CSS和OOCSS是目前流行的两种规范方式。本篇文章主要讲解BEM CSS和OOCSS规范,并提供相应的示例代码。

主体

BEM CSS

BEM CSS全称为块、元素、修饰符CSS,是一种常用的命名规范,其核心思想是把CSS代码分解成更小、更可复用的组件,进而编写出易于扩展和维护的网页样式。

BEM的基本原则

  • 块块 (Block):定义一个独立的并拥有独立样式的模块,通常使用名词来描述它。比如:

  • 元素 (Element):块组成的部分或者一个局部的部分被称为元素,通常使用块的名称为前缀,中间用两个下划线'__'连接,后跟描述元素的名字,例如:

  • 修改符 (Modifier):定义块或元素的一个属性,其为可选元素,通常使用破折号‘--’连接,例如:

    或者

具体的BEM代码示例:

<!-- .block -->
<div class="header">
    <!-- .header__logo -->
    <img class="header__logo" />
    <!-- .header__nav -->
    <nav class="header__nav">
        <!-- .header__nav-item -->
        <a class="header__nav-item" href="#">home</a>
        <!-- .header__nav-item -->
        <a class="header__nav-item header__nav-item--active" href="#">about</a>
    </nav>
</div>

上述代码中,header是块,logo和nav是header的元素,nav-item是nav的元素,nav-item--active是nav-item的修改符。

BEM的优点

  • 提高代码的重用率和可扩展性:通过分解CSS代码,更小的模块可以更容易地重用和转换,更有良好扩展性;
  • 更少的命名冲突:通过使用BEM规范分离块,元素和修改符,大大减少了类名的命名冲突问题;
  • 更加易于维护和升级:样式表的代码结构清晰,单一列表可读,查询和维护更加容易。

OOCSS

OOCSS全称为面向对象CSS,是一种“面向对象”的CSS编程范式,其引入了类似于面向对象的代码设计概念,通过分离结构和外形,强调CSS代码的可复用性,并且遵循“DRY”原则 (Don't Repeat Yourself)。

OOCSS的基本原则

  • 对象组件 (Object Component) :是指需要重复使用的共同代码,可以通过类来组合实现。
  • 布局设置 (Layout Setting) :是指需要在不同的设备或场景中设定的代码组件,其主要划分应该是布局容器
  • 皮肤 (Skin) :即变化,因为需要经常改变。例如,按钮的皮肤是蓝色和绿色。

具体的OOCSS代码示例:

<header class="header">
    <h1 class="header-title">Title</h1>
    <nav class="nav">
        <ul class="nav-list">
            <li class="nav-item nav-item-selected nav-item-home">
                <a class="nav-link" href="#">Home</a>
            </li>
            <li class="nav-item nav-item-selected nav-item-about">
                <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item nav-item-selected nav-item-contact">
                <a class="nav-link" href="#">Contact</a>
            </li>
        </ul>
    </nav>
</header>

上述代码中,header是一个对象组件,nav-list和nav-item是对象组件中的小部件。 nav-list和nav-item也是布局设置的一部分,被嵌入到header中。

OOCSS的优点

  • 提高代码的重用性: 分离结构和样式,更好的定义样式,同时减少重复;
  • 更少的样式冲突:通过 模块 (Module) 和 状态 (State) 这两种类别的基础CSS组件的继承,减少了多种样式的冲突;
  • 更加易于维护和升级:利用模块和状态的继承和重用,代码更加干净和简化,便于维护。

结论

BEM CSS和OOCSS是两种优秀并且广泛应用的CSS规范方式,它们的核心思想都是分解CSS代码和提高代码重用率,进而提高代码的可扩展性、可维护性和可重构性。通过遵循BEM CSS和OOCSS规范,我们可以更好地处理CSS代码中的问题,并快速高效地进行网站开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS规范BEM CSS和OOCSS的示例代码详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 使用CSS自定义属性实现骨架屏效果

    使用CSS自定义属性实现骨架屏效果是一种常见的前端技巧,通过优化页面加载速度和用户体验,提升网站的性能。下面是详细的攻略: 一、什么是骨架屏? 骨架屏是一种在页面加载耗时较长的情况下,优化用户体验的技术手段。它可以快速展示页面的大致结构和布局,让用户感觉到页面正在加载,同时不会直接出现空白的页面。 二、使用CSS自定义属性实现骨架屏的原理 使用CSS自定义属…

    css 2023年6月9日
    00
  • 全网最详细的vscode基础教程

    全网最详细的vscode基础教程攻略 介绍 Visual Studio Code(VS Code)是一款流行的开源IDE,它支持多种编程语言,包括JavaScript、Python、C++等。本教程旨在为初学者提供全方位的VS Code基础教程。 安装VS Code 首先,我们需要下载和安装VS Code。如果你还没有安装,你可以前往VS Code官网(ht…

    css 2023年6月10日
    00
  • HTML 向 XHTML1.0 兼容性指导

    HTML 向 XHTML1.0 兼容性指导主要包括以下几个方面: 1. DOCTYPE 声明 在 XHTML 中,需要在文档开头声明 DOCTYPE,HTML 4.01 的 DOCTYPE 声明如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www…

    css 2023年6月9日
    00
  • 提升WordPress 打开速度全面解决方案

    下面是关于提升WordPress打开速度的全面解决方案: 一、优化图片 处理过大的图片:网站的主要内容通常由文章和图片构成,其中图片往往是占用网页资源最多的元素,过大的图片会导致网页加载缓慢。如果你使用的是WordPress官方编辑器,在上传图片时可以选择“中等”或“缩略图”选项,这将限制图片的宽度和高度,同时压缩图片。另外,你也可以使用一些图片优化插件,如…

    css 2023年6月10日
    00
  • CSS3 background-image颜色渐变的实现代码

    CSS3 background-image颜色渐变的实现代码可以通过CSS3的background属性中的gradient函数来实现。 线性渐变 线性渐变可以通过以下代码实现: background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet); 其中…

    css 2023年6月9日
    00
  • 详解css3自定义滚动条样式写法

    下面是详解css3自定义滚动条样式写法的完整攻略: 1. 基础概念 在开始自定义滚动条样式之前,我们需要了解一些基础概念。CSS3中为我们提供了一个新的属性:::-webkit-scrollbar,用于控制滚动条的样式。其中,-webkit-是浏览器前缀,表示该属性仅在webkit内核的浏览器中生效。另外,::-webkit-scrollbar是一个伪元素,…

    css 2023年6月10日
    00
  • CSS margin全面了解

    CSS Margin全面了解 什么是Margin Margin指的是元素的外边距,用于控制元素与其它元素之间的距离。Margin可以是单个方向的,也可以是多个方向的,包括上、右、下、左四个方向。通过Margin,我们可以控制元素的外部距离、位置和布局。 Margin的相关CSS属性 以下是Margin的相关CSS属性:- margin:用来设置元素的外边距,…

    css 2023年6月10日
    00
  • 使用ZeroClipboard解决跨浏览器复制到剪贴板的问题

    使用ZeroClipboard解决跨浏览器复制到剪贴板的问题,需要遵循以下几个步骤。 步骤一:下载ZeroClipboard 在官方网站https://github.com/zeroclipboard/zeroclipboard下载ZeroClipboard文件,并将其解压缩。 步骤二:引入ZeroClipboard库 在html文件的<head&gt…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部