什么是CSS
CSS 指 层叠样式表(Cascading Style sheets )
作用:
它是用来美化网页的
HTML代码是用来构建网页整体布局的,CSS则是用来美化网页的。两者缺一不可
基本语句
一条多多条的声明
多重声明
px
像素
颜色
英文单词 red,white,black
十六进制的颜色值: #ff0000
REG值
在线颜色选择器查看对应值
字体
font-family:"sans serif";
选择器
对指定的标签设置样式
对单个标签设置 id选择器
id选择器
可以为标有特定id的HTML元素指定特定的样式
id选择器
以 “#” 来定义
<head>
<style>
#p1{color:red;}
#p2{color:blue;}
#p3{color:green;}
</style>
</head>
<body>
<p id="p1">我是段落1</p>
<p id="p2">我是段落2</p>
<p id="p3">我是段落3</p>
</body>
对多个标签进行设置
类选择器
类选择器以一个点.
显示,只要有同一类名的class都会被选择
<head>
<style>
.p1{color:red}
.p2{color:green}
p{color:blue}
#p3{color:orange}
</style>
</head>
<body>
<p class="p1">我是class1段落</p>
<p class="p1">我是class1段落</p>
<p class="p2">我是class2段落</p>
<p class="p2">我是class3段落</p>
<p>我是一个什么都没有加载的段落</p>
<p id="p3">我是一个id为p3的段落</p>
</body>
并集选择
可以同时使用多个标签或多个选择器中间使用逗号,
分开
<head>
<style>
<!--把a标签和small标签都设置样式-->
a,small{
color:red;
fond-size:30px;
font-weight:bold;
}
</style>
</head>
<body>
<a href="">我是锚标签</a>
<small>我是small标签</small>
</body>
类选择器与id选择器并集
<body>
<style>
#p3,p2{color:blue;}
</style>
</body>
标签选择器
直接通过标签名来进行选择
<head>
<style>
p{color:blue}
</style>
</head>
<body>
<p>我是一个什么都没有加载的段落</p>
</body>
属性选择器
为指定属性的HTML元素设置样式,使用中括号[]
为带有title属性的所有元素设置样式
<head>
<style>
[type] {background:red;}
</style>
</head>
<body>
<input type="text" placeholder="请输入内容...">
</body>
对div
区域内外设置标签样式·
head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#box1{
height:300px;
width:200px;
background:red;
}
#box1 p{ <!--对div区域内标签样式进行设置-->
color:white;
}
p{color:blue;} <!--外部标签样式进行设置-->
</style>
</head>
<body>
<div id="box1">
<p>我是div区域内的段落</p>
</div>
<p>我是外部段落</p>
</body>
常见属性
字体属性
字体属性的功能是设置页面字体的显示样式
font-family
设置使用的字体
font-style
设置字体的样式,是否斜体
font-variant
设置字体的大小写
font-weight
设置字体的粗细
font-size
设置字体的大小
<head>
<style>
p{
font-family: Arial; /*设置字体样式*/
font-style:italic; /* italic 斜体,normal:正常显示*/
font-weight: 900; /*可以为bold, 和数字*/
font-size:25px; /*设置字体大小*/
}
</style>
</head>
<body>
<p>我是一个段落p</p>
</body>
颜色和背景属性
color
设置元素的颜色
background-color
设置颜色的背景色
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#p1{
height: 100px;
width: 100px;
background-color: orange;
}
</style>
</head>
<body>
<p id="p1">我是一个段落p</p>
</body>
background-image
设置元素的背景图案
<head>
<style>
#p1{
height: 100px;
width: 100px;
background-image: url(images/test1.jpg);
}
</style>
</head>
<body>
<p id="p1">我是一个段落p</p>
</body>
background-repeat
设置背景图案的重复方式
<head>
<style>
#p1{
height: 300px;
width: 300px;
background-image: url(images/Myxq.jpg);
/*background-repeat: 默认平铺*/
}
#p2{
height: 300px;
width: 300px;
background-image: url(images/Myxq.jpg);
background-repeat: no-repeat;
}
#p3{
height: 300px;
width: 300px;
background-image: url(images/Myxq.jpg);
background-repeat: repeat-x; /*沿x轴平铺*/
}
</style>
</head>
<body>
<p id="p1">我是一个段落p1</p>
<p id="p2">我是一个段落p2</p>
<p id="p3">我是一个段落p3</p>
</body>
background-position
设置背景图案的初始位置
<head>
<style>
#p2{
height: 300px;
width: 300px;
background-image: url(images/Myxq.jpg);
background-repeat: no-repeat;
background-position: 30px 40px; /*第一个参数x轴,第二个参数y轴*/
}
</style>
</head>
<body>
<p id="p2">我是一个段落p2</p>
</body>
background-size
设置背景大小
<head>
<style>
#p2{
height: 300px;
width: 300px;
background-image: url(images/test1.jpg);
background-repeat: no-repeat;
background-size:30px 40px; /*第一个参数宽度,第二个参数高度*/
}
</style>
</head>
<body>
<p id="p2">我是一个段落p2</p>
</body>
文本属性
text-align
设置文本的对齐方式
<head>
<style>
#p1{
height: 300px;
width: 300px;
background-image: url(images/Myxq.jpg);
/*background-repeat: 默认平铺*/
text-align: center; /*left左对齐,right右对齐,center中心对齐*/
}
</style>
</head>
<body>
<p id="p1">我是一个段落p1</p>
</body>
text-indent
设置文本的首行缩进
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#p1{
width: 200px;
height:64px;
background:orange;
}
#p2{
width: 200px;
height:64px;
background:orange;
text-indent: 30px;
}
</style>
</head>
<body>
<p id="p1">我是一个段落</p>
<p id="p2">我是一个带首行缩进的段落</p>
</body>
line-height
设置文本的行高
<head>
<style>
#p1{
width: 200px;
height:64px;
background:orange;
}
#p2{
width: 200px;
height:64px;
background:orange;
line-height: 64px;
}
</style>
</head>
<body>
<p id="p1">我是一个段落</p>
<p id="p2">我是一个带首行缩进的段落</p>
</body>
a:link
设置链接未访问的状态
a:visited
设置链接访问过的状态
a:hover
设置链接的鼠标激活状态
<head>
<style>
a:link{ /*没有访问的状态*/
color:orange;
}
a:hover{ /*设置鼠标放上去的样子*/
color:red;
}
a:visited{ /*访问过后的颜色*/
color:yellow;
}
</style>
</head>
<body>
<a href="test.html" target="_blank">跳转test标签</a>
</body>
边框属性
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#p1{
width:200px;
height:200px;
/*颜色 边框宽度 线型*/
border:#fa0eff 2px dashed; /*虚线*/
}
#p2{
width:200px;
height:200px;
/*颜色 边框宽度 线型*/
border:#fa0eff 2px solid ; /*实线*/
}
</style>
</head>
<body>
<p id="p1">我是一个段落</p>
<p id="p2">我是一个段落</p>
</body>
项目符号和编号属性
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#ul1{
list-style: none; /*circle*/
}
</style>
</head>
<body>
<ul id="ul1">
<li>我是第1个li</li>
<li>我是第2个li</li>
<li>我是第3个li</li>
</ul>
</body>
块元素与内联元素
内联元素:
不会自己独立占一行,就好像一个单词,一直往后排
特点:
宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom(margin-top/margin-bottom)都不可改变
内联元素设置宽和高是没有效果的
常见的内联元素:
<a>
,<big>
,<br>
,<em>
,<img>
,<input>
,<label>
,<select>
,<span>
,<textarea
>
<head>
<style>
span{ /*设置宽和高是没有效果的*/
background:orange;
width:100px;
height:100px;
}
</style>
</head>
<body>
<span>我是一个span1</span>
<span>我是一个span2</span>
</body>
块元素
自己单独占一行,就像一个段落
常见的块元素
<ul>
,<li>
,<form>
,<h1-h6>
,<hr>
,<p>
,<div>
块元素与内联元素相互转换
display:block
把内联元素转为块元素,显示为块级元素
display:inline
把块元素转为内联元素,显示为内联元素
display:inline-block
转为内联块元素,显示为内敛快元素,表现为同行显示并可修改宽高内外边距等属性
<head>
<style>
#span1{
background:orange;
width:100px;
height:100px;
display:block;
}
#span2{
background:red;
}
#span3{
background:red;
}
</style>
</head>
<body>
<span id="span1">我是一个span1</span>
<span id="span2">我是一个span2</span>
<span id="span3">我是一个span3</span>
</body>
浮动
解决: 块元素在一行显示的问题
两个块级元素都设置了宽度和高度,两个想要占一行,就使用浮动,来进行设置
未使用浮动前
<head>
<meta charset="UTF-8">
<title>浮动</title>
<style>
#box1{
width:100px;
height:100px;
background: red;
}
#box2{
width:100px;
height:100px;
background: blue;
}
</style>
</head>
<body>
<div id="box1">我是box1</div>
<div id="box2">我是box2</div>
</body>
使用浮动后, 两者都浮动才能在一行显示
<head>
<meta charset="UTF-8">
<title>浮动</title>
<style>
#box1{
width:100px;
height:100px;
background: red;
float: left; /*right*/
}
#box2{
width:100px;
height:100px;
background: blue;
float: left;
}
</style>
</head>
<body>
<div id="box1">我是box1</div>
<div id="box2">我是box2</div>
</body>
容器嵌套浮动
如果有嵌套,浮动相对的就是父元素,没有父元素,浮动相对的就是浏览器窗口
<head>
<style>
#out{
background:blue;
width:500px;
height:300px;
}
#box1{
width:100px;
height:100px;
background:red;
float:right;
}
#box2{
width:100px;
height:100px;
background:green;
float:right;
}
</style>
</head>
<body>
<div id="out">
<div id="box1">我是box1</div>
<div id="box2">我是box1</div>
</div>
</body>
左右浮动
<head>
<style>
#out{
background:blue;
width:500px;
height:300px;
}
#box1{
width:100px;
height:100px;
background:red;
float:right;
}
#box2{
width:100px;
height:100px;
background:green;
float:left;
}
</style>
</head>
<body>
<div id="out">
<div id="box1">我是box1</div>
<div id="box2">我是box2</div>
</div>
</body>
两边都为左浮动,如果宽度放不下,会被挤下去
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#out{
background:blue;
width:500px;
height:300px;
}
#box1{
width:401px;
height:100px;
background:red;
float:left;
}
#box2{
width:100px;
height:100px;
background:green;
float:left;
}
</style>
</head>
<body>
<div id="out">
<div id="box1">我是box1</div>
<div id="box2">我是box2</div>
</div>
</body>
默认情况下,子元素能够撑起父元素的高度
<head>
<style>
#out{
background:blue;
width:500px;
/*可以不设置高度,默认情况下是可以撑起父类的高度的*/
}
#box1{
width:100px;
height:100px;
background:red;
}
</style>
</head>
<body>
<div id="out">
<div id="box1">我是box1</div>
</div>
</body>
如果子元素设置了浮动,是没有办法撑起父元素的高度
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#out{
background:blue;
width:500px;
/*可以不设置高度,默认情况下是可以撑起父类的高度的*/
}
#box1{
width:100px;
height:100px;
background:red;
float:left; /*设置了浮动,浮动元素是不能撑起父类的高度的*/
}
</style>
</head>
<body>
<div id="out">
<div id="box1">我是box1</div>
</div>
</body>
如果子元素设置了浮动,父元素要么手动设置高度,要么清除浮动
<head>
<style>
#out{
background:blue;
width:500px;
/*可以不设置高度,默认情况下是可以撑起父类的高度的*/
overflow:hidden;
}
#box1{
width:100px;
height:100px;
background:red;
float:left; /*设置了浮动,浮动元素是不能撑起父类的高度的*/
}
</style>
</head>
<body>
<div id="out">
<div id="box1">我是box1</div>
</div>
</body>
块属性
块属性是设置元素之间的距离
margin
两个容器(标签)之间的距离成为margin,从边框开始往外的距离
padding
容器内部的边距成为padding,从边框开始往里的距离
margin-top
设置顶边距
margin-right
设置右边距
padding-top
设置顶端填充距
padding-right
设置右侧填充距
<head>
<style>
.box1,.box2{
width:100px;
height:100px;
border:red 2px solid;
float:left;
}
.box1{
margin-right:20px;/* 从后边框向外20个像素*/
}
.box2{
box-sizing:border-box; /*高度保持不变,若没有此语句,高度加下面语句里的20px*/
padding-top:20px; /*从上边框开始向内20个像素*/
}
</style>
</head>
<body>
<div class="box1">我是box1</div>
<div class="box2">我是box2</div>
</body>
层属性
一个容器可以嵌套另一个容器
<head>
<style>
.box1{
width:100px;
height:100px;
background:red;
}
</style>
</head>
<body>
<div class="box1">我是box1</div>
</body>
因为默认有些标签是有外边距的,解决办法
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{ /*选择所有标签*/
margin:0; /*四个方向的外边距设为0*/
padding:0; /*四个方向内边距设为0*/
}
.box1{
width:100px;
height:100px;
background:red;
}
</style>
</head>
<body>
<div class="box1">我是box1</div>
</body>
设置页面元素的定位方式
Relative
设置相对定位
Absolute
设置绝对定位
子绝对定位,父元素相对定位
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{ /*选择所有标签*/
margin:0; /*四个方向的外边距设为0*/
padding:0; /*四个方向内边距设为0*/
}
.box{
width:500px;
height:500px;
background:blue;
margin-left:300px;
margin-top:300px;
position:relative;
}
/*子绝对定位,父元素相对定位*/
.box1{
width:100px;
height:100px;
background:red;
position:absolute;
left:100px;
top:100px;
}
</style>
</head>
<body>
<div class="box">
<div class="box1">我是box1</div>
</div>
</body>