css的引入方式
四种 行内式 嵌入式 链接式 导入式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--方式2嵌入式:div为选择的标签,下面为属性名和属性值的键值对-->
<style type="text/css">
div{
color: red;
background-color: gray;
}
</style>
<!--css引入方式3(推荐)链接式:直接引用css文件,href为css文件名-->
<link type="text/css" rel="stylesheet" href="css.css">
<!--css引入方式4导入式:直接引用css文件-->
<style type="text/css">
@import"css.css"; 此处要注意.css文件的路径
</style>
<!--导入式会在整个网页装载完后再装载CSS文件,-->
<!--因此如果网页比较大则会出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。-->
<!--使用链接式会在网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果。-->
</head>
<body>
<!--css引入方式1行内式:直接写在标签内,键值对用分号隔开-->
<p style="color: pink;background-color:cadetblue;">hello p</p>
<!--css引入方式2嵌入式:在head中写style-->
<div> hello div</div>
</body>
</html>
css选择器
选择器指明了{}中样式的作用对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--星号通用选择器,将所有标签统一操作-->
<!--标签选择器,匹配所有使用p标签、div标签的元素-->
<!--id选择器,匹配所有id属性等于p1的元素-->
<!--class选择器,匹配所有class属性中包含c1的元素-->
<style>
*{
font-size: 45px;
}
p{
background-color: yellow;
}
div{
color: darkgreen;
}
#p1{
font-style: italic; 倾斜
}
.c1{
background-color: paleturquoise;
}
</style>
<!--多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔-->
<!--后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔-->
<!--子元素选择器,匹配所有E元素的子元素F,E>F -->
<!--毗邻元素选择器,匹配所有紧随E元素之后的同级元素F,E + F -->
<style>
#p,#p1,.c6{
color: saddlebrown;
}
#outer .c1 .c3{
color: yellow;
}
#outer>.c1>.c3{
font-size: 70px;
}
#outer+.t{
color: red
}
</style>
<!--嵌套规则:-->
<!--块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,只能包含其它内联元素。-->
<!--有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt-->
<!--块级元素与块级元素并列、内联元素与内联元素并列。-->
<!--属性选择器 可以不加E-->
<!--E[att]匹配所有具有att属性的E元素,不考虑值。p[title] -->
<!--E[att=val]匹配所有att属性等于“val”的E元素div[class=”error”]-->
<!--E[att~=val]匹配所有att属性具有一个值等于“val”的E元素td[class~=”name”]-->
<!--E[attr^=val]匹配属性值以指定值开头的每个元素div[class^="test"]-->
<!--E[attr$=val]匹配属性值以指定值结尾的每个元素div[class$="test"] -->
<!--E[attr*=val]匹配属性值中包含指定值的每个元素div[class*="test"]-->
<style>
[id]{
color: yellow;
}
[al]{
color: red
}
[class="div1"]{
color: yellow;
}
[class~="div1"]{
color: yellow;
}
[class^="d"]{
color: yellow;
}
[class$="1"]{
color: yellow;
}
[class*="d"]{
background-color:yellow;
}
</style>
<!--伪类选择器 : 伪类指的是标签的不同状态:-->
<!--a:link(没有接触过的链接)a:hover(鼠标放在链接上的状态)-->
<!--a:visited(访问过的链接)a:active(在链接上按下鼠标时的状态)-->
<!--:before p:before 在每个p元素之前插入内容-->
<!--:after p:after 在每个p元素之后插入内容-->
<style>
a:link{
color: red;
}
a:hover{
color: yellow;
}
a:visited{
color: purple;
}
a:active{
color: green;
}
#pk:after{
content: "pp";
color: green;
}
#pk:before{
content: "pp";
}
</style>
</head>
<body>
<p id="p"> p & id p </p>
<div id="outer"> div & id outer
<p id="p1"> div & id p1</p>
<p class="c1">div & class c1</p>
<div class="c1">
<p class="c3">div & div & class c3</p>
</div>
<div class="t">
div & div & class t
</div>
</div>
<p class="t">p & class t</p>
<p>p</p>
<div class="c6">div & class c6</div>
<div class="div1 div2" al="zz">div1</div>
<p class="div1">ppp</p>
<div class="div2">div2</div>
<div class="div3">div3</div>
<div id="id">iddd</div>
<a href="http://www.baidu.com">百度</a>
<p id="pk">hello p</p>
</body>
</html>
css优先级和继承
CSS优先级,指CSS样式在浏览器中被解析的先后顺序。样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:
- 内联样式表的权值最高 style=" "
- 2 统计选择符中的ID属性个数。 #id
- 3 统计选择符中的CLASS属性个数。 .class
- 4 统计选择符中的HTML标签名个数。 p
css属性
颜色属性 字体属性 背景属性 文本属性 边框属性 列表属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--颜色属性rgba(255,0,0,1);最后一个值代表透明度-->
<!--字体属性font-weight;粗细-->
<!--背景属性background-image 插入图片,默认repeat background-size是图片大小 可以直接用background设定,里面的100 100是位置-->
<!--margin,从最左上开始显示背景,不留间隙-->
<style>
*{
margin: 0;
}
p{
color:rgb(269,0,0);
color:rgba(255,0,0,0.5);
color:#ffee33;
color:green;
font-weight: 100;
font-family: "Times New Roman";
font-style: italic;
font-size: 45px;
}
#div1{
height:300px;
width:300px;
background-color: rebeccapurple;
background-image: url("12.jpg");
background-repeat: no-repeat;
background-size: 100px 100px;
background-position: left center;
background: url("12.jpg") no-repeat 100px 100px rebeccapurple;
}
</style>
<!--文本属性-->
<!--text-align字体居中line-height 设置行高 letter-spacing 字母间的像素 text-transform 标题形式-->
<!--边框属性 word-spacing: 0px 有一段默认的距离,要想紧挨,可以设置成为负数-5px。边框风格颜色和宽度 -->
<!--列表属性 upper-alpha 标用大写字母 decimal-leading-zero 01.02.03 circle 圈 none 无特殊符号 disc 实心点-->
<style>
#ss{
background-color: #cc3399;
text-align: center;
line-height: 100px;
letter-spacing: 5px;
word-spacing: 5px;
text-transform: capitalize;
}
.im{
border: solid 3px green;
word-spacing: 0px;
border-style: solid;
border-color: green;
border-width: 2px;
}
ul{
list-style:none;
}
</style>
</head>
<body>
<p>pp</p>
<div id="div1"></div>
<p id="ss">hello p sj lf dk lks jl; ks daf</p>
<div class="im">
<img src="12.jpg">
<img src="1.jpg">
</div>
<ul>
<li>111</li>
<li>111</li>
<li>111</li>
</ul>
</body>
</html>
dispaly属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--display:none 不显示 block显示为块级标签inline显示内联标签inline-block行内显示块-->
<style>
img{
display:none;
display: block;
}
#div1{
height: 100px;
background-color: rebeccapurple;
display: inline;
}
span{
display: inline-block;
height: 100px;
width: 100px;
background-color: red;
}
#outer{
word-spacing: -5px;
}
</style>
</head>
<body>
<!--<img src="12.jpg">22-->
<!--<div id="div1">1</div>111-->
<div id="outer">
<span>span1</span>
<span>span2</span>
</div>
</body>
</html>
内边距和外边距
inline元素的margin和padding属性。水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
常见的块级元素有 div、form、table、p、pre、h1~h6、dl、ol、ul 等。
常见的内联元素有span、a、strong、em、label、input、select、textarea、img、br等
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--内边距padding(通过加宽自己达到目的)和外边距margin body有默认的边距,也可以自己设置-->
<style>
body{
margin: 0px;
padding:2px;
border:solid green 3px;
}
.div1{
border: dashed 2px black;
height: 200px;
width: 30%;
background-color: rebeccapurple;
}
.div2{
margin: 10px;
border: dashed 2px black;
height: 200px;
width:20%;
background-color: green;
}
.div3{
border: dashed 2px black;
height: 50px;
width: 20%;
background-color:red;
}
</style>
</head>
<body>
<div class="div1">div1</div>
<div class="div2">div2</div>
<div class="div3">div3</div>
</body>
</html>
练习
300px300px的盒子装着100px100px的盒子,分别通过margin和padding设置将小盒子 移到大盒子的中间
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body{
margin: 0px;
}
.div1{
background-color: aqua;
width: 300px;
height: 300px;
border: 1px solid green;
padding-left: 200px;
padding-top: 200px;
}
.div2{
background-color: blueviolet;
width: 100px;
height: 100px;
<!--第二种方法:margin: 100px;-->
}
</style>
</head>
<body>
<div class="div1">
<div class="div2"></div>
</div>
</body>
</html>
文档流,是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。
脱离文档流,是将元素从普通的布局排版中拿走,在定位的时候,会当做脱离文档流的元素不存在而进行定位。
只有绝对定位position(完全脱离)的absolute和fixed和浮动float(非完全脱离)才会脱离文档流。
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
当初float被设计的时候就是用来完成文本环绕的效果,所以文本不会被挡住,这是float的特性,即float是一种不彻底的脱离文档流方式。
清除浮动:clear
none : 默认值。允许两边都可以有浮动对象
left : 不允许左边有浮动对象
right : 不允许右边有浮动对象
both : 不允许有浮动对象
但是需要注意的是:clear属性只会对自身起作用,而不会影响其他元素。如果一个元素的右侧有一浮动对象,而这个元素设置了不允许右边有浮动对象,即clear:right,则这个元素会自动下移一格,达到本元素右边没有浮动对象的目的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--float:left标签 若上一个标签无float,则有float的放到到它下面,若有,则到其右后。-->
<!--right向右飘,后面无float的顶上来-->
<!--clear表示如果元素特定位置有浮动,则自己换到下一行-->
<style>
.div1{
background: rebeccapurple;
width: 100px;
height: 100px;
float: left;
}
.div2{
background: green;
width: 100px;
height: 100px;
float:right;
}
.div3{
background: yellow;
width: 200px;
height: 200px;
clear: both;
}
.outer{
background-color: rebeccapurple;
<!--overflow: hidden;-->
}
.menu1{
width: 100px;
height: 50px;
color: gold;
float: left;
background-color: brown;
}
.menu2{
width: 100px;
height: 50px;
color: gold;
float: right;
background-color: #C0C0C0;
}
.bottom{
text-align: center;
background-color: #cc3399;
}
.clear{
clear: both;
}
</style>
</head>
<body>
<!--<div class="div1">111</div>-->
<!--<div class="div2">222</div>-->
<!--<div class="div3">333</div>-->
<!--div中两个div都浮起来,所以里面没东西,如果不加clear,下一个div会顶上。或者使用outer里的overflow: hidden;-->
<div class="outer">
<div class="menu1">菜单一</div>
<div class="menu2">菜单二</div>
<div class="clear"></div>
</div>
<div class="bottom">底部</div>
</body>
</html>
position
static 无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。
fixed对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--fixed固定位置在某个地方-->
<style>
.div1{
height: 1500px;
background-color: #cc3399;
}
.div2{
height: 1500px;
background-color: aquamarine;
}
a{
position: fixed;
bottom: 200px;
right: 200px;
}
</style>
</head>
<body>
<!--position脱离文档流,所以a标签在哪里都可以-->
<div class="div1">
<a>返回顶部</a>
</div>
<div class="div2"></div>
</body>
</html>
relative
相对定位。相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。
absolute
绝对定位。设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即html元素)。
如果父级设置了position属性为非static,那么子元素就会以父级的左上角为原始点进行定位。对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.div1{
background: rebeccapurple;
width: 100px;
height: 100px;
}
.div2{
background: green;
width: 100px;
height: 100px;
position: absolute;
top: 100px;
left: 100px;
<!--absolute 若body和box2没有设置position为非static,则相对于html元素定位,如果设置了则以父亲节点为原点移动-->
<!--position: relative;-->
}
.div3{
background: yellow;
width: 200px;
height: 200px;
}
.box2{
position: absolute;
}
</style>
</head>
<body>
<div class="div1">div1</div>
<div class="box2">
<div class="div2">div2</div>
</div>
<div class="div3">div3</div>
</body>
</html>