深入理解css 笔记(9)
模块化 CSS 是指把页面分割成不同的组成部分,这些组成部分可以在多种上下文中重复使用,并且互相之间没有依赖关系。最终目的是,当我们修改其中一部分 css 时,不会对其他部分产生意料之外的影响。
开始写模块化样式之前,需要先配置好环境。每个样式表的开头都要歇一歇给整个页面使用的通用规则,模块化 CSS 也不例外。这些规则通常被称为基础样式,其他的样式是构建在这些基础样式之上的。基础样式本身不是模块化的,但它会为后面编写模块化样式打好基础。比如 box-sizing,font-family,基础样式配置完成后,很少会再修改。我们会再基础样式的稳定表现之上,构建模块化 css。
<style>
.message{
padding 0.8em 1.2em;
border-radius:0.2em;
border:1px solid #3655559;
color:#365559;
background-color:#e0f0f2;
}
</style> <div class="message">
Save Success!
</div>
这个代码和其他css代码差不多。但是这里有很多模块化css的原则。模块的选择器由单个类型构成,这非常重要。选择器里没有其他规则来约束这些样式仅作用再页面的某个地方。比如前面跟一个#sidebar就意味着这个模块只能用在#sidebar元素内部。没有这些约束,模块就可以在任意上下文中重复使用。
比如一个项目中出现了好几个相似的按钮:.sava-form button ,login-form button ,toolbar .button。样式表里多次出现相同的代码,尽管这并不是完全的复制。重复是为了获得一致的体验,但是随着时间的推移,不同的按钮之间还是发生了一些不一样的改变。有些按钮内边距不同,有的颜色不同。解决方法就是把按钮重构成一个可复用的模块,不受页面位置的限制。创建模块不但可以精简代码,还可以保证视觉一致性。这样看上去更专业,不会给人仓促堆砌的感觉。用户在潜意识里也会更容易相信我们的程序。
通过定义一个以模块名称的新类名来创建一个修饰符。例如.message-success .message-error。有些喜欢用双连字符来在状态之间。这个是一个叫 BEM的css命名规范流行起来的。也有一些其他的方法。
在模块中使用选择器例如.body h4来匹配标题元素,这么做是允许的,因为h4就是一个标题,其他例如img li也可以。但是要尽量避免使用基于通用标签类型的匹配,比如div和span.最初建立模块的时候,可能只是span做一件事,但是谁也说不准以后会不会出于其他目的再添加第二个san,后面就比较麻烦了。可能涉及到的都要改一遍。
有时候,我们需要用一个类对元素做一件简单明确的事,比如让文字居中,让元素浮动,或者清除浮动。这样的类被称为工具类。虽然我不太用。因为一行代码换一个类。不确定是否值得。工具类一般是唯一应该使用important注释的地方。这样的话,不管哪里用到工具类,都可以生效。
深入理解css 笔记(9)的更多相关文章
- 理解CSS
写在前面的话:对于web开发,html完成网页的structure,css完成网页的presentation,js完成网页的behavior,今天就来说一说css,通过理解一些css的基础概念,能够更 ...
- 深入理解css BFC 模型
如果要深入理解css布局的各种原理,要在重构页面做得心应手的话,那么你就必须先理解这玩意 "BFC" , BlockFormatting Context(块级格式化上下文): 这里 ...
- 深入理解CSS中的层叠上下文和层叠顺序(转)
by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...
- 深入理解CSS溢出overflow & overflow:hidden真的失效了吗[转载]
深入理解CSS溢出overflow http://www.cnblogs.com/xiaohuochai/p/5289653.html overflow:hidden真的失效了吗 http://www ...
- 深入理解css中的margin属性
深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些“坑”的,下面我会介绍margin的基本知识以及 ...
- 深入理解css中position属性及z-index属性
深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共 ...
- 深入理解CSS中的层叠上下文和层叠顺序
零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...
- 理解CSS居中
我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...
- <转>HTML+CSS总结/深入理解CSS盒子模型
原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...
- 认识和理解css布局中的BFC
认识和理解css布局中的BFC BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. Block Formatting Con ...
随机推荐
- windows服务包装程序
有些程序想随windows启动而自动运行,这样部署为windows服务是最自然的选择,但是有些第三方的程序,没有提供windows 服务的部署方式,或者自己写的程序,每次都要为部署为windows服务 ...
- logback 日志脱敏处理
1.按正则表达式脱敏处理 参考: https://www.cnblogs.com/htyj/p/12095615.html http://www.heartthinkdo.com/?p=998 站在两 ...
- banner的使用
Android中banner的使用步骤 Step 1.依赖banner Gradle dependencies{ compile 'com.youth.banner:banner:1.4.9' //最 ...
- git通过ssh方式免密克隆代码仓库
git上添加ssh公钥 略过 终端命令行 格式: git clone ssh://[user@]host.xz[:port]/path/to/repo.git/ 栗子: git clone ssh:/ ...
- django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.
import os if __name__ == '__main__': # 下面的autoUI改成你当前的项目名称 os.environ.setdefault("DJANGO_SETTIN ...
- 打卡node day05 mongodb
1.安装 [官网]https://www.mongodb.com/download-center/community?jmp=nav 配置环境变量 配置完环境变量坚持是否成功 在所在位置新建文件夹 启 ...
- 在MyBatis-Plus整合dynamic-datasource @DS失效
因为是事务导致的 解决方案: 1.删除事务 2.使用分布式事务 3.修改事务的传播机制 3.使用DS的本地事务 @DSTransactional 但切记不可和Spring的事务共存 附传播机制 事务传 ...
- CRLF和LF的差异
CRLF, LF 是用来表示文本换行的方式.CR(Carriage Return) 代表回车,对应字符 '\r':LF(Line Feed) 代表换行,对应字符 '\n'.由于历史原因,不同的操作系统 ...
- 2022-3-17内部群每日三题-清辉PMP
1.一个项目预算为6000万美元,预计需要24个月才能完成.12个月后,该项目完成了60%,并使用了3500美元.那么预算和进度的状态如何? A.符合预算,并超前于进度 B.超出预算,但超前于进度 C ...
- Spring boot jar包解压后重新压缩命令
进入解压的目录/demo,运行 jar cvfM0 demo.jar * 压缩后的项目即可运行 参考:https://www.cnblogs.com/liyanbin/p/6088458.html