深入解读CSS的OOCSS和SMACSS以及BEM

yizhihongxing

标题:深入解读CSS的OOCSS和SMACSS以及BEM

作为网站的作者,你需要深入理解和掌握 CSS 的一些重要的技术,其中 OOCSS、SMACSS 和 BEM 是其中比较重要的三种技术。

OOCSS

OOCSS(Object-Oriented CSS)是一种 CSS 样式编写的方法,它的主要思想是将样式与 HTML 结构分离开来,将样式抽象为“对象”,从而实现样式的高度复用。OOCSS 的核心特点是“模块化”,将网页拆分成多个模块,每个模块都有自己的 CSS 样式。每个模块都只需定义自己的基本样式和组件,让整个网页更加清晰易用。

示例1:

// 定义了一个组件为.flexbox,可以使该组件内的元素具有弹性布局的样式
.flexbox {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
}

示例2:

// 定义了一个基本的列表样式类,以最小化代码重复
.list {
  margin: 0;
  padding: 0;
  list-style: none;
}

// 定义了一个列表样式类,同时该样式类继承了 .list 样式
.list-inline {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
}
.list-inline li {
  margin-right: 10px;
}

SMACSS

SMACSS 是关于如何管理并组织 CSS 的一本书,全称为 Scalable and Modular Architecture for CSS。SMACSS 旨在探讨一种 CSS 工作方式,以创建更易于开发、更易于维护和更可扩展的 Web 网站。

SMACSS 主张将 CSS 样式分为五个分类:

  1. 基本样式(Base styles):包含了项目的重置和默认样式信息。
  2. 布局样式(Layout):负责管理整个页面及其各个结构。
  3. 模块(Module):每个模块应该是相对独立的,可重复使用的组件。
  4. 状态(State):用于定义“子状态”,例如 hover 或副本。
  5. 主题(Theme):关于配色等主题属性的定义。

示例1:

/* 基本样式 */
html, body, div, span, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a {
  margin: 0;
  padding: 0;
  font-size: 100%;
  font-weight: normal;
  background: transparent;
  border: none;
  outline: none;
}

/* 布局样式 */
.container {
  width: 960px;
  margin: 0 auto;
}

/* 模块样式 */
.shopping-cart {
  background-color: #eee;
  border: 1px solid #999;
  border-radius: 5px;
  padding: 10px;
}

/* 状态样式 */
.shopping-cart:hover {
  background-color: #ddd;
}

/* 主题样式 */
body .theme-dark .shopping-cart {
  background-color: #333;
  color: #fff;
}

示例2:

/* 基本样式 */
html, body, div, span, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a {
  margin: 0;
  padding: 0;
  font-size: 100%;
  font-weight: normal;
  background: transparent;
  border: none;
  outline: none;
}

/* 布局样式 */
.container {
  width: 960px;
  margin: 0 auto;
}

/* 模块样式 */
.teaser {
  background-color: #eee;
  border: 1px solid #999;
  border-radius: 5px;
  padding: 10px;
}
.teaser h2 {
  font-size: 1.8em;
  font-weight: bold;
  margin-bottom: 10px;
}
.teaser p {
  font-size: 1.2em;
  line-height: 1.5em;
}

/* 状态样式 */
.teaser:hover {
  background-color: #ddd;
  cursor: pointer;
}

/* 主题样式 */
body .theme-dark .teaser {
  background-color: #333;
  color: #fff;
}

BEM

BEM 代表块(Block)、元素( Element)和修饰符(Modifier),是通过一种易于理解的方式来给 HTML 和 CSS 添加结构的方法。

BEM 的核心理念就是将每个组件看作一个整体,由“块”、“元素”和“修饰符”三个部分组成。

  • 块:代表一块明确的区域或组件,例如“按钮”、“导航栏”等。
  • 元素:代表块里面的一部分,例如按钮的“图片”、“标题”等。
  • 修饰符:更改块或元素的外观或状态。

示例1:

<div class="menu">
  <a class="menu__link menu__link--active" href="/home">首页</a>
  <a class="menu__link" href="/news">新闻</a>
  <a class="menu__link" href="/about">关于</a>
</div>

示例2:

<div class="card">
  <div class="card__avatar"></div>
  <h3 class="card__title">Jane Doe</h3>
  <div class="card__body">
    <p>Hi, I'm Jane Doe.</p>
  </div>
  <div class="card__contacts">
    <a class="card__contact card__contact--phone" href="tel:+1234567890">Call</a>
    <a class="card__contact card__contact--email" href="mailto:jane.doe@example.com">Email</a>
  </div>
</div>

以上是关于 OOCSS、SMACSS 和 BEM 的详细介绍,如果您能在实际开发中善用上述技术,那么您将更加得心应手,并提高您的网站开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入解读CSS的OOCSS和SMACSS以及BEM - Python技术站

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

相关文章

  • 如何用CSS让文字居于div的底部

    在 CSS 中,可以使用多种方法来让文字居于 div 的底部。下面提供两种常见的方法,包括示例说明和代码实现。 方法一:使用 flexbox 布局 可以使用 CSS 的 flexbox 布局来实现让文字居于 div 的底部。具体方法是将父元素的 display 属性设置为 flex,然后设置 flex-direction 属性的值为 column,这样就可以…

    css 2023年5月18日
    00
  • 彻底弄明白CSS3的Media Queries(跨平台设计)

    下面就为大家详细讲解“彻底弄明白CSS3的Media Queries(跨平台设计)”的完整攻略。 什么是 Media Queries Media Queries 是 CSS3 中的一个新特性,它允许我们在不同的设备、分辨率以及屏幕方向下,对网页的样式进行不同的设计和呈现。Media Queries 的出现,使得我们可以更加精细的设计网站,让网页在不同的设备上…

    css 2023年6月10日
    00
  • css textarea 高度自适应,无滚动条

    要实现CSS textarea的高度自适应且无滚动条,需要结合CSS的resize属性和JavaScript的代码实现。 1. 使用CSS的resize属性 CSS有一个resize属性,它可以定义元素是否可以被用户缩放,同时也能控制textarea的高度是否可以自适应。我们可以将resize属性应用到textarea元素上,并设置为vertical(垂直方…

    css 2023年6月10日
    00
  • css属性让网页文字实现竖排的几种方法

    下面我来详细讲解一下”CSS属性让网页文字实现竖排的几种方法”的完整攻略。 什么是竖排文字? 竖排文字(Vertical writing)就是将文字竖直排列的一种写作方式,又称为竖排版或纵排版。 实现竖排文字的CSS属性 CSS提供了一些属性来实现竖排文字,下面就来详细介绍一下: writing-mode属性 writing-mode属性控制文本的书写模式。…

    css 2023年6月9日
    00
  • 遗迹灰烬重生武器有哪些 武器、套装与特性收集攻略

    遗迹灰烬重生武器攻略 一、遗迹灰烬重生武器介绍 遗迹灰烬重生是《原神》中的一个重要活动,其中最重要的奖励之一就是遗迹灰烬重生武器。在这个活动中,你可以通过完成任务、挑战宝箱和购买商品等方式获得遗迹灰烬重生装备和材料。 二、遗迹灰烬重生武器种类 在遗迹灰烬重生活动中,一共有7种不同的武器可以获得,分别是: 狼的末路 天空之刃 邪神之死 龙脊长弓 狂沙裂斩 冰风…

    css 2023年6月10日
    00
  • 详解CSS 怪异盒模型和标准盒模型

    详解CSS 怪异盒模型和标准盒模型 盒模型基础知识 CSS的盒模型是用来解释HTML文档中元素的布局的基本概念。任何元素都被认为是一个盒子,盒子由四个部分组成:外边距(margin)、边框(border)、内边距(padding)和内容(content)。 盒子的宽度和高度是由这四个部分的大小及其组成顺序来定义的。 在CSS标准之前,盒模型存在两种不同的模型…

    css 2023年6月10日
    00
  • AngularJS路由切换实现方法分析

    AngularJS路由切换实现方法分析 什么是AngularJS路由 AngularJS是一个基于MVC(Model-View-Controller)架构的前端Web框架。它提供了一套完整的工具集,使我们可以用更少的代码实现更多的功能。其中之一就是路由。 路由的作用是实现不同页面间的切换,它不仅可以实现单页面应用(SPA)的效果,而且还可以将页面分割成模块进…

    css 2023年6月9日
    00
  • 深入学习CSS中如何使用定位(小结)

    以下是“深入学习CSS中如何使用定位(小结)”的完整攻略: 深入学习CSS中如何使用定位 在 CSS 中,定位可以帮助用户更好地控制元素的位置和布局。以下是一些常见的定位属性和用法。 position 属性 position 属性用于指定元素的定位方式,常见的取值有 static、relative、absolute 和 fixed。以下是一个示例: div …

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