CSS学习记录02CSS基本选择器、层次选择器、伪类选择器(1)

p5

  • p6

    p7

    p8

    在这里插入图片描述

    其中"p2"是"p1"的相邻兄弟(向下顺延),“p8"是"p7"的相邻兄弟(向下顺延),所以"p2”、"p8"被有效设置,"p0"因其为"p1"的向上相邻而非向下,故不被有效设置。

    2.2.4通用选择器

    在这里插入图片描述

    即,相对于相邻兄弟选择器,多了其本身。

    2.3伪类选择器

    伪类选择器(简称:伪类)通过冒号来定义,它定义了元素的状态,如点击按下,点击完成等,通过伪类可以为元素的状态修改样式。

    伪类选择器主要可以分为:动态伪类选择器、UI元素状态伪类选择器、结构伪类选择器、否定伪类选择器。

    2.3.1动态伪类选择器

    | 语法 | 解释 |

    | — | — |

    | E:link | 选择匹配的E元素,而且匹配元素被定义了超链接并未被访问过。常用于链接描点上 |

    | E:visited | 选择匹配的E元素,而且匹配元素被定义了超链接并已被访问过。常用于链接描点上 |

    | E:active | 选择匹配的E元素,且匹配元素被激活。常用于链接描点和按钮上 |

    | E:hover | 选择匹配的E元素,且用户鼠标停留在元素E上。IE6及以下浏览器仅支持a:hover |

    | E:focus | 选择匹配的E元素,而且匹配元素获取焦点 |

    a标签有4种伪类(即对应四种状态),如下:

    • :link “链接”:超链接点击之前

    • :visited “访问过的”:链接被访问过之后

    • :hover “悬停”:鼠标放到标签上的时候

    • :active “激活”: 鼠标点击标签,但是不松手时。

    例:

    /让超链接点击之前是红色/

    a:link {color: red;}

    /让超链接点击之后是橙色/

    a:visited {color: orange;}

    /鼠标悬停,放到标签上的时候是绿色/

    a:hover {color: green;}

    /鼠标点击链接,但是不松手的时候/

    a:active {color: black;}

    在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的,a:active 必须被置于 a:hover 之后,才是有效的。所以,a标签的这四种伪类选择器的顺序为:a:link ,a:visited,a:hover ,a:active

    2.3.2UI元素状态伪类选择器

    | 语法 | 解释 |

    | — | — |

    | E:checked | 匹配选中的复选按钮或者单选按钮表单元素 |

    | E:enabled | 匹配所有启用的表单元素 |

    | E:disabled | 匹配所有禁用的表单元素 |

    UI元素状态伪类选择器主要是针对于HTML中的Form元素进行操作,最常见的比如我们"type="text"有enable和disabled两种状态,前者为可写状态后者为不可状态;另外"type="radio"和"type=“checkbox”"有"checked"和"unchecked"两种状态。来看两个实例,比如说你想将"disabled"的文本框与别的文本框区别出来,你就可以这样应用:

    input[type=“text”]:disabled {border:1px solid #999;background-color: #fefefe;}

    注意:IE6-8不支持":checked",“:enabled”,":disabled"这三种选择器。

    2.3.3结构伪类选择器

    | 语法 | 解释 |

    | — | — |

    | E:fisrt-child | 作为父元素的第一个子元素的元素E。与E:nth-child(1)等同 |

    | E:last-child | 作为父元素的最后一个子元素的元素E。与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值起始值为1,而不是0 |

    | E F:nth-last-child(n) | 选择父元素E的倒数第n个子元素F。此选择器与E:nth-child(n)选择器计算顺序刚好相反,但使用方法都是一样的,其中:nth-last-child(1)始终匹配最后一个元素,与last-child等同 |

    | E:nth-of-type(n) | 选择父元素内具有指定类型的第n个E元素 |

    | E:nth-last-of-type(n) | 选择父元素内具有指定类型的倒数第n个E元素 |

    | E:first-of-type | 选择父元素内具有指定类型的第一个E元素,与E:nth-of-type(1)等同 |

    | E:last-of-tye | 选择父元素内具有指定类型的最后一个E元素,与E:nth-last-of-type(1)等同 |

    | E:only-child | 选择父元素只包含一个子元素,且该子元素匹配E元素 |

    | E:only-of-type | 选择父元素只包含一个同类型子元素,且该子元素匹配E元素 |

    | E:empty | 选择没有子元素的元素,而且该元素也不包含任何文本节点 |

    Title

    p1

    p2

    p3

    • li1
    • li2
    • li3
    • 在这里插入图片描述

      规定属于其父元素的第一个子元素的每个 p 的背景色:

      /选中p1:定位到父元素,选择当前的第一个元素/

      p:nth-child(1){

      background: blueviolet;

      }

      解释:

      第一步:定位p的父元素(p的第一个作用)

      第二步:定位父元素下的第一个元素(数字的作用)

      第三步:判断这第一个元素是否为p,若为p则改变样式,否则无效

      选择父元素里第二个类型为p的元素,设置为黄色背景:

      p:nth-last-of-type(2) {

      background: yellow;

      }

      在这里插入图片描述

      结构伪类选择器,可以根据元素在文档中所处的位置,来动态选择元素,从而减少HTML文档对ID或类的依赖,有助于保持代码干净整洁。

      结构伪类选择器很容易遭到误解,需要特别强调。如:

      input:not([type="submit"]) {border: 1px solid red;}

      它表示的是:选择父元素下的第一个子元素 p,而不是选择 p 元素的第一个子元素。

      2.3.4否定伪类选择器

      | 语法 | 解释 |

      | — | — |

      | E:not(F) | 匹配所有除元素F外的E元素 |

      例:对form中所有input加边框,但又不想submit也起变化,就可以这样写:

      input:not([type=“submit”]) {border: 1px solid red;}

      2.4属性选择器(常用)

      属性选择器可以根据元素的属性及属性值来选择元素。

      可以理解为id + class

      一些随心的例子:

      Title

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      注:

      以下内容来自文章《CSS 属性选择器详解》,部分示例代码可在线查看效果,也推荐收藏该网站,对CSS的学习有不可小觑的帮助。

      2.4.1简单属性选择

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

      例子 1

      如果您希望把包含标题(title)的所有元素变为红色,可以写作:

      *[title] {color:red;}

      例子 2

      与上面类似,可以只对有 href 属性的锚(a 元素)应用样式:

      a[href] {color:red;}

      例子 3

      还可以根据多个属性进行选择,只需将属性选择器链接在一起即可。

      例如,为了将同时有 href 和 title 属性的 HTML 超链接的文本设置为红色,可以这样写:

      a[href][title] {color:red;}

      例子 4

      可以采用一些创造性的方法使用这个特性。

      例如,可以对所有带有 alt 属性的图像应用样式,从而突出显示这些有效的图像:

      img[alt] {border: 5px solid red;}

      提示:上面这个特例更适合用来诊断而不是设计,即用来确定图像是否确实有效。

      例子 5:为 XML 文档使用属性选择器

      属性选择器在 XML 文档中相当有用,因为 XML 语言主张要针对元素和属性的用途指定元素名和属性名。

      假设我们为描述太阳系行星设计了一个 XML 文档。如果我们想选择有 moons 属性的所有 planet 元素,使之显示为红色,以便能更关注有 moons 的行星,就可以这样写:

      planet[moons] {color:red;}

      这会让以下标记片段中的第二个和第三个元素的文本显示为红色,但第一个元素的文本不是红色:

      Venus

      Earth

      Mars

      2.4.2根据具体属性值选择

      除了选择拥有某些属性的元素,还可以进一步缩小选择范围,只选择有特定属性值的元素。

      例子 1

      例如,假设希望将指向 Web 服务器上某个指定文档的超链接变成红色,可以这样写:

      a[href=“http://www.w3school.com.cn/about_us.asp”] {color: red;}

      例子 2

      与简单属性选择器类似,可以把多个属性-值选择器链接在一起来选择一个文档。

      a[href=“http://www.w3school.com.cn/”][title=“W3School”] {color: red;}

      这会把以下标记中的第一个超链接的文本变为红色,但是第二个或第三个链接不受影响:

      W3School

      CSS

      HTML

      例子 3

      同样地,XML 语言也可以利用这种方法来设置样式。

      下面我们再回到行星那个例子中。假设只希望选择 moons 属性值为 1 的那些 planet 元素:

      planet[moons=“1”] {color: red;}

      上面的代码会把以下标记中的第二个元素变成红色,但第一个和第三个元素不受影响:

      Venus

      Earth

      Mars

      属性与属性值必须完全匹配

      请注意,这种格式要求必须与属性值完全匹配。

      如果属性值包含用空格分隔的值列表,匹配就可能出问题。

      请考虑一下的标记片段:

      This paragraph is a very important warning.

      如果写成 p[class="important"],那么这个规则不能匹配示例标记。

      要根据具体属性值来选择该元素,必须这样写:

      p[class=“important warning”] {color: red;}

      2.4.3根据部分属性值选择

      如果需要根据属性值中的词列表的某个词进行选择,则需要使用波浪号(~)。

      假设您想选择 class 属性中包含 important 的元素,可以用下面这个选择器做到这一点:

      p[class~=“important”] {color: red;}

      如果忽略了波浪号,则说明需要完成完全值匹配。

      2.4.3.1部分值属性选择器与点号类名记法的区别

      自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
      img
      img
      img
      img
      img
      img

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

      如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
      img

      最后

      ❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。

      前端校招面试题精编解析大全

      一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
      img

      力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

      因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
      [外链图片转存中…(img-WEytNYZj-1712653337012)]
      [外链图片转存中…(img-2cwhShxj-1712653337012)]
      [外链图片转存中…(img-svIvxpkP-1712653337013)]
      [外链图片转存中…(img-3kikdX9b-1712653337013)]
      [外链图片转存中…(img-rmtsTbRx-1712653337013)]
      [外链图片转存中…(img-H1RrLJxZ-1712653337014)]

      既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

      由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

      如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
      [外链图片转存中…(img-nrgP4Uca-1712653337014)]

      最后

      ❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。

      [外链图片转存中…(img-6htLk9Am-1712653337014)]

      一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
      [外链图片转存中…(img-FfL7BZZ8-1712653337014)]

    • 17
      点赞
    • 29
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值