慕课前端入门-CSS选择器

1.CSS选择器

通配符选择器:*{margin: 0}
元素选择器:body{}
类选择器:.red{}
ID选择器:#green{}
后代选择器:ul li{}

选择器示例
基本选择器子元素选择器:父元素>子元素
只能选择父元素的子元素
section>div{color: red;}
相邻兄弟选择器:父元素+兄弟相邻元素
可以选择紧接在另一元素后的元素,而且他们具有一个相同的父元素。
section > div + article{color: red;}
通用兄弟选择器:父元素 ~ 后面所有兄弟相邻元素
选择某元素后面的所有兄弟元素,而且他们具有一个相同的父元素。
section > div ~ article{color: red;}
群组选择器:元素1,元素2...
将具有相同样式的元素分组在一起,每个选择器之间使用,隔开
article,div,aside{color:green;}
属性选择器element[属性] 选择所有带有attribute属性的元素a[href]{color:green;}
element[属性='vlue']选择所有使用attribute=value的元素 a[href="hello"]{color:green;}
element[属性 ~= 'value']
选择属性包含value的元素
a[class ~= 'two']{color: red;}
element[属性 ^= 'value']
选择属性值以value开头的所有元素
a[href ^= '#']{color: red;}
element[属性 $= 'value']
选择属性值以value结尾的所有元素
a[href $= '#']{color: red;}
element[属性 *= 'value']
选择属性值包含value的所有元素
a[href *= '#']{color: #abcdef;}
element[属性 |= 'value']
选择属性值为value或以value-开头的的所有元素
a[href |= '#']{color: #abcdef;}
伪类选择器 动态伪类(锚点伪类、用户行为伪类)
这些伪类并不存在与html中,只有当用户和网站交互的时候才能体现出来
锚点伪类(:link :visited) 用户行为伪类(:hover :active :focus)
a:link{color:red;}//初始颜色
a:visited{color:green;}//访问后颜色
a:hover{color:orange;}//停留时颜色
a:active{color:blue;}//点击时颜色
input:focus{background:#abcdef;}
UI元素状态伪类 :enable可输入 :disable不可输入 :checked被选中input:disabled{background-color: red;}
CSS3结构类:nth
:first-child 选择属于其父元素的首个子元素的每个Element元素
:last-child 指定属于其父元素的最后一个子元素的element元素
:nth-child(n) 匹配属于其父元素的第N个子元素(也可用表达式),不论元素的类型
:nth-last-child() 匹配属于其元素的第N个子元素的每个元素,不论元素的类型,从最后一个子元素开始计数
:nth-of-type() 匹配属于父元素的特定类型的第N个子元素的每个元素
:nth-last-of-type() 匹配属于父元素的特定类型的第N个子元素的每个元素,从最后一个子元素开始计数
:first-of-type 匹配属于其父元素的特定类型的首个子元素的每个元素
:last-of-type 匹配属于其父元素的特定类型的最后一个子元素的每个元素
:only-child 匹配属于其父元素的唯一子元素的每个元素
:only-of-type 匹配属于其父元素的特定类型的唯一子元素的每个元素
:empty 匹配没有子元素(包括文本节点)的每个元素
section>div:first-child{color: #f00;}
section>div:last-child{color: #f00;}
ul>li:nth-child(even){background: yellow;}或使用2n偶数
ul>li:nth-child(odd){background: yellow;}或2n+1奇数
ul>li:nth-last-child(3){background: red;}
div:nth-of-type(2){background: red;}该元素是div,且在父元素中排第2
div:nth-last-of-type(1){background: red;}该元素是div,且在父元素中排倒数第一
div:first-of-type{background: red;}
div:last-of-type{background: red;}
div:only-child{background: red;}子元素唯一
div:only-of-type{background: red;}指定的元素唯一
div:empty{background:red;}
否定选择器:not(selector)
匹配非指定元素/选择器的每个元素
nav > a:not(:last-of-type){border-right:1px solid red;}
伪元素 格式:元素::伪元素
用于向某些选择器设置特殊效果
::first-line对元素的第一行文本进行格式化,只能用于块级元素。
::first-letter对文本的首字母设置样式,只能用于块级元素。
::before 在元素的内容前面插入新内容,常用content配合使用。
::after 在元素的内容后面插入新内容,常用content配合使用,多用于清除浮动
::selection用于设置在浏览器中选中文本后的背景色与前景色
p::first-line{color:red;}
p::first-letter{color:red;}
p::before{content:'我在内容的前面';color:red;}特点:1.第一个子元素2.行级元素3.内容通过content写入4.标签中找不到对应的标签
p::selection{background: red;color:#ff0;}

1.2 权重

当很多的规则被应用到某一个元素上时,权重是一个决定那种规则生效,或是优先级的过程。
权重等级与权值:行内样式(1000)>ID选择器(100)>类、属性选择器和伪类选择器(10)>元素和伪元素(1)>*(0)
权重计算口诀:从0开始,一个行内样式+1000,一个ID+100,一个属性选择器、class或者伪类+10,一个元素名或伪元素+1
CSS权重规则:
包含更高权重选择器的一条规则拥有更高的权重,如ID选择器(#idValue)的权重比属性选择器[id="idValue"]高
带有上下文关系的选择器比单纯的元素选择器权重要高。如section>articile比article高
与元素挨得近的规则生效
最后定义的规则会覆盖上面与之冲突的规则
无论多少个元素组成的选择器,都没有一个class选择器权重高,如div.hello比div高
通配符选择器权重是0,被继承的css属性也带有权重,权重也是0

1.3 示例:使用::after清除浮动

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		header{background: #abcdef;border: 5px solid green;}
		header::after{content:"";display: block;clear: both;}
		header>article{float:left;width:40%;height:30px;background:#f00;}
		header>aside{float: right;width: 40%;height: 50px;background: #ff0;}
	</style>
</head>
<body>
<header>
	<article></article>
	<aside></aside>
</header>

</body>
</html>

2.CSS边框和圆角

2.1CSS圆角

border-radius:复合属性 单位有px,em,rem,vw,百分比,不能只写数字
border-top-left-radius:左上角的弧度
border-top-right-radius右上角的弧度
border-bottom-right-radius右下角的弧度
border-bottom-left-radius左下角的弧度

border-radius:50px 设置全部
border-radius:50px(左上,右下) 25px(右上,左下)
border-radius:50px(左上) 25px(右上,左下) 20px(右下)
border-radius:50px(左上) 25px(右上) 20px(右下) 25px(左下)
border-radius:50%长款不等得椭圆,长款相等得正圆

圆角示例

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		div{
			position: relative;
			width: 500px;
			height: 300px;
			border: 1px solid black;
			-webkit-border-radius:50%;
			   -moz-border-radius:50%;
			    -ms-border-radius:50%;
			     -o-border-radius:50%;
			       border-radius: 50%;
			line-height: 300px;
			text-align: center;
			font-size:24px;
			font-weight: bold;
		}
		div::after,div::before{
			position: absolute;
			content:"";
			display: block;
			border: 1px solid black;
			-webkit-border-radius:50%;
			   -moz-border-radius:50%;
			    -ms-border-radius:50%;
			     -o-border-radius:50%;
			       border-radius: 50%;
		}
		div:before{
			width: 50px;
			height: 50px;
			bottom: -25px;
			right:25px;
		}
		div:after{
			width: 20px;
			height: 20px;
			bottom: -75px;
			right:0px;
		}
	</style>
</head>
<body>
<div>大家好,欢迎来到慕课网!</div>

</body>
</html>

2.2CSS阴影

box-shadow:可以设置一个或多个下拉阴影的框
语法:box-shadow:h-shadow v-shadow blur spread color inset;
h-shadow:水平方向偏移量。正值,右;负值,左。
v-shadow:垂直方向偏移量。正值:下;负值:上。
blur:模糊多少。不能有负值
spread:扩展多少。负值,会在h-shadow和v-shadow的基础上减去
color:阴影颜色
inset:内阴影。不写默认外阴影

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		div.wrapper{
			width: 800px;
			height:500px;
			margin: 0 auto;
			background: green;
			position: relative;
		}
		div.inner{
			position: absolute;
			width: 500px;
			height: 300px;
			background: red;
			margin: auto auto;
			left: 0;
			right: 0;
			top: 0;
			bottom: 0;
			box-shadow: 50px 30px 0 -10px yellow inset;
		}
	</style>
</head>
<body>
<div class="wrapper">
	<div class="inner">大家好,欢迎来到慕课网!</div>
</div>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
	<title>盒阴影</title>
	<style type="text/css">
		div{
			width: 300px;
			height: 200px;
			background-color: #f0f;
			margin:0 auto;
		}
		/*此处写代码*/
		div:hover{
			box-shadow: 10px 10px 0 0 #bbb;
		}
	</style>
</head>
<body>
<div></div>
</body>
</html>

2.3CSS边界

border-image也是复合属性:共有5个值。
source:指定要使用的图像,而不是有border-style属性设置的边框样式
slice:指定图像的边界向内偏移 number/百分比/fill默认
width:图像边界的宽度 number/百分比/auto
outset:指定在边框外部绘制border-image-area的量。length/number
repeat:stretch拉伸、repeat重复、round铺满、initial默认值、inherit继承

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
	<title>盒阴影</title>
	<style type="text/css">
		div{
			margin-top: 100px;
			width: 853ps;
			height: 392px;
			border: 50px solid;
			border-image-source: url("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1598622136420&di=9bfdca4a279d53f9a14d352e9e595778&imgtype=0&src=http%3A%2F%2Fbpic.588ku.com%2Felement_origin_min_pic%2F18%2F03%2F29%2Fd8c03a32882567cc19ebf381abc5d5de.jpg");
			border-image-slice: 50%;
			border-image-width: 50%;
			border-image-outset: 2;
			border-image-repeat: repeat;
		}	
	</style>
</head>
<body>
<div></div>
</body>
</html>

posted on 2020-08-27 19:50  singleSpace  阅读(155)  评论(0编辑  收藏  举报