CSS的设计思想,比如:CSS预处理器、CSS对像(OOCSS)、SMACSS、Atomic设计和OrganicCSS等
 
 
 
 
 
 
一、CSS预处理器最重要的功能:
     1.连接:通过 @import 来引入.css文件;            网站很小时,仅用作引入重置文件与 基本通用模块(如%btn{}的定义)
     2.扩展:定义 %placeholder+@extend;          阅读:http://krasimirtsonev.com/blog/article/SASS-mixins-extends-and-placeholders-differences-use-cases
     3.配置:$变量:变量值;     存放颜色、网格宽度等,便于后期修改
     4.混合:@mixin 名称($参数:默认值,$参数2:默认值2){},再通过 @include 名称(参数值) 使用。关键在于使用参数功能,而非具体的值;
     注:不只关注所编写的 .scss 、.less 文件,还要关注生成的 .css 文件。
 
二、BEM:命名方式太复杂,暂不考虑;
     B:block; 块级
     E:element; 元素
     M:modifier; 修饰
 
三、OOCSS(CSS对象):
     1. 以对象思维,提取网页中组件的通用样式,单独定义,后面直接引入使用,便于维护。如按钮基本样式。
     2. 配合:%placeholder+@extend;
     3. 使用框架限制太大,但可以吸收部分好用的,组成自己的小微框架。
 
四、SMACSS(可伸缩与模块化CSS体系):          http://smacss.com/     https://github.com/jonathanpath/SASS-SMACSS
     1.结构:
          基本(base):     用于一个简单的选择器的基本样式,如clearfix

布局(Layout):     定义网格
          模块(Module):    一群元素相结合在一起形成的一个模块,比如说header和sidebar,不定义尺寸,只定义相互关系。
          状态(State):       元素的不同状态。如隐藏、按住,扩大等规则定义给对象
          皮肤(Skin):      更多的样式

 
五、Atomic Design(原子设计概念):不使用
六、OrganicCSS(分为了原子、分子、细胞器、更抽象):不使用
 
 
 
@include 与 @extend 比较:
 
  调用对象 CSS编译结果 定义 调用
@include @mixin定义的函数模块(可设置变量、参数、默认值) css相同样式不会合并 @mixin 名称($参数:默认值,$参数2:默认值2){} @include 名称(参数, 参数2);
@extend
.class 定义的属性模块 
%placeholders 定义的 属性模块
引用.class编译出的css可能不是想要的样式;
引用%placeholder编译出的css相同样式会合并;
.class{}
%placeholder{}
@extend .class;
@extend %placeholder;
 
 
结论:
     对有参数的,使用@mixin定义函数使用;     使用不当,会产生很多重复代码,没有参数的,就不要使用@mixin
     对仅属性的,使用%placeholder定义使用;
 
 
 
 
@mixins与%placeholders的结合:
 
实例:一个简单的百分比网格系统:测试可用
开始------------------------------------------------------
$columns: 12;
$gutter: 2em;

%grid {
    box-sizing: border-box;
    display: inline-block;
    padding: {
        left:$gutter / 2;
        right:$gutter / 2;
    }  
}

@mixin grid($width: 1){
    @extend %grid;
    width: percentage($width);
}

@for $column from 1 through $columns {
    .grid-#{$column} {
        @include grid(1 / $column);
    }
}

结束------------------------------------------------------

CSS程序思想的更多相关文章

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

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

  2. css模块化思想(一)

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

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

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

  4. css分离思想

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

  5. css结构设计思想

    本文摘自博客园-予沁安的文章:结构化CSS设计思维,作为学习笔记记录一下 1.LESS.SASS等预处理器给CSS开发带来了语法的灵活和便利,其本身却没有给我们带来结构化设计思维.很少有人讨论CSS的 ...

  6. css学习入门-第一个css程序

    1.css的优势: --内容与表现分离 --网页结构统一,可以实现复用 --样式丰富 2.css的3种导入方式 2.1行内样式 <h1 style="color: red"& ...

  7. 程序思想中的冒泡法在python和1200PLC中scl高级编程中的应用

    冒泡排序:是计算机科学领域里面的一种算法. header 这个算法名字的由来是因为在执行算法的时候越小的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧 ...

  8. Web程序员必备的CSS工具

    对于web开发来说,CSS是最有效的美化页面.设置页面布局的技术.但问题是,CSS是一种标记性语言,语法结构非常的松散.不严谨.WEB程序员会经常发现自己的或别人的CSS文件里有大量的冗余代码或错误或 ...

  9. 网页三剑客之CSS

    1.CSS概述 CSS中文简称层叠样式表(英文全称:Cascading Style Sheets),用来控制页面的表现,即使页面更好看的语言. 2.CSS基本语法和页面引用 2.1 css的定义方法 ...

随机推荐

  1. 配置CENTOS YUM更新源

    众所周知,Centos 有个很方便的软件安装工具  yum,但是默认安装完centos,系统里使用的是国外的centos更新源,这就造成了我们使用默认更新源安装或者更新软件时速度很慢的问题. 为了使用 ...

  2. Codeforces Beta Round #62 题解【ABCD】

    Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...

  3. 常用js代码

    common-function-lib.js /*产生随机颜色*/ function randomColor() { var rand = Math.floor(Math.random() * 0xF ...

  4. TextView使用SpannableString设置复合文本(转)

    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式.事件方面的设置.Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能: 1.Bac ...

  5. Android表情功能

    Android表情功能 标签(空格分隔): 未分类 转载自:android edittext插入表情(基于socket方式),并对文中不正确的内容进行整理和修正 [TOC] 涉及知识点: Androi ...

  6. 通过PowerShell获取域名whois信息

    Whois 简单来说,就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人.域名注册商.域名注册日期和过期日期等).通过域名Whois服务器查询,可以查询域名归属者联系方式 ...

  7. python string.py 源码分析 三:maketrans

    l = map(chr, xrange(256)) #将ascii转为字符串 _idmap = str('').join(l) del l # Construct a translation stri ...

  8. PHP vs Python

    最近在搞微信公众号方面的开发,发现很多开发微信公众号都使用PHP来开发,由于我之前开发Web端喜欢使用Python,所以从Quora网站找出一篇Which-is-better-PHP-or-Pytho ...

  9. ionic button笔记

    源码文件:_button.scss 和 _button-bar.scss,以及_variables.scss(66行-163行). 按钮是手机app不可或缺的一部分,不同风格的app,需要的按钮多种多 ...

  10. sql: 查找约束

    主键约束 SELECT   tab.name AS [表名],   idx.name AS [主键名称],   col.name AS [主键列名] FROM   sys.indexes idx    ...