CSS
一、CSS简介
1.什么是css
重叠样式表
主要负责标签的样式 美化页面
一个网页分三大部分
结构层: 主要由html负责 负责页面的结构
表现层: 主要由css负责 页面的展示样式 美化页面
行为层: 主要由js负责 负责页面和用户的交互效果
css是单独的一种文件类型 后缀为.css的文件
2.css的三种引入方式
行间样式
给标签添加style属性 值就是你要设置的css样式
嵌入式
将css代码写在 head标签内的style标签内
外链式
在head标签内通过link标签的href属性引入外部css文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>css的使用</title>
<!-- 嵌入式 将css嵌入到html代码中 -->
<style >
div{
width: 100px;
height: 200px;
background-color: blue;
}
</style>
<!-- 通过link引入外部的css文件 -->
<!-- 使用外链式的时候,css里的内容一定要保存,不然也是出不来效果的 -->
<link rel="stylesheet" type="text/css" href="./css/2.css">
</head>
<body>
<!-- 行间样式 将css写在标签内的style属性 -->
<div style="width:100px;height:100px;background-color:green"></div>
</body>
</html>
css语法格式:
3.css选择器
用来选取要设置的html标签
标签选择器:通过标签名来查找元素
选择符: 标签名
影响范围最大 一般很少单独使用
id选择器:通过标签的id属性的值来获取元素
选择符: #
id属性的值不能重复 ,一个id值在一个html文件中只能出现一次
影响范围最小
class选择器:通过元素的class属性的值 来获取元素
选择符: .
一个标签的class属性可以有多个值,
一个class属性的值可以被多个标签去使用
影响范围介于id选择器和标签选择器之间
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>css基本的三种选择器</title>
<style type="text/css">
/*标签选择器*/
div{
height: 100px;
width: 100px;
background-color: gold;
}
/*id选择器器*/
.box{
height: 200px;
width:200px;
background-color: blue;
}
.box1{
border: 3px solid black;
}
/*class选择器*/
#item{
height: 300px;
width: 300px;
background-color: red;
}
</style>
</head>
<body>
<div>1</div>
<div class="box box1">2</div>
<div id="item">3</div>
<div class="box">4</div>
</body>
</html>
4.引入方式的优先级
嵌入式
外链式
行间样式
问题:当使用以上三种方式对一个标签设置样式时,思考到底哪个生效
谁靠近元素越近 谁生效
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>优先级</title>
<style type="text/css">
div{
width: 100px;
height: 100px;
background-color: yellow;
}
</style>
<link rel="stylesheet" type="text/css" href="./css/4.css">
</head>
<body>
<!--嵌入式 外链式 行间样式,优先级是根据调用的位置 -->
<div style="width: 300px;height: 300px; background-color: red"></div>
</body>
</html>
5.三种基本选择器的优先级
标签选择器<类选择器<id选择器
谁的影响范围大谁的优先级就小
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>选择器优先级</title>
<style type="text/css">
div{
width: 100px;
height: 100px;
background-color: yellow;
}
.box{
height: 200px;
width: 200px;
background-color: grey;
}
#item1{
width: 300px;
height: 300px;
background-color: red
}
</style>
</head>
<body>
<!-- 选择器优先级 -->
<!-- 标签选择器<class选择器<id选择器 -->
<div id="item1" class="box" ></div>
</body>
</html>
6. 关系选择器
后代选择器:选择符 空格
选择指定标签内的 所有符合要求的标签 忽略层级关系
子元素选择器:选择符>
只获取指定元素的直接子元素
并集选择器(组选择器/并列选择器):选择符 ,
一次性给多个元素设置相同的样式
伪类选择器::hover
当鼠标移入指定元素时,修改当前元素的样式
伪元素选择器:
After 在指定元素内部的后面插入指定的内容
Before 在指定元素的内部前面插入指定的内容
以上两个选择器要配合content使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>6.关系选择器</title>
<style type="text/css">
/*后代选择器
设置.wrap内的所有p标签的样式
*/
.wrap p{
color:red;
}
/*子选择器
设置.wrap的子元素p样式
*/
/*>头后面放置的是标签,不是class*/
.wrap>p{
color:blue;
}
/*并集选择器
要求:给 wrap的子元素span和最外面的span标签设置 字体颜色为粉色
*/
.wrap>span,span{
color:pink;
}
/*伪元素选择器 hover*/
.box{
width:100px;
height:100px;
/*使用英语单词表示*/
/*background-color:red; */
/*十六进制颜色表示*/
/*background-color:#ff0000; 红*/
/*background-color:#00ff00; 绿*/
/*background-color:#0000ff; 蓝*/
/*简写*/
/*background-color:#00f;*/
/*10进制表示*/
background-color:rgb(255,255,0);/*黄色*/
/*带透明度的*/
/*background-color:rgba(255,0,0,0.4);*/
}
.box{
width:100px;
height: 100px;
background-color: yellow;
}
.box:hover{
width: 300px;
height: 150px;
background-color: coral;
color:green;
}
/*
在css里面用单引号*/
/*去到页面可以去修改这个值,刷新就回来了,你可以去网站改价格*/
/*在box内部的前面插入一个字符‘看’*/
.box:before{
content: '看';
}
/*在box内部的后面插入一个字符‘哈哈’*/
.box:after{
content: '哈哈';
}
/*
span{
color: pink;
}*/
</style>
</head>
<body>
<div class="wrap">
<div class="inner">
<p> 我是inner里p</p>
</div>
<p>我是wrap内的p</p>
<span>我是wrap内的span</span>
</div>
<p>我是最外层的</p>
<span>我是最外面的sapn</span>
<div class="box">
我可以变成长方形
</div>
</body>
</html>
二、css常用的属性
1. css颜色的表示方式
A. 直接使用单词来表示:red ,grey
B. 十六进制表示方式
取值范围0-9 a-f
一共有六位十六进制数 来表示最终显示的颜色
每两个数为一组 分别代表 红 绿 蓝
C. 十进制数表示方式
由三个进制的数字 来表示最终的显示颜色
rgb里每个上面是0-255
rgb(红色,绿色,蓝色)
D. 带透明度的颜色表示
rgba(红色,绿色,蓝色,透明度)
0-1之间的小数 1不透明 0是全透明,就看不到了
2. 背景属性
background-color:背景颜色
background-image:设置背景图像
background-position:定位背景图片
background-repeat:设置是否及如何重复背景图像
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>background</title>
<style>
.box{
width:400px;
height: 400px;
border:1px solid red;
/*background-image:url(./img/QQ图片20190813143300.jpg);引入图片
background-repeat:no-repeat; 不重复
background-position:91px 91px; 图片位置,这个点是位置的左上角的点*/
/*简写*/
background:url(./img/cts-190813141741301.gif) no-repeat 100px 100px;
/*图片大小必须单独设置,不能和上面去简写
设置背景图片和元素一样的大小*/
background-size:100% 100%;
}
.item{
width:50px;
height:50px;
border:1px solid red;
/*这里需要图片向左移,这里的坐标轴,是上面和左面是负的*/
background:url(./img/0.jpg) no-repeat -4px -104px;
}
.item:hover{
background-position:-345px -273px;
}
</style>
</head>
<body>
<div class="box"></div>
<div class="item"></div>
</body>
</html>
3. 字体属性
color 颜色
font-size 大小
浏览器的默认字体大小是16px
谷歌浏览器最小只能设置到12px
font-weight 是否加粗
bold/800
font-family 字体类型
如果用户电脑没有指定的字体会使用默认字体显示
font-family:宋体,楷体; 如果第一个字体不存在会去使用第二个字体
font-family: ‘Angsana New’; 如果字体的名字中有空格需要加引号
font-style 是否倾斜
nomal 不倾斜
italic 倾斜
4. 边框属性
border-top:边框的上面
border-left:左
border-right:右
border-bottom:下
边框的颜色 边框的样式 边框粗细
border:1px solid red;
边框样式:solid实线 dotted点状线 dashed虚线
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>字体</title>
<style>
/*默认字体大小 16px*/
.box{
font-size:50px;
font-weight:bold;
/*注意 你所使用的字体 用户的电脑上要有 如果没有会以默认字体显示
如果字体是由多个单词组成要加引号
*/
font-family:宋体,楷体;
font-family: 'Angsana New';
font-style:italic;
}
em{
/*这里用到font-style:normal;就可以使em本来有的特点,不见了*/
font-style: normal;
}
.item1{
width:200px;
height:200px;
/*简写 设置四边边框的粗细 设置边框的样式 设置边框的颜色*/
/*border:1px solid red;*/
border-top:5px solid red;
border-bottom:5px dotted pink;
border-right:5px dashed #0f0;
border-left:5px groove blue;
}
</style>
</head>
<body>
<div class="box">
大海,全是水
</div>
<em>我是斜体</em>
<div class="item1"></div>
</body>
</html>
5. 内间距
设置元素边界距离内部内容之间的间距
会改变元素的实际大小
padding-top:20px;
padding-left:20px;
padding-right:20px;
padding-bottom:20px;
简写
如果只给一个值代表四边的间距
如果是四个值 从上开始 依次顺时针旋转 每个值代表一个边
如果三个值 第一个值是上 第二个值是左右 第三个值是下
如果是两个值 第一个值是上下 第二个值是左右的
padding:50px;
padding:10px 20px 30px 40px;
padding:10px 20px 30px;
padding:20px 50px;
6. 外间距
设置元素距离四周外部元素之间的间距
margin:
Margin的使用和padding是一样的可以单独指定方向设置
还可以不指定方向一次设置多个值
一般情况下 我们用margin来去实现块元素的 水平居中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>内间距</title>
<style>
.box{
width:100px;
height:100px;
background:#0f0;
/*padding-top:20px;
padding-left:20px;
padding-right:20px;
padding-bottom:20px;*/
/*简写
如果只给一个值代表四边的间距
如果是四个值 从上开始 依次顺时针旋转 每个值代表一个边
如果三个值 第一个值是上 第二个之是左右 第三个值是下
如果是两个值 第一个值是上下 第二个值是左右的
*/
/*padding:50px;*/
/*padding:10px 20px 30px 40px;*/
/*padding:10px 20px 30px;*/
padding:20px 50px;
}
/*外间距 外补白 margin*/
.item2,.item3{
width:200px;
height:200px;
}
.item2{
border:1px solid red;
margin-top:20px;
margin-bottom:20px;
margin-left:20px;
margin-right:20px;
/**/
}
.item3{
border:1px solid blue;
}
/*设置item4 水平居中*/
.item4{
width:200px;
height:200px;
border:1px solid red;
margin:0 auto;/*上下是0,左右居中*/
}
/*margin 为负值 主要应用于边框的合并*/
.item5,.item6{
width:200px;
height:200px;
border:5px solid red;
}
.item6{
margin-top:-5px;
}
</style>
</head>
<body>
<div class="box">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
<div class="item5">5</div>
<div class="item6">6</div>
</body>
</html>
7. 盒子模型
使用现实中的盒子来描述页面中的元素的 属性
盒子的实际宽度=width+左border+右border+左padding+右padding
盒子的实际高度=height+上border+下border+上padding+下padding
box-sizing:border-box 让盒子大小=css样式的实际大小
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>盒子模型</title>
<style>
/* *表示全局声明div的边框外部和元素距离为0。
*是通配符*/
*{margin:0;padding:0;}
.box1{
width:100px;
height:100px;
background:yellow;
}
.box2{
width:100px;
height:100px;
background:yellow;
border:20px solid #000;
/*让盒子的实际大小=css设置的实际大小*/
/*box-sizing: border-box;*/
}
.box3{
width:100px;
height:100px;
background:yellow;
border:20px solid #000;
padding:20px;
box-sizing: border-box;
}
.box4{
/*
要求元素大小为100*100
边框20
padding 20
*/
width:20px;
height:20px;
background:yellow;
border:20px solid #000;
padding:20px;
}
/*内容变成了0*0,外层是padding和border*/
.box5{
width:60px;
height:60px;
background:yellow;
border:20px solid #000;
padding:20px;
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
<div class="box5">5</div>
</body>
</html>