博客列表 >PHP大牛成长之路:CSS选择器

PHP大牛成长之路:CSS选择器

周Sir-BLOG
周Sir-BLOG原创
2020年06月16日 19:54:50733浏览

1、简单选择器

1.1、元素选择器(也叫标签选择器)

  • HTML代码:可以简单理解包含在<>中的标签,比如:<html> <body> <div> <p> <h2>等等。

  • 示例:元素选择器

  1. /* 设置div标签背景为浅灰色 */
  2. div{
  3. background-color: #ccc;
  4. }

1.2、类选择器

  • 就是HTML的class属性。

  • 示例:类选择器(css)

  1. /* 设置box类的背景为浅灰色 */
  2. .box{
  3. background-color: #ccc;
  4. }
  • 示例:类选择器(html)
  1. <div class="box"></div>
  • 示例:类选择器的复合应用
  1. <style>
  2. /* 设置box类的背景为浅灰色 */
  3. .box{
  4. background-color: #ccc;
  5. }
  6. /* 设置box类+text_font类的复合应用红色字体 */
  7. .box.text_font{
  8. color: red;
  9. }
  10. </style>
  11. <div class="box text_font">我是灰底红字</div>

注意:两个类之间不能有空格

1.3、ID选择器

  • id 选择器以 “#” 来定义

  • 示例:ID选择器(CSS)

  1. /* 设置id为:box的背景为浅灰色 */
  2. #box{
  3. background-color: #ccc;
  4. }
  • 示例:ID选择器(html)
  1. <div id="box">灰色背景</div>

class可以与id选择器共同使用
id 选择器的应用场景主要应用场景: 表单元素, 锚点


2、上下文选择器

2.1 后代选择器

  • 后代选择器使用类+空格+标签组成

  • 示例:后代选择器示例

  1. <style>
  2. .box{
  3. background-color: #ccc;
  4. }
  5. /* p标签后代选择器 */
  6. .box p{
  7. color: red;
  8. }
  9. </style>
  10. <div class="box">
  11. <p>后代选择器生效</p>
  12. </div>
  13. <p>后代选择器无效(因为不在box类中)</p>

2.2 父子选择器

  • 父子选择器使用 类+>+标签组成

  • 示例:父子选择器示例

  1. <style>
  2. .box{
  3. background-color: #ccc;
  4. }
  5. /* p标签父子选择器 */
  6. .box > p{
  7. color: red;
  8. }
  9. </style>
  10. <div class="box">
  11. <p>父子选择器生效</p>
  12. </div>
  13. <p>父子选择器无效(因为不在box类中)</p>

2.3 相邻兄弟选择器

  • 相邻兄弟选择器可选择紧接在另一元素后的元素,且二者有相同父元素
  1. <style>
  2. /* 将有复合类的第3个li标签的下一个4文字变为红色 */
  3. .item.box + .item{
  4. color: red;
  5. }
  6. </style>
  7. <div class="box">
  8. <ul>
  9. <li class="item">1</li>
  10. <li class="item">2</li>
  11. <li class="item box">3</li>
  12. <li class="item">4</li>
  13. <li class="item">5</li>
  14. </ul>
  15. </div>

2.4 同级所有选择器

  • 同级所有选择器是选取指定元素下同级的所有元素。
  1. <style>
  2. /* 将有复合类的第3个li标签以下同级的(4、5)文字变为红色 */
  3. .item.box ~ .item{
  4. color: red;
  5. }
  6. </style>
  7. <div class="box">
  8. <ul>
  9. <li class="item">1</li>
  10. <li class="item">2</li>
  11. <li class="item box">3</li>
  12. <li class="item">4</li>
  13. <li class="item">5</li>
  14. </ul>
  15. </div>

3、伪类选择器

3.1 结构伪类选择器(不分组)

  • :first-child 匹配第一个元素
  1. <style>
  2. /* :first-child 匹配第一个元素(第1个li标签字体红色) */
  3. li:first-child{
  4. color: red;
  5. }
  6. </style>
  7. <div class="box">
  8. <ul>
  9. <li class="item">1</li>
  10. <li class="item">2</li>
  11. <li class="item">3</li>
  12. <li class="item">4</li>
  13. <li class="item">5</li>
  14. </ul>
  15. </div>
  • :first-child 匹配最后一个元素
  1. <style>
  2. /* :last-child 匹配最后一个元素(第5个li标签字体红色) */
  3. li:last-child{
  4. color: red;
  5. }
  6. </style>
  7. <div class="box">
  8. <ul>
  9. <li class="item">1</li>
  10. <li class="item">2</li>
  11. <li class="item">3</li>
  12. <li class="item">4</li>
  13. <li class="item">5</li>
  14. </ul>
  15. </div>
  • :nth-child(索引号) 匹配指定元素
  1. <style>
  2. /* :nth-child(3) 匹配指定元素-索引方式:从1开始(比如:第3个li标签字体红色) */
  3. li:nth-child(3){
  4. color: red;
  5. }
  6. </style>
  7. <div class="box">
  8. <ul>
  9. <li class="item">1</li>
  10. <li class="item">2</li>
  11. <li class="item">3</li>
  12. <li class="item">4</li>
  13. <li class="item">5</li>
  14. </ul>
  15. </div>
  • :nth-child(2n):nth-child(even) 匹配偶数元素
  1. <style>
  2. /* :nth-child(2n)和:nth-child(even) 匹配偶数元素(第2/4个li标签字体红色) */
  3. li:nth-child(2n){
  4. color: red;
  5. }
  6. /* li:nth-child(even){
  7. color: red;
  8. } */
  9. </style>
  10. <div class="box">
  11. <ul>
  12. <li class="item">1</li>
  13. <li class="item">2</li>
  14. <li class="item">3</li>
  15. <li class="item">4</li>
  16. <li class="item">5</li>
  17. </ul>
  18. </div>
  • :nth-child(2n-1):nth-child(odd) 匹配奇数元素
  1. <style>
  2. /* :nth-child(2n-1)和:nth-child(odd) 匹配奇数元素(第1/3/5个li标签字体红色) */
  3. /* li:nth-child(2n-1){
  4. color: red;
  5. } */
  6. li:nth-child(odd){
  7. color: red;
  8. }
  9. </style>
  10. <div class="box">
  11. <ul>
  12. <li class="item">1</li>
  13. <li class="item">2</li>
  14. <li class="item">3</li>
  15. <li class="item">4</li>
  16. <li class="item">5</li>
  17. </ul>
  18. </div>
  • 其它:
NO 选择器 说明
1 :nth-child(n + 索引号) 指定位置剩下的所有元素
2 :nth-child(-n + 索引号) 只取前几个
3 :nth-last-child(-n + 索引号) 只取最后几个
4 :nth-last-child(索引号) 倒数的方式匹配

3.2 结构伪类选择器(分组)

  • :last-of-type伪类名+标签定义 例子如下:
  1. <style>
  2. /* 匹配span标签最后1个=3 */
  3. .box span:last-of-type {
  4. color: red;
  5. }
  6. /* 匹配p标签最后1个=6 */
  7. .box p:last-of-type {
  8. color: red;
  9. }
  10. </style>
  11. <div class="box">
  12. <span class="item">1</span>
  13. <span class="item">2</span>
  14. <span class="item">3</span>
  15. <p class="item">4</p>
  16. <p class="item">5</p>
  17. <p class="item">6</p>
  18. </div>

4、伪类与伪元素

  • 伪类(前面是单冒号)
No 伪类 备注
1 :target 必须id配合,实现锚点操作
2 :focus 当获取焦点的时候
3 :not() 用于选择不满足条件元素
  • 伪元素(前面是双冒号)
No 伪元素 备注
1 ::selection 一般用于设置选中文本的前后背景色
2 ::before 在元素前添加内容(与content一起使用)
3 ::after 在元素后添加内容(与content一起使用)

:target示例

  1. <style>
  2. #search {
  3. display: none;
  4. }
  5. #search:target {
  6. display: block;
  7. }
  8. </style>
  9. <span><a href="#search">搜索</a></span>
  10. <form action="#" id="search">
  11. <input type="text" name="key" id="key" />
  12. <button>搜索</button>
  13. </form>

:focus示例

  1. <style>
  2. input:focus {
  3. background: #000;
  4. color: #fff;
  5. }
  6. </style>
  7. <form action="#" id="search">
  8. <input type="text" name="key" id="key" value="获得焦点黑底白字"/>
  9. <button>搜索</button>
  10. </form>

:not()示例

  1. <style>
  2. /* 非p标签字体红色 */
  3. .box :not(p){
  4. color:red;
  5. }
  6. </style>
  7. > **:focus示例**
  8. <div class="box">
  9. <p>1(p标签)</p>
  10. <span>2(span标签)</span>
  11. </div>

::before示例

  1. <style>
  2. h2::before {
  3. content: "北京";
  4. }
  5. </style>
  6. <h2>-是我国的首都</h2>

显示:北京-是我国的首都

::after示例

  1. <style>
  2. h2::after {
  3. content: "北京";
  4. }
  5. </style>
  6. <h2>我国的首都是-</h2>

显示:我国的首都是-北京

总结

  • 简单CSS选择器:元素 < class < id
  • 实际id与class选择器前面都有*号,属于元素级别,id,class可以添加到任何元素上,所以可以省略;
  • 伪类选择器灵活应用,可以简化代码,提高效率。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议