even

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、oocss

oocss的核心是将样式表设计为可利用,可维护和可扩展的模块,具体而言oocss具有以下几个特点:

原则一: 界面与结构分离: 将样式表从HTML文件中分离出来,并通过类名来关联HTML元素和样式规则,从而使得样式可以独立于文档内容存在,有助于提高代码的重用性并简化维护过程。

原则二: 抽象共同点:将可复用的样式转化为类(类别)的形式,并将共同点抽象到类的上层,从而降低代码重复度,使得代码更加清晰、简洁。

原则三: 继承与格式化:通过继承(拓展)已有的样式类来避免重复编写样式代码,从而提高编写效率。同时通过使用格式化占位符来避免冗余的代码。

原则四: 容错与可拓展:通过设计模块的结构和规范来最小化错误和异常,并且使其易于扩展和升级,以适应日益变化的需求

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>OOCSS</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
    <div class="button">Click Me</div>
</body>
</html>
/* button 模块 scss文件 */
.button {
  display: inline-block;
  width: 120px;
  height: 36px;
  line-height: 36px;
  text-align: center;
  font-size: 14px;
  color: #fff;
  background-color: #3a3b3c;
  border-radius: 6px;
  cursor: pointer;
}

/* 使用拓展占位符来创建类别 */
.button-primary {
  @extend .button;
  background-color: #4267b2;
}

.button-danger {
  @extend .button;
  background-color: #dc3545;
}

如果遇到需要可变的样式,那么就需要用两个类进行叠加

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>OOCSS</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
    <div class="button button-primary">Click Me</div>
</body>
</html>
/* button 模块 scss文件 */
.button {
  display: inline-block;
  width: 120px;
  height: 36px;
  line-height: 36px;
  text-align: center;
  font-size: 14px;
  color: #fff;
  background-color: #3a3b3c;
  border-radius: 6px;
  cursor: pointer;
}

/* 使用拓展占位符来创建类别 */
.button-primary {
  background-color: #4267b2;
}

.button-danger {
  background-color: #dc3545;
}

 2、css的BEM

BEM(块, 元素, 修饰符)是一种命名约定,用于帮助开发人员快速,可维护地编写可重复使用和模块化的CSS类

  • 块:是一个独立的可重复使用组件,如菜单、标题等。
  • 元素:是块内部的部分,由块名称和元素名称以双下划线(__)连接。例如,菜单的元素可以是菜单项。
  • 修饰符:用于修改块或元素的状态或行为,由块名称或元素名称及其修饰符以连字符( - )连接。例如,菜单可以有活动状态的修饰符。

使用BEM命名约定使得CSS类具有可预测性和可重用性,减少了样式表之间的冲突和复杂性,并使得更容易理解和修改

当然这些规则可以在团队中进行重新定义连接符

<body>
    <div class="menu__tab--style1">tab1</div>
    <div class="menu__tab--style1">tab2</div>
    <div class="menu__tab--style1">tab3</div>
    <div class="menu__tab--style1">tab4</div>
</body>

3、css的设计模式

SMACSS

 特点:易维护,易利用,可扩展

   核心:将 CSS 代码分解为如下五个不同的分类

  • Base  --  针对页面元素的基本样式定义,如字体、背景色、主要颜色等。这些规则应该是最少的且尽可能通用的
  • Layout  --  针对版面布局,如头部、尾部、侧边栏、主体区域等。这些规则通常应用于页面上的大型区域,例如网格、列和各个主要部分
  • Module  --  针对可复用的组件,如按钮、搜索框、导航栏等。这些规则仅仅将样式应用于相关的 HTML 的类,这些类仅用于特定的 DOM 所需的HTML结构
  • State  --  针对当某个状态发生时,元素的样式发生变化,如常见的 hover、active 和 disabled 状态。这些规则描述了元素被改变时的所有样式
  • Theme -- 针对主题和外观的规则,覆盖了前面四个部分的样式。通常适合在元素或模块层的次级模块中实现

   命名规范: .l-header,   .is-hidden,  .theme-nav

以目前的框架vue来开发项目,base相当于是normalize, 而Layout则会写在layout模块组件中,而Module则会写在常规模块中

           

 

 

posted on 2020-02-29 23:30  even_blogs  阅读(130)  评论(0编辑  收藏  举报