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

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 border属性的使用方法和技巧

    CSS Border属性的使用方法和技巧 Border是什么 Border用于设置HTML元素的边框。Border由一个或多个值组成,分别设置边框的宽度、样式和颜色。可以通过CSS的Border属性来设置边框。 Border属性语法 CSS的Border属性语法如下: border: border-width border-style border-colo…

    css 2023年6月9日
    00
  • css下div下同行多元素右对齐

    要实现CSS下div下同行多元素右对齐,可以使用以下两种方式: 使用Flex布局 Flex布局是CSS的一个强大布局方式,可以实现简单的对齐需求。 要实现多个元素右对齐,可以将这些元素放在一个Flex容器中,添加justify-content: flex-end样式即可。同时,还需要给这些元素指定宽度,保证它们不会抢占Flex容器的空间。 下面是一个示例代码…

    css 2023年6月10日
    00
  • css实现缕空遮罩层的示例代码

    下面是详细的CSS实现缕空遮罩层的示例代码攻略。 缕空遮罩层的概念 在很多网站中,我们经常看到页面上有一个遮罩层,这个遮罩层的作用是阻止用户对页面上的其他元素进行操作,同时,还要突出显示一部分元素,这就是缕空遮罩层。常见的应用场景包括图片预览、弹窗提示、页面信息展示等。 实现方法 实现缕空遮罩层的方法有很多种,这里介绍两种常见的方法。 方法一:使用伪元素 首…

    css 2023年6月10日
    00
  • css中引入svg来兼容部分安卓机显示0.5px边框的示例

    针对“CSS中引入SVG来兼容部分安卓机显示0.5px 边框”的问题,以下是完整攻略: 1. 问题背景 有些安卓机对于0.5像素边框的支持不完全,当我们对元素进行0.5px的边框设置时,可能会出现边框并不是显示在元素边缘的情况,因为部分机型对于0.5px的边框会默认向上取整为1px。 2. 解决方案 为了解决这个问题,我们可以使用 SVG 代替边框的方式来达…

    css 2023年6月10日
    00
  • html css 控制div或者table等固定在指定位置的实现方法

    要让div或者table等固定在指定位置,需要使用CSS的position属性。 position属性 CSS的position属性控制元素在文档中的定位方式,并允许你使用top、right、bottom和left属性进行微调。 值: 值 描述 static 默认值。元素通常在文档中按照其自然位置进行排列 relative 相对定位。元素相对于其正常位置进行…

    css 2023年6月9日
    00
  • 第六章之辅组类与响应式工具

    第六章之辅助类与响应式工具 一、辅助类 辅助类可以简单的理解为一组实用的CSS类,它们可以帮助快速实现常见的布局和样式需求,同时可以使代码更具可读性。Bootstrap提供了一系列的辅助类,这些辅助类可以在HTML标签中任意使用,可以简化页面的HTML结构,也可以提高CSS代码的复用性。 辅助类一般以 . 类名形式出现,例如 .d-none 表示隐藏元素、.…

    css 2023年6月10日
    00
  • 海量经典的jQuery插件集合

    海量经典的jQuery插件集合是一个包含了大量优秀的jQuery插件的开源项目,可以帮助开发者更加高效地开发网页和应用程序。以下是详细的攻略: 1. 获取插件集合 首先你需要获取插件集合,可以通过访问GitHub项目页面来获取。在项目页面中有两种方式可以获取源代码: 克隆项目:通过Git工具在命令行中执行git clone https://github.co…

    css 2023年6月11日
    00
  • 详解Vue学习笔记进阶篇之列表过渡及其他

    详解Vue学习笔记进阶篇之列表过渡及其他 什么是Vue过渡 Vue过渡是在Vue中实现元素的插入、更新和删除动画的方式。通过设置过度效果,可以让页面产生丰富多彩且生动的效果。 Vue过渡的基本用法 在Vue中使用过渡效果并不难,只需要使用Vue的<transition>组件来包裹需要过渡的元素即可。下面是一个使用过渡效果的简单示例: <tr…

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