选择器
属性选择器
其特点是通过属性来选择元素,具体有以下 5 种形式:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
div{
width: 300px;
height: 100px;
border: 1px solid red;
}
/*div带有class属性的都选中*/
/*div[class]{
background: blue;
}*/
/*div带有class属性 ,并且选中值为 div1
属性值完全等于div1*/
/*div[class=div1]{
background: yellow;
}*/
/*div带有class属性 ,并且选中值包含div
div[class*=div:属性值里包含div 字符并且在 “任意”位置*/
/*div[class*=div]{
background: salmon;
}*/
/*div带有class属性 ,并且选中值以 c结尾
div[class$=c]:表示的属性值里包含div 字符并且在“结束”位置;*/
/*div[class$=c]{
background: #FF0000;
}*/
/*div带有class属性 ,并且选中值以d开头的
div[class^=d]:表示的属性值里包含div 字符并且在“开头”位置;*/
div[class^=d]{
background: blueviolet;
}
</style>
</head>
<body>
<div class="div1"></div>
<div class="div2c"></div>
<div class="div3"></div>
</body>
</html>
伪类选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
div{
width: 300px;
height: 100px;
border: 1px solid red;
}
/*nth-child(n):选中第n个元素*/
div:nth-child(3){
background: gold;
}
/*nth-last-child(n):选中倒数第n个元素*/
div:nth-last-child(2){
background: firebrick;
}
/*first-child:选中第一个元素*/
div:first-child{
background: darkcyan;
}
/*last-child:选中最后一个元素*/
div:last-child{
background: hotpink;
}
/*选中的是奇数的div的第一种方法*/
div:nth-child(odd){
background: tomato;
}
/*选中的是奇数的div的第二种方法*/
div:nth-child(2n+1){
background: tomato;
}
/*选中的是奇数的div的第三种方法*/
div:nth-child(2n-1){
background: tomato;
}
/*选中的是偶数的div的第一种方法*/
div:nth-child(even){
background: thistle;
}
/*选中的是偶数的div的第二种方法*/
div:nth-child(2n){
background: thistle;
}
/*选中的是前二个div*/
div:nth-child(-1n+2){
background: black;
}
/*选中的是后两个*/
div:nth-last-child(-1n+2){
background: teals;
}
/*选中的是3的倍数的div*/
div:nth-child(3n){
background: orange;
}
</style>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
</html>
div:empty 选中没有任何子节点的div元素,没有任何的子元素,包括空格.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
div{
width: 300px;
height: 100px;
border: 1px solid red;
margin: 20px;
}
/* 如果div是空的则会被选中*/
div:empty{
background: darkblue;
}
</style>
</head>
<body>
<div></div>
<div>
<span>div</span>
</div>
</body>
</html>
目标伪类
target 结合锚点进行使用,处于当前锚点的元素会被选中;
举例:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
.nav{
position: fixed;
left:0;
top:100px;
}
li a{
text-decoration: none;
}
.content{
width: 800px;
margin: 0 auto;
}
h2:target{
color: red;
}
</style>
</head>
<body>
<ul class="nav">
<li><a href="#t1">CSS (层叠样式表)</a></li>
<li><a href="#t2">实例</a></li>
<li><a href="#t3">发展历史</a></li>
<li><a href="#t4">使用方法</a></li>
<li><a href="#t5">布局特点</a></li>
</ul>
<div class="content">
<h2 id="t1">CSS (层叠样式表)</h2>
<p>层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。</p>
<p>CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。</p>
<h2 id="t2">实例</h2>
<p>如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器。[1] d 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 "#" 来定义。以下的样式规则应用于元素属性 id="para1":</p>
<p>class 选择器用于描述一组元素的样式,class选择器有别于id选择器,class可以在多个元素中使用。class 选择器在HTML中以class属性表示, 在 CSS 中,类选择器以一个点"."号显示:在以下的例子中,所有拥有 center 类的 HTML 元素均为居中。</p>
<h2 id="t3">发展历史</h2>
<p>作为一项W3C推荐,CSS1发布于 1996年12月17 日。1999 年1月11日,此推荐被重新修订。</p>
<p>作为一项 W3C 推荐,CSS2发布于 1999年1月11日。CSS2添加了对媒介(打印机和听觉设备)和可下载字体的支持。</p>
<h2 id="t4">使用方法</h2>
<p>有三种方法可以在站点网页上使用样式表:外联式Linking(也叫外部样式):将网页链接到外部样式表。嵌入式Embedding(也叫内页样式):在网页上创建嵌入的样式表。内联式Inline(也叫行内样式):应用内嵌样式到各个网页元素。其中,优先级:内联式 > 嵌入式 > 外联式</p>
<p>当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观。</p>
<p>当特殊的样式需要应用到个别元素时,就可以使用内联样式。 使用内联样式的方法是在相关的标签中使用样式属性。样式属性可以包含任何 CSS 属性。以下实例显示出如何改变段落的颜色和左外边距。</p>
<h2 id="t5">布局特点</h2>
<p>对于蜘蛛在爬行一个网站的页面时,若是有太多的垃圾代码,会使搜索蜘蛛对其产生不友好、不信任感,同时蜘蛛的爬行速度也会因此而减缓,对于网站SEO而言,可谓一大忌。就如传统的用table页面,对此我们就需要对网站进行代码优化,而这便需要动用CSS+div了,下面便来谈谈使用CSS+div进行代码优化的一些益处。</p>
<p>网站使用DIV+CSS布局使代码很是精简,相信大多朋友也都略有所闻,css文件可以在网站的任意一个页面进行调用,而若是使用table表格修改部分页面却是显得很麻烦。要是一个门户网站的话,需手动改很多页面,而且看着那些表格也会感觉很乱也很浪费时间,但是使用css+div布局只需修改css文件中的一个代码即可。</p>
<p>采用div-css布局的网站对于搜索引擎很是友好,因此其避免了Table嵌套层次过多而无法被搜索引擎抓取的问题,而且简洁、结构化的代码更加有利于突出重点和适合搜索引擎抓取。</p>
</div>
</body>
</html>
伪元素选择器
E::before、E::after是一个行内元素,需要转换成块元素
E:after、E:before 会被自动识别为E::after、E::before,按伪元素来对待,这样做的目的是用来做兼容处理。
E::first-letter 文本的第一个字母或字
E::first-line 文本第一行
颜色
1:opacity 设置透明度,只能针对整个盒子设置透明度
2:子盒子会继承父盒子的透明
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
/*c2中的透明
.out{
width: 400px;
height: 400px;
border: 1px solid red;
margin: 100px auto;
background-color: gold;
opacity: 0.2;
}
.in{
width: 200px;
height: 200px;
background-color: firebrick;
opacity: 1;
margin: 100px auto;
}*/
/*完全透明*/
/*.out{
width: 400px;
height: 400px;
border: 1px solid red;
margin: 100px auto;
background: transparent;
}
.in{
width: 200px;
height: 200px;
background: green;
margin: 100px auto;
}*/
/*Red、Green、Blue、Alpha(透明度)即rgba
/*.out{
width: 400px;
height: 400px;
border: 1px solid red;
background-color: rgba(244,34,56,0.3);
margin: 100px auto;
}
.in{
width: 200px;
height: 200px;
margin: 100px auto;
background-color: bisque;
}*/
/*H 色调 取值范围 0~360,0/360 表示红色、120 表示绿色、240 表示蓝色
S 饱和度 取值范围 0%~100%
L 亮度 取值范围 0%~100%
A 透明度 取值范围 0~1*/
.out{
width: 400px;
height: 400px;
background-color: hsla(45,34%,50%,0.2);
margin: 100px auto;
border: 1px solid red;
}
.in{
width: 200px;
height: 200px;
background-color: gold;
margin: 100px auto;
}
</style>
</head>
<body>
<div class="out">
<div class="in"></div>
</div>
</body>
</html>
文本
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
/*文本阴影*/
/*p{
font-size: 300px;
font-family: "微软雅黑";
font-weight: 400;
text-align: center;
/*文字阴影:text-shadow: 水平位移 垂直位移 模糊程度 阴影颜色; */
text-shadow: 20px 10px 2px gold;
}*/
/*凹凸文字效果*/
body{
background-color: #666666;
}
p{
font-size: 100px;
font-family: "微软雅黑";
font-weight: 400;
text-align: center;
margin: auto;
color: #666666;
}
.ao{
text-shadow: -1px -1px 1px #000,1px 1px 1px #FFFFFF;
}
.tu{
text-shadow: -1px -1px 1px #FFFFFF,1px 1px 1px #000;
}
</style>
</head>
<body>
<p class="ao">你好css3</p>
<p class="tu">你好css3</p>
</body>
</html>
盒模型
box-sizing 有两个值:content-box border-box
content-box:对象的实际宽度等于设置的width 值和border、padding 之和
border-box: 对象的实际宽度就等于设置的width 值,即使定义有border 和padding 也不会改变对象的实际宽度
私有化前缀
浏览器私有化前缀:
-webkit-: 谷歌 苹果浏览器
-moz-:火狐浏览器
-ms-:ie浏览器
-o-:欧朋浏览器