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日

相关文章

  • JavaScript+Canvas实现文字粒子流特效

    下面是“JavaScript+Canvas实现文字粒子流特效”的完整攻略。 1.了解Canvas 在使用Canvas前,要先了解一下Canvas的基本知识。Canvas是HTML5新提出的一项二维图形技术,在网页中实现动画效果、游戏绘画、数据图形绘制等功能,通常使用JavaScript与之配合。 2.准备文本素材 首先需要准备一张用于生成粒子效果的文本素材,…

    css 2023年6月10日
    00
  • Js制作点击输入框时默认文字消失的效果

    要实现点击输入框时默认文字消失的效果,可以使用JS来监听输入框的点击事件,并且在输入框被点击时,将输入框文本内容设置为空,从而达到在点击输入框时默认文字消失的效果。 下面是实现点击输入框时默认文字消失的步骤: 为需要实现该效果的输入框设置一个默认值,例如“请输入内容…”。 <input type="text" value=&quot…

    css 2023年6月10日
    00
  • jQuery实现的上拉刷新功能组件示例

    下面我来详细讲解一下如何实现“jQuery实现的上拉刷新功能组件示例”。 jQuery实现的上拉刷新功能组件示例 一、背景介绍 上拉刷新是移动端开发中常用的一种交互方式,它可以让用户在页面下拉到指定位置时进行数据加载,从而提高用户体验。本示例将使用jQuery来实现上拉刷新功能。 二、示例代码分析 示例代码中主要分为两个部分:HTML部分和JavaScrip…

    css 2023年6月10日
    00
  • 使用CSS实现盒子水平垂直居中的方法(8种)

    当我们需要将一个盒子水平垂直居中时,可以使用CSS来实现。下面介绍8种常用的方法,详细攻略如下: 1. 使用flex布局 通过CSS中的display: flex可以实现盒子的水平垂直居中。 .container { display: flex; justify-content: center; align-items: center; } 示例代码: &l…

    css 2023年6月10日
    00
  • 纯css写一个大太阳的天气图标的方法示例

    下面是“纯css写一个大太阳的天气图标的方法示例”的完整攻略: 一、准备工作 在开始之前,你需要先准备好以下内容: 一个文本编辑器,如VSCode或Sublime Text。 一个支持CSS3的浏览器,如Google Chrome、Firefox等。 一个基本的HTML文件,用于容纳并展示该图标。 二、开始制作 1. 设置基本样式 在HTML文件中,我们首先…

    css 2023年6月10日
    00
  • CSS3与动画有关的属性transition、animation、transform对比(史上最全版)

    CSS3与动画有关的属性transition、animation、transform对比(史上最全版) 1. transition属性 transition属性是CSS3新特性,用于设定样式过渡效果,在原样式和新样式之间添加过渡动画。它需要指定过渡的属性、过渡的时间以及过渡的方式。过渡的属性可以是任意一个CSS属性,过渡时间可以是秒或毫秒,过渡方式可以是线性…

    css 2023年6月9日
    00
  • background和background-Color的区别介绍

    当我们为一个元素设置背景时,可以使用两个属性:background 和 background-color。虽然两个属性都用来设置背景颜色,但是它们的含义不同,下面分别来介绍。 background 属性 background 属性用于设置背景的所有相关属性,包括背景颜色、背景图片、背景位置、背景重复、背景尺寸等等。 语法如下: background: bac…

    css 2023年6月9日
    00
  • Dreamweaver怎么添加边框? Dreamweaver边框的制作方法

    Dreamweaver是一个流行的网页制作工具,通过它,我们可以方便地添加边框来美化我们的网页。下面是实现此功能的详细步骤: 使用Dreamweaver添加边框 步骤1:选择需要添加边框的元素 在Dreamweaver中,我们需要先选中需要添加边框的元素。这个元素可以是一个单独的对象,比如文本框或图片,也可以是整个页面,如果你需要为整个页面添加边框。 步骤2…

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