python 之 前端开发(基本选择器、组合选择器、 交集与并集选择器、序列选择器、属性选择器、伪类选择器、伪元素选择器)
11.3 css
11.31 基本选择器
11.311 id选择器
根据指定的id名称,在当前界面中找到对应的唯一一个的标签,然后设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #p1 {color: red;} 引用id一定要加# #p2 {color: green;} #p3 {color: blue;} </style> </head> <body> <p id="p1">大多数人的帅,都是浮在表面的,是外表的帅</p> <p id="p2">而我,不仅具备外表帅,内心更是帅了一逼</p> <p id="p3">就是我,我就是</p> </body> </html>
11.312 类选择器
作用:根据指定的类名称,在当前界面中找到对应的标签,然后设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .p1 {color: red;} #引用class一定要加点. .p2 {font-size: 50px;} .p3 {text-decoration: underline;} </style> </head> <body> <p class="p1">大多数人的帅,都是浮在表面的,是外表的帅</p> <p class="p2">而我,不仅具备外表帅,内心更是帅了一逼</p> <p class="p3">那就是我</p> <!-- 第一行与第三行的颜色都是红色 第一行与第二行的字体大小都是50px 第二行与第三行内容有个下划线 --> <p class="p1 p2">大多数人的帅,都是浮在表面的,是外表的帅</p> <p class="p2 p3">而我,不仅具备外表帅,内心更是帅了一逼</p> <p class="p3 p1">那就是我</p> </body> </html>
11.313 标签选择器
作用:根据指定的标签名称,在当前界面中找到所有该名称的标签,然后设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> p {color: red;} </style> </head> <body> <p>美丽的外表下其实隐藏着一颗骚动的心</p> <ul> <li> <p>这颗心叫做七巧玲珑心,男人吃了会流泪,女人吃了会怀孕</p> </li> </ul> </body> </html>
注意: 1、只要是HTML的标签都能当做标签选择器 2、标签选择器选中的是当前界面中的所有标签,而不能单独选中某一标签 3、标签选择器,无论嵌套多少层都能选中
11.314 通配符选择器
作用:选择所有标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * {color: red;} #把所有的标签设置相同的属性 </style> </head> <body> <h1 >我是标题</h1> <p >我是段落</p> <a href="#">我是超链接</a> </body> </html>
11.32 组合选择器
11.321 后代选择器
作用:找到指定标签的所有后代(儿子,孙子,重孙子、、、)标签,设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .part1 p {color: red;} # 1 找到part1下的所有p标签,添加属性 #id1 ul p {color: red;} # 2 找到一个id='id1'下的ul下的所有p标签 </style> </head> <body> <p>我是body下的段落1</p> <div id="id1" class="part1"> <p>我是div下的段落1</p># 1 <ul> <li class="aaa"> <p class="ccc">我是ul>li下的段落1</p># 1 2 </li> </ul> </div> <div> <p>hahahahah</p> </div> <p>我是body下的段落2</p> </body> </html>
注意:1、后代选择器必须用空格隔开 2、后代不仅仅是儿子,也包括孙子、重孙子 3、后代选择器不仅仅可以使用标签名称,还可以使用其他选择器比如id或class 4、后代选择器可以通过空格一直延续下去
11.322 子元素选择器
作用:找到指定标签的所有特定的直接子元素,然后设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #id1>p {color: red;} # 1 找到id='id1'下的子标签p,添加属性 .part1 ul .aaa>a {color: red;} </style> #2 找到class='part1'下的所有标签ul下的class=aaa的子标签a,添加属性 </head> <body> <p>我是body下的段落1</p> <div id="id1" class="part1"> <p>我是div下的段落1</p> # 1 <ul> <li class="aaa"> <p class="ccc">我是ul>li下的段落1</p> <a href="">点我啊1</a> # 2 <p> <a href="">点我啊2</a> </p> </li> <li> <a href="#">点我啊3</a> </li> </ul> </div> <div> <p>hahahahah</p> </div> <p>我是body下的段落2</p> <a href="#">百度一下</a> </body> </html>
注意: 1、子元素选择器之间需要用>符号链接,并且不能有空格,比如div >p会找div标签的所有后代标签,标签名为">p" 2、子元素选择器只会查找儿子,不会查找其他嵌套的标签 3、子元素选择器不仅可以用标签名称,还可以使用其他选择器,比如id或class 4、子元素选择器可以通过>符号一直延续下去
11.323相邻兄弟与通用兄弟选择器
相邻兄弟选择器:只能选中紧跟其后的那个标签,不能选中被隔开的标签
通用兄弟选择器:给指定选择器后面的所有选择器中的所有标签设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>后代选择器</title> <style type="text/css"> #相邻兄弟选择器 h1+p {color: red;}#相邻兄弟选择器必须通过+号链接 x #通用兄弟选择器 h1~p {color: red;}#通用兄弟选择器必须用~来链接 y </style> </head> <body> <h1>我是标题1</h1> <a href="">有了这个标签,p就不再是紧跟h1标签了,但通用兄弟选择器仍然能选中</a> <p>我是段落</p> #y <p>我是段落</p> #y <h1>我是标题2</h1> <p>我是段落</p> #x y </body> </html>
11.33 交集与并集选择器
11.331 并集选择器
作用:给所有满足条件的标签设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> p,a {color: red;} #找到所有p标签和a标签,添加属性 </style> </head> <body> <h1>哈哈啊</h1> <p class="part1">我是段落1</p> <a href="#" class="part2">a标签</a> </body> </html>
注意: 1、选择器与选择器之间必须用逗号来链接 2、选择器可以使用标签名称、id、class
11.332 交集选择器
作用:给所有选择器选中的标签中,相交的那部分标签设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> a.part2 {color: red;} #找到同时有a标签且class="part2",添加属性 </style> </head> <body> <h1>哈哈啊</h1> <p class="part2">我是段落2</p> <a href="#" class="part2">a标签1</a> #此处文本变成红色 <a href="#">a标签2</a> </body> </html>
注意: 1、选择器与选择器之间没有任何链接符号 2、选择器可以使用标签名称、id、class
11.34 序列选择器
#2.1 同级别
:first-child p:first-child 同级别的第一个
:last-child p:last-child 同级别的最后一个
:nth-child(n) 同级别的第n个
:nth-last-child(n) 同级别的倒数第n个
#2.2 同级别同类型
:first-of-type 同级别同类型的第一个
:last-of-type 同级别同类型的最后一个
:nth-of-type(n) 同级别同类型的第n个
:nth-last-of-type(n) 同级别同类型的倒数第n个
#2.3 其他
:only-of-type 同类型的唯一一个
:only-child 同一级别唯一一个
11.341同级别序列选择器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> p:first-child {color: red;} #同一级别第一个p x p:last-child {color: red;} #同一级别倒数第一个p y p:nth-child(3) {color: red;} #同一级别第3个p z p:nth-last-child(3) {color: red;}#同一级别倒数第3个p w </style> </head> <body> <h1>我是标题1</h1> <p>我是段落1</p> <a href="">aaaaa</a> <p>我是段落2</p> <p>我是段落3</p> #w <p>我是段落4</p> <p>我是段落5</p> #y <div> <p>我是段落6</p> #x w <a href="">我是a标签</a> <h1>我是标题2</h1> </div> </body> </html>
11.342同级别同类型序列选择器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> p:first-of-type {color: red;} # 同级别同类型的第一个p x p:last-of-type {olor: red;} # 同级别同类型的倒数第一个p y p:nth-of-type(3) {color: red;} # 同级别同类型的第3个p z p:nth-last-of-type(3) {color: red;} # 同级别同类型的倒数第3个p u p:only-child {color: red;} # 同一级别唯一一个p 不存在 p:only-of-type {color: red;} # 同类型的唯一一个 不存在 </style> </head> <body> <h1>我是标题1</h1> <p>我是段落1</p> #x <a href="">aaaaa</a> <p>我是段落2</p> <p>我是段落3</p> #z u <p>我是段落4</p> <p>我是段落5</p> #y <div> <a href="">我是a标签</a> <p>我是段落6</p>#x u <p>我是段落7</p> <p>我是段落8</p>#y z <h1>我是标题2</h1> </div> <div> <p>我是独生子</p>#x <p>我是独生子</p>#y <a href="">我是二胎</a> <a href="">我是二胎</a> </div> </body> </html>
11.35 属性选择器
作用:根据指定的属性名称找到对应的标签,然后设置属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> [id] {color: red;} #找到所有包含id属性的标签 x h1[id] {color: red;} #找到所有包含id属性的h1标签 y [value] {width: 200px;height: 200px;} #找到所有包含value属性的标签 z [class="part1"] {color: red;} #找到所有class属性值为part1的标签 u [class^="part"] {color: red;} #找到所有class属性值以part开头的标签 v [class*="part"] {color: red;} #找到所有class属性值包含part的标签 w [class$="yyy"] {color: red;} #找到所有class属性值以yyy结尾的标签 o [value*="male"] {width: 200px;height: 200px;}#找到所有value属性值包含male的标签 p [type="radio"] {width: 200px;height: 200px;}#找到所有type属性值为radio的标签 q </style> </head> <body> <h1 id="id1">哈哈啊</h1>#x y <p id="id2" class="part3">我是段落22222</p>#x v w <p class="part1">我是段落1111</p>#u v w <p class="xxx part2 yyy">我是段落</p>#w o <input type="radio" name="gender" value="male">#z p q <input type="radio" name="gender" value="female">#z p q </body> </html>
11.36 伪类选择器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> a:link {color: blue;} #没有访问的超链接a标签样式 a:hover {color: chocolate;} #鼠标悬浮在元素上应用样式: a:active {color: mediumvioletred;} #鼠标点击瞬间的样式: a:visited {color: green;} #访问过的超链接a标签样式: div {width:200px; height:200px; background-color:green;} div:hover {background-color: red;} #hover ,div等标签也可以使用 input:focus {outline:none;background-color:dark;}#input输入框获取焦点时样式: </style> </head> <body> <a href="https://www.tmall.com">这是一个好的网站</a> <div></div> 用户名: <input type="text" name="username"> </body> </html>
注意: 1、a标签的伪类选择器可以单独出现,也可以一起出现 2、a标签的伪类选择器如果一起出现,有严格的顺序要求,否则失效 3、hover是所有其他标签都可以使用的 4、focus只给input标签使用
11.37 伪元素选择器
伪元素选择器(CSS3中新增的伪元素选择器):伪元素选择器的作用就是给指定标签的内容前面添加一个子元素或者给指定标签的内容后面添加一个子元素
格式:
标签名称:before{属性名称:值;}
标签名称:after{属性名称:值;}
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> p:before {content: "alex is BigSB";color: green;} #用于在元素的内容前面插入新内容 p:first-letter {font-size: 200px;} #杂志类文章首字母样式调整 a:after {content:"?";color:red;}#用于在元素的内容后面插入新内容,在所有a标签的内容后面加上一个? </style> </head> <body> <p>英雄不问出处,流氓不论岁数</p> #alex is BigSB英雄不问出处,流氓不论岁数 <a href="#" class="help">你是干什么的</a> <a href="#" class="help">你是干什么的</a> <a href="#" class="help">你是干什么的</a> </body> </html>