0

0

[读书笔记] CSS权威指南1: 选择器_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-24 11:20:03

|

1268人浏览过

|

来源于php中文网

原创

通配选择器

可以与任何元素匹配,就像是一个通配符

/*每一个元素的字体都设置为红色*/* {    color: red;}

元素选择器

指示文档元素的选择器。

/*为body的字体设置为红色*/body {    color: red;}

分组

  • 选择器分组
  • h1, h2, h3 {    color: red;}

  • 声明分组
  • h1 {    font: 18px Helvetica;    color: purple;    background: aqua;}

  • 结合选择器和声明分组
  • h1, h2, h3 {    font: 18px Helvetica;    color: purple;    background: aqua;}

    类选择器和ID选择器

    独立于文档元素的方式来指定样式

  • 类选择器
  • .warning {    font-weight: bold}/*包含warning元素的p标签会apply下面的style*/p.warning {    font-weight: bold}/*同时包含urgent和warning类名的元素会apply下面的style,类名顺序不限*/.urgent.warning {    font-weight: bold}/*同时包含urgent和warning类名的元素P会apply下面的style*/p.urgent.warning {    font-weight: bold}

  • ID选择器
  • #content {    margin: 0;}

    ID选择器和类选择器的不同之处:

    立即学习前端免费学习笔记(深入)”;

    1. 在一个HTML文档中,ID选择器会使用一次,而且仅一次。因此,如果有一个元素的id值为lead-para,那么该文档中所有其他元素的id值都不能是lead-para。(注: 浏览器通常并不检查HTML中ID的唯一性,这意味着如果你在HTML文档中设罝了多个有相同ID属性值的元素,就可能为这些元素应用相同的样式。)
    2. ID选择器不能结合使用,因为ID属性不允许有以空格分隔的词列表。

    类选择器和ID选择器可能是区分大小写的,这取决于文档语言。HTML和 XHTML将类和ID值定义为区分大小写,所以类和ID值的大小写必须与文档中的相应值匹配。

    属性选择器

  • 简单属性选择器
  • 如果希望选择有某个属性的元素,而不论该属性的值是什么,可以使用一个简单属性选择器。

    /*选择有class属性(值不限)的所有h1元素,设置其字体颜色为红色 */h1[class] {    color: red;}/*将同时有href和title属性的HTML超链接的文本置为粗体*/a[href][title] {    font-weight: bold;}

  •  根据具体属性值选择
  • /*设置具有href属性,并且属性值为http://www.w3.org/的a标签的font-size为200%*/a[href="http://www.w3.org/"] {    font-size: 200%;}/*同时满足*/a[href="http://www.w3.org/"][title="W3C Home"]{    font-size: 200%;}

    这种格式要求必须与属性值完全匹配

  • 根据部分属性值选择
  • 如果属性能接受词列表(词之间用空格分隔),可以根据其中的任意一个词进行选择。

    MercuryVenusEarth/*为了把class属性中有barren的所有元素变为斜体,可以写作:*/span[class~="barren"] { font-style: italic;}

    p.warning和p[class~="warning"]应用到HTML文档时是等价的

    类型 描述
    [foo^="bar"] 选择foo属性值以"bar"开头的所有元素
    [foo$="bar"] 选择foo属性值以"bar"结尾的所有元素
    [foo~="bar"] 选择foo属性值包含"bar"的所有元素(属性的值根据空格分隔,其中任意一个词能完全匹配bar)
    [foo*="bar"] 选择foo属性值包含"bar"的所有元素(只要包含就可以了,任意位置都可以,不必是一个完整的单词)
  • 特定属性选择类型
  • 用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。

    Hello!

    Greetings!

    G’day!

    Bonjour!

    Jrooana!

    /*上述标签前三个会变成红色,后两个还是黑色*/*[lang|="en"] { color: red;}

    后代选择器

    h1 em {    color: gray;}/*blockquote中包含的所有b(粗体)元素的文本颜色为灰色,另外正常段落中的所有粗体文本也为灰色*/blockquote b, p b {    color: gray;}

    后代选择器中,元素之间的层次间隔可以是无限的。

    子元素选择器

    h1>strong {    color: red;}

    子元素选择器限制为只匹配树种直接相连的元素。

    可以在同一个选择器中结合使用后代选择器和子选择器。

    /*选择作为一个td元素子元素的所有p元素,这个td元素本身从table元素继承,该table元素有一个包含summary的class属性*/table.suitimary td > p {    color: red;}

    相邻兄弟选择器

    和子结合符一样,相邻兄弟结合符旁边可以有空白符。

    /*去除紧接在一个h1元素后出现的段落的上边距*/h1+p {    margin-top: 0;}

    需要注意的是:

  • 用一个结合符只能选择两个相邻兄弟中的第二个元素。因此,如果写作li+li {font-weight: bold;},只会把各列表中的第二个及以后的列表项变成粗体。
  • 两个元素之间的文本内容不会影响相邻兄弟结合符起作用。
    1. List item 1
    2. List item 1
    3. List item 1
    This is some text that is part of the 'div'.
    • A list item
    • Another list item
    • Yet another list item
    /*尽管两个列表间多了一行文本,不过还是可以用选择器ol+ul来匹配第二个列表。*/ol+ul { color: red;}

    伪类和伪元素选择器

    利用伪类和伪元素选择器,可以为文档中不一定具有存在的结构指定样式,或者为某些元素(甚至是文档本身)的状态所指示的幻像类指定样式。会根据另外某种条件而非文档结构向文档中的某些部分应用样式,而且无法通过研究文档的标记准确地推断出采用何种方式应用样式。

  • 伪类选择器
  • 伪类名 描述
    :link

    指示作为超链接(即有一个href属性)并指向一个未访问地址的所有锚。

    注意,有些浏览器可能会不正确地将:link解释为指向任何超链接,包括已访问和未访问的超链接

    :visited

    指示作为已访问地址超链接的所有锚

    ChartGen
    ChartGen

    AI快速生成专业数据图表

    下载
    :focus 指示当前拥有输入焦点的元素,也就是说,可以接受键盘输入或者能以某种方式激活的元素
    :hover

    指示鼠标指针停留在哪个元素上。

    例如,鼠标指针可能停留在一个超链接上,:hover就会指示这个超链接

    :active

    指示被用户输入激活的元素。

    例如,鼠标指针停留在一个超链接上时,如果用户点击鼠标,就会激活这个超链接,将指示这个超链接

    a {    color: red;}a:link {    color: red;}/*两者是不同的,a:link指示的是一个有href属性的,并且未访问过的所有a节点a会应用到所有a标签*/

    a:link {    color: blue;}a:visited {    color: red;}a.external:link, a.external:visited {    color: maroon;}

    伪类的顺序很重要,通常建议为link-visited-focus-hover-active。

    :link和:visited是静态的——第一次显示之后,它们一般不会在改变文档的样式。

    :focus, :hover, :active是动态伪类。动态伪类可以应用到任何元素。

    input:focus {  background-color: silver;  font-weight: bold;}

  • 选择第一个子元素——:first-child,这也是一个静态伪类。
  • /*作为某元素(可以是任意元素)的第一个子元素的所有P元素设置为粗体。最常见的错误是认为p:first-child之类的选择器会选择p元素的第一个子元素。*/p:first-child {    font-weight: bold;}

  •  根据语言选择—— :lang()伪类。
  • 从对应的模式来讲,:lang()伪类就像是|=属性选择器。

    *:lang(fr) {   font-style: italic;}

    伪选择器和属性选择器之间的主要差别在于语言信息可以从很多来源得到,而且其中一些可能在元素之外。CSS2.1指出:

    在HTML中,语言由lang属性和META元素的组合来确定,还可能包括协议提供的信息,如HTTP首部。XML使用一个xml:lang属性,另外可能还有其他文档语言特定的方法来确定语言。

    因此,伪类比属性选择器稍微健壮一些。

    结合伪类:

    /*鼠标指针停留在未访问链接上时,可以让这些链接变成红色,而鼠标指针停留在已访问链接上时,链接变成紫红色。*/a:link:hover {    color: red;}a:visited:hover {    color: maroon;}

     用哪种顺序指定并不重要,写成a:hover:link会得到与a:link:hover一样的效果。

  • 伪元素选择器
  • 就像伪类为锚指定幻象类一样,伪元素能够在文档中插入假想的元素,从而得到某种效果。CSS2.1中定义了4个伪元素:设置首字母样式、设置第一行样式、设置之前和之后的样式。

  • 设置首字母样式
  • 用于设置一个块级元素首字母的样式,而且仅对该首字母设置样式。

    /*让每个h2中第一个字母的大小是标题中其余字母大小的2倍*/h2:first-letter {    font-size: 200%;}

    这个规则会导致用户代理(浏览器)对一个假想的元素作出响应,这个假想元素包含每个h2中的第一个字母。可能如下所示:

    This is an h2 element


    :first-letter样式只应用到上例所示假想元素的内容。这个元素并不出现在文档源代码中。相反,它是由用户代理动态构造的,用于向相应文本块应用:first-letter样式。换句话说,是一个伪元素。
  • 设置第一行样式
  • :first-line可以用来影响元素中第一个文本行。(第一行是指显示区域的第一行,所以浏览器窗口大小不同,第一行所代表的字符数量也是不同的。)

    /*应用于每一段所显示的第一行文本。*/p:first-line {    color: red;}

    :first-letter, :first-line允许设置的CSS属性:

    :first-letter :first-line
    所有的font属性 所有的font属性
    color color
    所有background属性 所有background属性
    所有margin属性  
    所有padding属性  
    所有border属性  
    text-decoration text-decoration
    vertical-align vertical-align
    text-transform text-transform
    line-height line-height
    float  
    letter-spacing letter-spacing
    word-spacing  
  • 设置之前和之后的样式
  • h2:before {  content: "before";  color: red;}h2:after {  content: "after";  color: red;}

    所有伪元素都必须放在出现该伪元素的选择器的最后面,如果写成p: first-line em就是不合法的,因为伪元素在选择器主体前面出现。

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    Golang gRPC 服务开发与Protobuf实战
    Golang gRPC 服务开发与Protobuf实战

    本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

    8

    2026.01.15

    公务员递补名单公布时间 公务员递补要求
    公务员递补名单公布时间 公务员递补要求

    公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

    44

    2026.01.15

    公务员调剂条件 2026调剂公告时间
    公务员调剂条件 2026调剂公告时间

    (一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

    58

    2026.01.15

    国考成绩查询入口 国考分数公布时间2026
    国考成绩查询入口 国考分数公布时间2026

    笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

    11

    2026.01.15

    Java 桌面应用开发(JavaFX 实战)
    Java 桌面应用开发(JavaFX 实战)

    本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

    65

    2026.01.14

    php与html混编教程大全
    php与html混编教程大全

    本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

    36

    2026.01.13

    PHP 高性能
    PHP 高性能

    本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

    75

    2026.01.13

    MySQL数据库报错常见问题及解决方法大全
    MySQL数据库报错常见问题及解决方法大全

    本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

    21

    2026.01.13

    PHP 文件上传
    PHP 文件上传

    本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

    35

    2026.01.13

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号