作者:大漠

勘误: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. ┌─1)基本选择器 ┌─3)动态伪类选择器
  2. ├─2)层次选择器 ├─4)目标伪类选择器
  3. CSS3选择器──┼─伪类选择器───────┼─5)语言伪类选择器
  4. ├─9)伪元素 ├─6)UI元素状态伪类选择器
  5. └─10)属性选择器 ├─7)结构伪类选择器
  6. └─8)否定伪类选择器

2.2  基本选择器

2.2.1  基本选择器语法

2.2.2  浏览器兼容性

2.2.3  实战体验:使用基本选择器

2-1.html

  1. .clearfix:after,
  2. .clearfix:before {
  3. display: table;
  4. content: "";
  5. }
  6. .clearfix:after {
  7. clear: both;
  8. overflow: hidden;
  9. }

2.2.4  通配选择器

2.2.5  元素选择器

2.2.6  ID选择器

2.2.7  类选择器

  1. 多类名选择器.item.important {...}
  2. 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-2.html

2.3.4  后代选择器

2.3.5  子选择器

2.3.6  相邻兄弟选择器

  1. active + div {...}
  2. 相邻兄弟选择器(E + F)可以选择紧接在另一个元素后的元素,他们具有一个相同的父元素.
  3. 即:EF是同辈元素,F元素在E元素后面,并且相邻,这样就可以使用相邻兄弟选择器来选择F元素.
    例中active + div {background: lime;}表示1后面的2,即21相邻兄弟元素.

2.3.7  通用兄弟选择器

  1. active ~ div {...}
  2. 通用兄弟选择器(E ~ F),用于选择某元素后面的所有兄弟元素,他们具有一个相同的父元素.
  3. 即:EF是同辈元素,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+
  1. 爱恨原则 ---- LoVe/HAte
  2. 即:link-visited-hover-active

2.4.2  浏览器兼容性

  1. IE6及以下浏览器仅支持a:hover

2.4.3  实战体验:美化按钮

2-3.html

  1. bootstrap按钮:
  2. (1)正常:渐变+文字阴影
  3. (2)hover:纯色+无文字阴影
  4. (3)点击:内阴影

2.5  目标伪类选择器

在Web页面中,一些URL拥有片段标识符(#+锚点或元素ID),可以链接到页面的某个特定元素.

":target"伪类选择器选取链接的目标元素,然后提供定义样式.

2.5.1  目标伪类选择器语法

选择器 功能描述 兼容性
E:target 选择匹配E的所有元素,且匹配元素被相关URL指向 IE9+
  1. 目标伪类选择器是动态选择器,只有存在URL指向该匹配元素时,样式效果才会生效.

2.5.2  浏览器兼容性

在IE低版本,需要用JavaScript实现.

2.5.3  实战体验:制作手风琴效果

2-4.html

":target"应用场景:

1) 高亮显示区块

2) 从互相层叠的盒容器或图片中突出显示其中一项

3) tabs效果

4) 幻灯片效果

5) 灯箱效果

6) 相册效果

其中几项效果使用JavaScript制作会更好,因为纯CSS的版本可能存在潜在的易用性和可用性问题.

2.6  语言伪类选择器

使用语言伪类选择器来匹配使用语言的元素是非常有用的,特别是用于多语言版本的网站,其作用更是明显.

可以使用它来根据不同语言版本设置页面的字体风格.

2.6.1  语言伪类选择器语法

  1. 为文档指定语言有两种方法:
  2. 一种使用HTML5,可以直接设置文档的语言:
  3. <!DOCTYPE HTML>
  4. <html lang="en-US">
  5. 另一种是手动在文档中指定lang属性,并设置对应的语言值:
  6. <body lang="fr">

E:lang(language)表示匹配E的所有元素,且匹配元素指定了lang属性,而且其值为language.

2.6.2  浏览器兼容性

IE8+

  1. 对于IE6:
  2. 英文版本下设置类名".en",法文版本下设置类名".fr",通过类名给引文定义不同的样式.
  3. 对于IE7:
  4. 可以使用和IE6相同的方法,或者使用属性选择器中的"E[foo|="en"]"选择器为不用的语言版本的引文设置不同样式.

2.6.3  实战体验:定制不同语言版本引文风格

en: 2-5.html

fr: 2-6.html

  1. 引文:
  2. <p>WWF's goal is to:
  3. <q cite="http://www.wwf.org"> // 引文标签
  4. build a future where people live in harmony with nature
  5. </q> we hope they succeed.</p>
  1. 引文效果:
  2. :lang(en) {
  3. quotes:'"' '"'; // 引文特效
  4. }
  5. :lang(en) q {background: red;}
  6. :lang(fr) {
  7. quotes:'«' '»';
  8. }
  9. :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-7.html

2.8  结构伪类选择器

这种选择器可以根据元素在文档树中的某些特性(如相对位置)定位到它们.

2.8.1  重温HTML的DOM树

2-8.html

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 选择没有子元素的元素,而且该元素也不包含任何文本节点
  1. 只有“: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》——笔记(二)的更多相关文章

  1. CSS3 笔记二(Gradients)

    CSS3 Gradients Two types of gradients: Linear Gradients (goes down/up/left/right/diagonally) Radial ...

  2. 图解CSS3核心技术与案例实战(1)

    前言: 我买了一本<图解CSS3核心技术与案例实战>大漠写的,为了提高自己的自觉性呢,抓紧看书,把读书笔记放在这上面,跟大家一起分享,也为督促自己完成读书计划. 文末有微信公众号,感谢你的 ...

  3. 纯JS实现KeyboardNav(学习笔记)二

    纯JS实现KeyboardNav(学习笔记)二 这篇博客只是自己的学习笔记,供日后复习所用,没有经过精心排版,也没有按逻辑编写 这篇主要是添加css,优化js编写逻辑和代码排版 GitHub项目源码 ...

  4. 图解CSS3制作圆环形进度条的实例教程

    圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能 ...

  5. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  6. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  7. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

  8. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  9. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  10. webpy使用笔记(二) session/sessionid的使用

    webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...

随机推荐

  1. python中列表和字典的高级应用

    1.将序列分解为单独的变量 1.1问题 包含n个元素的元组或列表.字符串.文件.迭代器.生成器,将它分解为n个变量 1.2方案 直接通过赋值操作 要求:变量个数要等于元素个数 当执行分解操作时,有时需 ...

  2. 转:MFC创建多线程实例

    作者:http://blog.csdn.net/wangningyu/article/details/4404134 平时在MFC里使用多线程时其实是很方面的,因为微软提供了一个API让我们很方面的去 ...

  3. vim下编写html的超级利器emmet

    GitHub:里面有详细的文档说明 https://github.com/mattn/emmet-vim 下载地址: http://www.vim.org/scripts/script.php?scr ...

  4. 几年前再用exjts4,如今extjs5发布了,技术更新快,每次给人惊喜

    我们非常高兴的宣布,Sencha Ext JS 5 beta版本开始进行公测了.这个beta版本可以让你.我们Sencha社区来对我们的Ext JS 5的工作进度进行评测.对于所以Ext JS开发人员 ...

  5. iOS 9之分屏多任务(Split View)

    金田(github 示例源码) 多任务(multitasking)算是iOS9中最引人瞩目的核心新特性了,之前越狱版用户就用过类似的插件,微软的 苏菲 (Windows Surface)系列也有分屏多 ...

  6. HDU_2036——多边形面积,行列式计算

    Problem Description “ 改革春风吹满地, 不会AC没关系; 实在不行回老家, 还有一亩三分地. 谢谢!(乐队奏乐)”话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也 ...

  7. nutch和solr集成

    Linux下的Nutch和solr集成 3.1.Nutch安装 l 解压 tar -zxvf apache-nutch-1.4-bin.tar.gz l 终端下cd到目录  apache-nutch- ...

  8. 海量数据挖掘--DB优化篇

    上一篇博客我们介绍了针对大数据量的处理,我们应该对程序做什么样的处理,但是一个程序的优化是有底线的,我们要考虑人力,物力,程序的优化是海量数据处理的一部分,这里介绍我们的重头戏,对数据库的优化! 这里 ...

  9. TCP/IP具体解释--三次握手和四次握手 Dos攻击

    TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...

  10. Linux 创建swap分区

    --首先分出一个分区 /dev/sda5 (注意分区类型)mkswap /dev/sda5           --格式化分区成swap格式swapon /dev/sda5           --激 ...