《图解CSS3》——笔记(二)
作者:大漠
勘误:http://www.w3cplus.com/book-comment.html
2014年7月15日15:58:11
第二章 CSS3选择器
2.1 认识CSS选择器
2.1.1 CSS3选择器的优势
2.1.2 CSS3选择器分类
┌─1)基本选择器 ┌─3)动态伪类选择器
├─2)层次选择器 ├─4)目标伪类选择器
CSS3选择器──┼─伪类选择器───────┼─5)语言伪类选择器
├─9)伪元素 ├─6)UI元素状态伪类选择器
└─10)属性选择器 ├─7)结构伪类选择器
└─8)否定伪类选择器
2.2 基本选择器
2.2.1 基本选择器语法
2.2.2 浏览器兼容性
2.2.3 实战体验:使用基本选择器
.clearfix:after,
.clearfix:before {
display: table;
content: "";
}
.clearfix:after {
clear: both;
overflow: hidden;
}
2.2.4 通配选择器
2.2.5 元素选择器
2.2.6 ID选择器
2.2.7 类选择器
多类名选择器.item.important {...}
IE6选择器不支持多类名选择器,将以末尾类名为准,使用时千万要小心!
2.2.8 群组选择器
2.3 层次选择器
2.3.1 层次选择器语法
选择器 | 类型 | 功能描述 | 兼容性 |
E F | 后代选择器(包含选择器) | 选择匹配的F元素,且匹配的F元素被包含在匹配的E元素内 | 全 |
E > F | 子选择器 | -----------------------------------是所匹配的E元素的子元素 | IE7+ |
E + F | 相邻兄弟选择器 | -----------------------------------紧位于匹配的E元素后面 | IE7+ |
E ~ F | 通用选择器 | 选择匹配的F元素,且位于匹配的E元素后的所有匹配的F元素 | IE7+ |
2.3.2 浏览器兼容性
2.3.3 实战体验:使用层次选择器选择元素
2.3.4 后代选择器
2.3.5 子选择器
2.3.6 相邻兄弟选择器
active + div {...}
相邻兄弟选择器(E + F)可以选择紧接在另一个元素后的元素,他们具有一个相同的父元素.
即:E和F是同辈元素,F元素在E元素后面,并且相邻,这样就可以使用相邻兄弟选择器来选择F元素.
例中active + div {background: lime;}表示1后面的2,即2是1相邻兄弟元素.
2.3.7 通用兄弟选择器
active ~ div {...}
通用兄弟选择器(E ~ F),用于选择某元素后面的所有兄弟元素,他们具有一个相同的父元素.
即:E和F是同辈元素,F元素在E元素后面,E~F将选中E元素后面的所有F元素.
例中active ~ div {background: lime;}表示1后面的2,3,4,7,即1后面的所有兄弟元素.
2.4 动态伪类选择器
2.4.1 动态伪类选择器语法
选择器 | 类型 | 功能描述 | 兼容性 |
E:link | 链接伪类选择器 | 选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过.常用于链接锚点上 | 全 |
E:visited | ---------------- | ---------------------------------------------------已------------------------------- | 全 |
E:active | 用户行为伪类选择器 | -------------------且匹配元素被激活.常用于锚点与按钮上 | IE8+ |
E:hover | --------------------- | -------------------且用户鼠标停留在元素E上.IE6及以下浏览器仅支持a:hover | 全 |
E:focus | --------------------- | -------------------且匹配的元素获得焦点 | IE8+ |
爱恨原则 ---- LoVe/HAte
即:link-visited-hover-active
2.4.2 浏览器兼容性
IE6及以下浏览器仅支持a:hover
2.4.3 实战体验:美化按钮
bootstrap按钮:
(1)正常:渐变+文字阴影
(2)hover:纯色+无文字阴影
(3)点击:内阴影
2.5 目标伪类选择器
在Web页面中,一些URL拥有片段标识符(#+锚点或元素ID),可以链接到页面的某个特定元素.
":target"伪类选择器选取链接的目标元素,然后提供定义样式.
2.5.1 目标伪类选择器语法
选择器 | 功能描述 | 兼容性 |
E:target | 选择匹配E的所有元素,且匹配元素被相关URL指向 | IE9+ |
目标伪类选择器是动态选择器,只有存在URL指向该匹配元素时,样式效果才会生效.
2.5.2 浏览器兼容性
在IE低版本,需要用JavaScript实现.
2.5.3 实战体验:制作手风琴效果
":target"应用场景:
1) 高亮显示区块
2) 从互相层叠的盒容器或图片中突出显示其中一项
3) tabs效果
4) 幻灯片效果
5) 灯箱效果
6) 相册效果
其中几项效果使用JavaScript制作会更好,因为纯CSS的版本可能存在潜在的易用性和可用性问题.
2.6 语言伪类选择器
使用语言伪类选择器来匹配使用语言的元素是非常有用的,特别是用于多语言版本的网站,其作用更是明显.
可以使用它来根据不同语言版本设置页面的字体风格.
2.6.1 语言伪类选择器语法
为文档指定语言有两种方法:
一种使用HTML5,可以直接设置文档的语言:
<!DOCTYPE HTML>
<html lang="en-US">
另一种是手动在文档中指定lang属性,并设置对应的语言值:
<body lang="fr">
E:lang(language)表示匹配E的所有元素,且匹配元素指定了lang属性,而且其值为language.
2.6.2 浏览器兼容性
IE8+
对于IE6:
英文版本下设置类名".en",法文版本下设置类名".fr",通过类名给引文定义不同的样式.
对于IE7:
可以使用和IE6相同的方法,或者使用属性选择器中的"E[foo|="en"]"选择器为不用的语言版本的引文设置不同样式.
2.6.3 实战体验:定制不同语言版本引文风格
en: 2-5.html
fr: 2-6.html
引文:
<p>WWF's goal is to:
<q cite="http://www.wwf.org"> // 引文标签
build a future where people live in harmony with nature
</q> we hope they succeed.</p>
引文效果:
:lang(en) {
quotes:'"' '"'; // 引文特效
}
:lang(en) q {background: red;}
:lang(fr) {
quotes:'«' '»';
}
:lang(fr) q {background: green;}
2.7 UI元素状态伪类选择器
主要用于form表单元素上,提高网页的人机交互,操作逻辑以及页面的整体美观,使表单页面更具个性与品位,而且使用户操作页面表单更便利和简单.
2.7.1 UI元素状态伪类选择器语法
UI元素状态一般包括:启用,禁用,选中,未选中,获得焦点,失去焦点,锁定和待机等.
选择器 | 类型 | 功能描述 | 兼容性 |
E:checked | 选中状态伪类选择器 | 匹配选中的复选按钮或单选按钮表单元素 | IE9+ |
E:enabled | 启用状态伪类选择器 | 匹配所有启用的表单元素 | IE9+ |
E:disabled | 不可用状态伪类选择器 | 匹配所有禁用的表单元素 | IE9+ |
2.7.2 浏览器兼容性
低版本浏览器加上类名,如".disabled".
2.7.3 实战体验:Bootstrap的表单元素UI状态
2.8 结构伪类选择器
这种选择器可以根据元素在文档树中的某些特性(如相对位置)定位到它们.
2.8.1 重温HTML的DOM树
2.8.2 结构伪类选择器语法
选择器 | 功能描述 | 兼容性 |
E:first-child | 作为父元素的第一个子元素的元素E,与E:nth-child(1)等同 | IE9+ |
E:last-child | ------------最后---------------------,与E:nth-last-child(1)等同 | |
E:root | 选择匹配元素E所在文档的根元素,在HTML文档中,根元素始终是html,此时选择器与html类型选择器匹配的内容相同 | |
E F:nth-child(n) | 选择父元素E的第n个子元素F.其中n可以是整数(1,2,3),关键字(even,odd),可以是公式(2n+1,-n+5),而且n值的起始值为1,而不是0 | |
E F:nth-last-child(n) | -----------倒数---------------------------------------------------------------------------------------------- | |
E:nth-of-type(n) | 选择父元素内具有指定类型的第n个E元素 | |
E:nth-last-of-type(n) | -----------------------倒数--------- | |
E:first-of-type | --------------------------第一个----,与E:nth-of-type(1)等同 | |
E:last-of-type | -----------------------倒数第一个---,与E:nth-last-of-type(1)等同 | |
E:only-child | 选择父元素只包含一个子元素,且该子元素匹配E元素 | |
E:only-of-type | 选择父元素只包含一个同类型的子元素,且该子元素匹配E元素 | |
E:empty | 选择没有子元素的元素,而且该元素也不包含任何文本节点 |
只有“:first-child”属于CSS2.1,此外其他的结构伪类选择器都是CSS3的新特性。
2.8.3 浏览器兼容性
2.8.4 结构伪类选择器中的n是什么
1.参数n为具体的数值
2.参数n为表达式“n*length”
3.参数n为表达式“n+length”
4.参数n为表达式“-n+length”
5.参数n为表达式“n*length+b”
6.参数n为关键词“odd”(奇数个)
7.参数n为关键词“even”(偶数个)
跟踪元素系列的序号变化并自动匹配将会更为准确、高效,而且维护非常方便
2.8.5 结构伪类选择器的使用方法详解
有用样式:ul{list-style: none outside none},字体arial的数字效果不错
1.:first-child的使用
如果使用“:first-child”来移除一个浮动元素的左边距或右边距,在不支持“:first-child”的浏览器中,布局将会被破坏掉。
《图解CSS3》——笔记(二)的更多相关文章
- CSS3 笔记二(Gradients)
CSS3 Gradients Two types of gradients: Linear Gradients (goes down/up/left/right/diagonally) Radial ...
- 图解CSS3核心技术与案例实战(1)
前言: 我买了一本<图解CSS3核心技术与案例实战>大漠写的,为了提高自己的自觉性呢,抓紧看书,把读书笔记放在这上面,跟大家一起分享,也为督促自己完成读书计划. 文末有微信公众号,感谢你的 ...
- 纯JS实现KeyboardNav(学习笔记)二
纯JS实现KeyboardNav(学习笔记)二 这篇博客只是自己的学习笔记,供日后复习所用,没有经过精心排版,也没有按逻辑编写 这篇主要是添加css,优化js编写逻辑和代码排版 GitHub项目源码 ...
- 图解CSS3制作圆环形进度条的实例教程
圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能 ...
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
- Mastering Web Application Development with AngularJS 读书笔记(二)
第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- webpy使用笔记(二) session/sessionid的使用
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...
随机推荐
- 51单片机C语言学习笔记3: 存储器结构
MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器2.片外程序存储器3.片内数据存储器4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外统一编 ...
- 深入理解JavaScript Hijacking原理
最近在整理关于JavaScript代码安全方面的资料,在查关于JavaScript Hijacking的资料时,发现关于它的中文资料很少,故特意整理一下. 一.JavaScript Hijacking ...
- 对Primary-backup分布式数据库分布式一致性的猜想
昨天读了paxos算法,心里对分布式一致性有一些想法:如果是我,应该怎么实现数据库集群的一致性呢? paxos算法本身并没有提到其应用,所以实际使用情况应该较复杂.而我平时接触到使用分布式一致性算法的 ...
- HDU5196--DZY Loves Inversions 树状数组 逆序数
题意查询给定[L, R]区间内 逆序对数 ==k的子区间的个数. 我们只需要求出 子区间小于等于k的个数和小于等于k-1的个数,然后相减就得出答案了. 对于i(1≤i≤n),我们计算ri表示[i,ri ...
- 深入理解linux网络技术内幕读书笔记(五)--网络设备初始化
Table of Contents 1 简介 2 系统初始化概论 2.1 引导期间选项 2.2 中断和定时器 2.3 初始化函数 3 设备注册和初始化 3.1 硬件初始化 3.2 软件初始化 3.3 ...
- linux mysql默认安装在哪个目录
MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件.配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比 ...
- Linux网络配置相关
路由相关 #添加到主机的路由 route add -host 192.168.1.2 dev eth0 route add -host 192.168.1.2 gw 192.168.1.1 注1:添加 ...
- 把本地建好的项目提交到git上
才开始用git来控制项目版本,刚开始时不是很会用,由于公司最近新开个项目,需要我把建好的项目放到git上去,慢慢的摸索,终于有点小小的结果,把一个项目成功提交到git上了,在这里记录下,以免下次忘记, ...
- Horizontal,vertical,Input_Mouse,Input_Key
鼠标获取 using UnityEngine; using System.Collections; public class Input_Mouse : MonoBehaviour { void Up ...
- DB2 错误编码 查询(一)(转)
size=medium][/size]本节列示 SQLSTATE 及其含义.SQLSTATE 是按类代码进行分组的:对于子代码,请参阅相应的表. 表 2. SQLSTATE 类代码 类代码含义 要获得 ...