《CSS网站布局实录》学习笔记(六)
第六章 CSS高级应用与技巧
6.1 id与class
6.1.1 什么是id
id是XHTML元素的一个属性,用于标识对象名称。无论是class还是id,都是XHTML所支持的公共属性,并且也是其核心属性。class的主要功能是用来对对象的样式设置,而id除了可以定义样式外,还能够成为服务网站交互行为一个特殊标识。每一个被定义了id名称的对象,其id名字在每个页面有且仅能出现一次。
6.1.2 如何使用id
在不考虑使用JavaScript脚本,而是XHTML代码及CSS样式应用的情况下,应当有选择地使用id属性来对元素进行标识,具体使用上应当具备下面的原则。
- 样式只使用一次:如果有一段样式代码在页面中只可能被使用一次,那么可以使用id进行标识。
- 用于对页面的区域进行标识:使用id对页面中某个区域进行标识,有助于XHTML结构的可读性。
6.1.3 什么是class
class直译为类、种类。class是相对于id的又一个属性。id是对单独元素的标识,而class是对一类元素的标识。与id相反,同一页面中的每个class名称都允许重复使用。
6.1.4 何地使用class
- 同一页面中出现多次
- 通用及经常能使用的元素
6.1.5 同时使用多个类
XHTML允许在标签的class属性设置中,同时使用一个以上的类名,使用空格来分隔多个class样式名称。
6.2 div与span
很多人都容易混淆div元素与span元素的真正用途,那到底该如何使用它们,先来W3C对它们两个的官方定义:
- div: generic language/style container.
- span: generic language/style container.
在W3C对div及span的简要描述中,可以看到同样的说明——用于定义样式的容器。虽然W3C在对div及span的描述中都说明了相同的用法,而且非常准确。实际上,div与span在使用方式上还是存在很大的差别的。
在相同的CSS样式情况下, div之间出现了换行,而span则是同行左右关系。这就是它们之间存在的使用差别。造成差别的原因就在于其默认显示模式的不同,可以通过display属性来修改元素的显示模式。
总结:div对象的默认显示模式是display: block;块状元素。span对象的默认显示模式是display: inline;内联元素。
6.3 CSS选择符命名
6.3.1 大小写敏感
XHTML对大小写并不敏感。CSS对对象选择符(如body、td、div)也是不分区大小写的,但是CSS对id及class选择符的名称则是区分大小写的。
6.3.2 合法字符及组合
在CSS及XHTML中,class及id必须由大写或者小写字母开始,随后可以使用任意的字母、数字、连接线或者下划线。
6.3.3 命名建议
- 使用具有语义命名
- 使用大小写组合命名
- 使用下划线及连接线命名
- 根据网站需要定制命名规则
6.4 CSS文件结构设计与优化
尽管CSS能够实现表现与内容的分离,但也引发了另一个新问题——CSS文件日益庞大。出现这种情况,会直接导致网站两个致命的问题:
- 初次载人网站速度慢
- 维护困难
当然CSS的设计者已经想到了这一点,提供了导入命令,从而可以从别的地方导入样式表,这样就便于网站的后期维护。
6.4.1 导入结构
@import导入命令是CSS提供的一个实用命令,主要功能是根据路径导入一个样式表文件,并且能够制定样式表所服务的设备类型。这样可以将别的样式表导入当前样式表中,使样式表文件不必写在同一个文件之中。使用方法为:@import url("xxx.css");
除此之外,@import命令还能够为导入的样式表制定一个设备类型,指明当前的样式表用于什么用途。比如:@import url("xxx.css") print;
6.4.2 结构优化
对于大型网站的样式设计而言,可以通过@import命令这样的分离技术,让不同种类的样式各自写在独立的文件之中,这样也就实现了CSS代码层面的结构优化。下面讨论几种常用的结构模式及使用方法。
- 根据样式特点进行CSS结构设计
- 根据功能进行CSS结构设计
- 根据页面需要进行CSS导入组合
6.5 使用CSS缩写
CSS缩写是指将多个CSS属性集合到一行中的编写方式,这种方式能够缩减大量的代码,使代码便于阅读、理解。
6.5.1 font字体缩写
字体缩写是针对字体样式进行的缩写形式,包含字体、字号等属性,使用方法如下:
font: font-style | font-variant | font-weight | font-size | line-height | font-family
对于字体的样式缩写,只要使用font作为属性名称,后接各个属性的值即可,各个属性值之间使用空格分开。
6.5.2 margin与padding边距缩写
默认情况下,margin及padding的缩写需要提供4个参数,按照顺序分别为上、右、下、左。下面来举例:(这里以margin来举例,padding的设置方法与margin完全相同)
- 单独使用一个参数:p {margin: 20px; }表示p对象四周的外边距均为20px
- 使用两个参数:p { margin: 20px 10px; }表示对上下边距为20px,左右边距为10px
- 使用三个参数:p { margin: 20px 10px 100px; }表示上边距为20px,左右边距为10px,下边距为100px
- 使用四个参数:p { margin: 20px 10px 10px 20px; }表示上边距为20px,右边距为10px,下边距为10px,左边距为20px
注:margin/padding的设置完全是按照顺时针方向进行边距设置。
6.5.3 border边框缩写
border对象包含四条边的不同宽度、不同颜色以及不同样式。所以,不仅可以对整个对象进行border缩写,也可以对单个边进行缩写。使用方法如下:
border: border-width | border-style | color
6.5.4 list列表缩写
list缩写是针对list-style-type、list-style-position等用于ul的list属性。使用方法如下:
list-style: list-style-type | list-style-position | list-style-image
6.5.5 background背景缩写
背景缩写用于针对对象的背景以控制其相关属性进行缩写。使用方法如下:
background: background-color | background-image | background-repeat | background-attachment | background-position
6.5.6 color颜色缩写
CSS对对象的颜色缩写主要是针对十六进制颜色。当A与B、C与D、E与F数字相同时,可以使用颜色缩写。比如#FFFFFF可以缩写为#FFF,#2255BB可以缩写为@25B。
6.6 CSS代码优化
代码优化是软件开发的重要原则之一,这里对于CSS样式布局设计非常重要。
6.6.1 增加代码重用率
有时候,尽管发现同一属性在多个区域同时出现的情况,但由于每个区域其使用目的不同,因此在对CSS进行简化的时候,不能一概而论,一定要根据当前页面的结构与对未来扩展的预期进行合理的分析与配置,最终实现CSS简化的目的。
6.6.2 使用样式覆盖进行简化
如果CSS对某一元素应用了多个样式代码,往往是后一段代码替代前一段代码。利用这个特性,可以采用覆盖方式,使得代码得到重用。
《CSS网站布局实录》学习笔记(六)的更多相关文章
- java学习笔记六——数组
数组类型 数组是一种常见的数据结构,可用于存放多个数据,每一个数组元素存放一个数据,通常可以通过下标进行访问其元素. Java数组要求所有数组元素具有相同的数据类型.因此,数组元素的数据类型是唯一的. ...
- Java学习笔记六(I/O流)
1.介绍 在实际开发过程中经常会用到数据的输入/输出操作,本篇博客着重分析一下,java中经经常使用到的有关IO操作的类.而在java中能够将经常使用的流分为两个部分:字节流和字符流. 1.流的抽象基 ...
- Java 学习笔记 (六) Java 定义变量
这个问题来自于head first一书page68. package com.idea.study; public class Books { //headfirst page68 String ti ...
- Java学习笔记六:Java的流程控制语句之if语句
Java的流程控制语句之if语句 一:Java条件语句之if: 我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大于 90 分,则奖励一朵小红花 .对于这种“需要先判断条件,条件满 ...
- Java学习笔记六 常用API对象二
1.基本数据类型对象包装类:见下图 public class Test { public static void main(String[] args){ Demo(); toStringDemo() ...
- 20145330第六周《Java学习笔记》
20145330第六周<Java学习笔记> . 这周算是很忙碌的一周.因为第六周陆续很多实验都开始进行,开始要准备和预习的科目日渐增多,对Java分配的时间不知不觉就减少了,然而第十和十一 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- Java IO学习笔记六:NIO到多路复用
作者:Grey 原文地址:Java IO学习笔记六:NIO到多路复用 虽然NIO性能上比BIO要好,参考:Java IO学习笔记五:BIO到NIO 但是NIO也有问题,NIO服务端的示例代码中往往会包 ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
随机推荐
- Thinkphp 零散知识点(caa/js路径,引入第三方类,ajax返回,session/cookie)
一.关于JS和CSS路径问题 1.找路径是从入口文件index.php来找的,而不是从文件本身所在位置来找, 因为我们访问时是访问的入口文件 2.在存放JS和CSS的时候可以放到public文件夹下 ...
- Jquery创建JSON对象
<html> <body> <h2>通过 JSON 字符串来创建对象</h3> <p> First Name: <span id=&q ...
- 浅谈Android序列化
序列化原因 序列化的原因基本可以归纳为以下三种情况: 永久性保存对象,保存对象的字节序列到本地文件中: 对象在网络中传递: 对象在IPC间传递. --- --- 序列化方法 在Android系统中关于 ...
- js中typeof的用法
一. 经常会在js里用到数组,比如 多个名字相同的input, 若是动态生成的, 提交时就需要判断其是否是数组. if(document.mylist.length != "undefine ...
- 关于几种常用的Adapter使用区别
Adapter常用的实现类如下: 1.ArrayAdapter:简单.易用的Adapter,通常用于将数组或List集合的多个值包装成多个列表项. 2.SimpleAdapter:并不简单.功能强大的 ...
- Foreign Exchange(交换生换位置)
Foreign Exchange Your non-profit organization (iCORE - international Confederation of Revolver Enth ...
- 转:etc/fstab 文件详解
etc/fstab这个文件的所有参数,这个文件是非常重要的.这个文件是配置文件系统的体系,创建的所有分区,都必须写在这个文件里面,否则下次启动的时候你的分区是挂不起来的.首先学习一个mount –a ...
- Weblogic11g+Axis1.4 实现WebService服务
IDE:NetBeans8.0 项目结构: (1)新建接口Hello.java package com.test; /** * @author y * @date 2015-9-5 7:51:29 * ...
- "Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list.xml,reason: Connection
"Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list.xml,reason: Conne ...
- (转载)偏序集的Dilworth定理学习
导弹拦截是一个经典问题:求一个序列的最长不上升子序列,以及求能最少划分成几组不上升子序列.第一问是经典动态规划,第二问直接的方法是最小路径覆盖, 但是二分图匹配的复杂度较高,我们可以将其转化成求最长上 ...