css结构设计思想

时间:2022-09-05 22:39:53

本文摘自博客园-予沁安的文章:结构化CSS设计思维,作为学习笔记记录一下

1.LESS、SASS等预处理器给CSS开发带来了语法的灵活和便利,其本身却没有给我们带来结构化设计思维。很少有人讨论CSS的架构设计。

2.当我们的网站成长为企业级网站时,如果缺乏良好的架构和设计,我们的CSS会成为臃肿、重复和难以维护的一个混沌。借鉴后台软件开发思维。

3.应该根据它们的业务意义,划分未不同的类别。

  • 基本(元素)
  • 布局
  • 模块
  • 状态
  • 主题

4.保持分离。往结构化走。

5.基本规则的范畴:

基本规则是应用于基本元素级别的规则,作用于全局统一(默认)的风格。最好的一个案例:CSS的重置框架reset.css以及bootstrap的改进方案normalize.css,就完全是基本风格规则,不包含任何其他类型的规则。

6.布局规则的范畴:

(1)页面Page => 布局 Layout => 模块 Module => 元素 Element

(2)一个页面由布局组成,每个布局局部由一个或多个模块组成,一个模块有n个元素组成,看上去简单而完美,真正的结构化、模块化。然而,现实世界总是非线性的。在实际项目中,严格的层次关系设计,遇到了各类特例需要打破这个结构。

(3)当需要模块与模块之间的通信和信息交流时,这种结构却不能自然的支持。

(4)之所以有这些“特例”,根本原因就是分形思维只适合在模块这一级别,而不能往上扩展到布局和页面界别,也不能往下扩展到元素级别。

(5)布局就是布局,应该作为一个独立的方面存在。

(6)布局规则中,我们只关注组件之间的相互关系,不关心组件自身的设计,也不关心布局所在的位置。

比如用list做布局时:

.layout-grid{
margin:;
padding:;
list-style-type: none;
} .layout-grid > li {
display: inline-block;
margin: 0 0 10px 10px;
}

7.模块规则

模块可以放在布局的组件中,也可以放在另外一个模块内部,是嵌套的,就是分形。

用class和语义标签

我们一般都用class来定义模块

.module > h2{
padding: ......
}

用subclass定义嵌套元素风格

<ul class="list-group">
<li class="list-group-item">First item</li>
<li class="list-group-item">Second item</li>
<li class="list-group-item">Third item</li>
</ul>

8.状态规则

  • 状态改变布局风格或模块风格
  • 状态大部分时候和JavaScript相联系

最经典的案例就是表单数据的有效性,一般都会引入class定义,类似 is-valid;还有就是tab当前激活的状态 is-tab-active等,前者会改变表单的布局:增加warning信息;后者,会改变tab模块的显示背景来表明当前tab是被选中的。

9.主题规则

主题是整个网站的风格全面的改变。custom

10.基本规则和模块规则的正交案例

场景:

比如说我们网页中需要一个表格来显示一些信息

table{
width: 100%;
border-collapse: collapse;
border: 1px solid #000;
border-width: 1px 1px;
} td{
border: 1px solid #000;
border-width: 1px 1px;
}

css结构设计思想的更多相关文章

  1. dom4j解析器 基于dom4j的xpath技术 简单工厂设计模式 分层结构设计思想 SAX解析器 DOM编程

    *1 dom4j解析器   1)CRUD的含义:CreateReadUpdateDelete增删查改   2)XML解析器有二类,分别是DOM和SAX(simple Api for xml).     ...

  2. css模块化思想(一)--------命名是个技术活

    引子: 女孩子都喜欢买衣服,而我也不例外,奈何钱包太瘦,买不起高大上的定制,只能买撞衫率极高的休闲衣,不过对于我来说,我还是开心的,毕竟买衣服买的不仅是衣服,更是一种心情.在web前端的世界里,css ...

  3. css模块化思想(一)

    什么是css模块化思想?(what) 为了理解css模块化思想,我们首先了解下,什么是模块化,在百度百科上的解释是,在系统的结构中,模块是可组合.分解和更换的单元.模块化是一种 处理复杂系统分解成为更 ...

  4. CSS模块化思想-----命名是个技术活

    CSS模块化思想(一)--------命名是个技术活 引子: 女孩子都喜欢买衣服,而我也不例外,奈何钱包太瘦,买不起高大上的定制,只能买撞衫率极高的休闲衣,不过对于我来说,我还是开心的,毕竟买衣服买的 ...

  5. CSS程序思想

    CSS的设计思想,比如:CSS预处理器.CSS对像(OOCSS).SMACSS.Atomic设计和OrganicCSS等             一.CSS预处理器最重要的功能:      1.连接: ...

  6. css分离思想

    CSS命名就应该最简单.最直接,直捣黄龙.没有HTML标签,没有层级,这些通通滚蛋,不要.为什么不要,有三大原因: 1. 限制重用 我们会使用层级(#test .test),会使用标签(ul.test ...

  7. 谈 CSS 模块化

    以前看过模块化的相关资料以及解释,对模块化有了一个表皮的了解,自己也做了一些相关的实践,由于接触到的项目交小,所以也没能更好的去体现和理解模块化,但总体还是有那么一些感悟,但是如果要说怎么才能算是好的 ...

  8. &lbrack;译&rsqb;CSS content

    原文地址:http://css-tricks.com/css-content/ CSS中有一个属性content,只能和伪元素:before和:after一起使用,他们的写法像伪类选择器(前面有冒号) ...

  9. 《CSS网站布局实录》学习笔记(六)

    第六章 CSS高级应用与技巧 6.1 id与class 6.1.1 什么是id id是XHTML元素的一个属性,用于标识对象名称.无论是class还是id,都是XHTML所支持的公共属性,并且也是其核 ...

随机推荐

  1. 新建虚拟SAN

    在SCVMM中,在每台主机上新建虚拟SAN(所使用的FC适配器必须一起用NPIV,否则不可用),新建完成后,在其主机的Hyper-V管理器中也可以看到 每台主机上的虚拟SAN名称必须相同    之后就 ...

  2. Context Switch Definition

    A context switch (also sometimes referred to as a process switch or a task switch) is the switching ...

  3. map标签的详细使用参数

    map标签必须成对出现,即 <map> ....</map> 同时map必须和area配合使用. img标签里的usermap属性值必须与map标签里的id和name值完全一致 ...

  4. Java中的集合概述

    Java中的集合类有两个重要的分支,分别是接口Collection(包括List,Set等)和接口Map. 由于HashSet的内部实现原理使用了HashMap,所以我们先来了解Map集合类. 1.H ...

  5. &lbrack; Java学习基础 &rsqb; Java的抽象类与接口

    一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...

  6. js前台计算两个日期的间隔时间(时间差)

    在后台传来两个时间字段,从中解析出两个字符串类型的日期格式 需要在前台解析出两个时间的间隔 这里采用获取两个日期的时间戳进行计算 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时 ...

  7. &lbrack;原创&rsqb;&lbrack;Synth 8-2543&rsqb; port connections cannot be mixed ordered and named &lbrack;&quot&semi;&ast;&lowbar;Top&period;v&quot&semi;&colon;1151&rsqb;

    Vivado综合错误: [Synth 8-2543] port connections cannot be mixed ordered and named ["*_Top.v":1 ...

  8. linux远程目录共享

    一.环境介绍 1.服务器说明: 有两台服务器,(1)101报表服务器,上面是tomcat跑的原生FineReport报表系统,(2)103业务服务器,上面是具体的业务系统. 2.需求说明: 报表文件由 ...

  9. Mysql由浅入深

      1. Mysql的安装方式 1. yum安装mysql 适合对数据库要求不太高的场合,例如:并发不大,公司内部,企业内部. 1. 官网下载yum源,wget https://dev.mysql.c ...

  10. js精确计算&lpar;js浮点数精度问题&rpar;

    转自:http://talentluke.iteye.com/blog/1767138 大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS里似乎特别严重,来看一个例子 alert(45.6*13 ...