标题:深入解读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 样式分为五个分类:
- 基本样式(Base styles):包含了项目的重置和默认样式信息。
- 布局样式(Layout):负责管理整个页面及其各个结构。
- 模块(Module):每个模块应该是相对独立的,可重复使用的组件。
- 状态(State):用于定义“子状态”,例如 hover 或副本。
- 主题(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技术站