文章目录
CSS学习笔记
CSS概念
css层叠样式表(级联样式表)
文件后缀用.css结尾
它一般用于文件样式的定义
唯一目的 让网页具有美观一致的页面
语法
CSS部分由两部分组成:即选择器和一条或者多条的声明(样式)
每条声明由一个属性和一个值组成
<!--属性是您希望设置的样式属性。每一个属性有一个值。两者之间使用冒号隔开-->
<style>
h1{
color:blue;
front-size:12px;
}
</style>
注意:此方案属于:在head标签中使用style标签定义h1等标签的属性。
内联样式
要使用内联样式,你需要在相关标签内使用样式属性。Style属性可以包含任何CSS属性
内部样式示例
<p style="color: red;font-size: 60px;">我是内联样式的方案</p>
注意:此方案不利于维护,故不推荐使用
内联样式示例
<style>
p{
color:red;
font-size: 30px;
}
</style><!--head标签中-->
外部样式示例(推荐使用)
当样式需要多个应用于多个页面的时候,外部样式将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用link标签连接到样式表。link标签在文档的头部
<link rel="stylesheet" type></link>
选择器
全局选择器
可以与任何元素匹配,优先级最低,一般做样式初始化
示例
*{
font-size: 30px;
color:red;
}
元素选择器
HTML文档中的元素,p、b、div、a、img、body等
标签选择器,选择的是页面上所有同种类的标签,经常描述“共性”,无法描述某一个元素的“个性”
示例
p{
font-size: 14px;
}
注意
- 所有的标签都可以是选择器
- 无论这个标签藏得有多深都可以被选择上
- 选择的是所有,而不是一个
类选择器
规定用.定义,针对你想要的标签使用
优点:灵活
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.content{
color:red;
}
</style>
</head>
<body>
<p>大家好</p>
<p>我很好</p>
<p class="content">我emo了</p>
</body>
</html>
注意
-
类选择器可以被多标签使用
-
类名不能以数字开头
-
同一个标签可以使用多个选择器。中间要用空格隔开
ID选择器
针对某一个特定的标签来使用,只能使用一次。
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#text{
color:red;
font-size: 30px;
}
</style>
</head>
<body>
<p id="text">hello</p>
</body>
</html>
注意
- ID是唯一的
- ID不能以数字作为开头
合并选择器
作用:提取共同样式,减少重复代码
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p,h3{
font-size: 30px;
color: red;
}
</style>
</head>
<body>
<p>我是一个P标签</p>
<h3>我是一个标题标签</h3>
</body>
</html>
选择器的优先级
在CSS中权重用数字来衡量
选择器名称 | 权重 |
---|---|
元素选择器 | 1 |
class选择器 | 10 |
id选择器 | 100 |
内联选择器 | 1000 |
行内样式1000 > ID选择器100 > 类选择器10 > 元素选择器1
注意
如果优先级相同,后编译的属性会覆盖前面的属性
字体属性
CSS字体属性定义字体,颜色、大小、加粗、字体样式
color
p{
color: #ff0000;
color: rgb(0, 0, 0);
/*最后一个属性表示透明度*/
color: rgba(0, 0, 0, 1);
color: rgb(255, 255, 255);
}
font-size
h1{
font-size: 40px;
}
h2{
font-size: 30px;
}
p{
font-size: 20px;
}
注意:有些浏览器能接收到的最小字体是12px
font-weight
设置文本粗细
值 | 描述 |
---|---|
bold | 定义粗体字符 |
bolder | 定义更粗的字符 |
lighter | 定义更细的字符 |
100~900 | 定义从细到粗的字符,默认400,bold:700 |
font-style
指定字体样式
值 | 描述 |
---|---|
normal | 默认值 |
italic | 定义斜体字 |
font-family
font-family属性指定一个元素的字体
注意:
- 每个值用逗号隔开
- 如果字体名称包含空格,它必须加上引号
背景属性
背景属性主要有以下几种
属性 | 描述 |
---|---|
background-color | 设置背景颜色 |
background-image | 设置背景图片 |
background-position | 设置背景显示位置 |
background-repeat | 设置背景图片如何填充 |
background-size | 设置背景大小属性 |
background-color
该属性用来设置背景颜色
.books1{
width:400px;
height: 400px;
background-color: red;
}
background-image
设置元素的背景图像
示例
.box1{
width:400px;
height: 400px;
background-color: red;
}
/*图片在显示的时候只显示左上角开始往右下的一部分*/
.box2{
width: 400px;
height: 400px;
background-image: url("hh.jpg");
}
background-repeat
该属性设置如何平铺背景图像
值 | 说明 |
---|---|
repeat | 默认值 |
repeat-x | 只向水平方向平铺 |
repeat-y | 只向竖直方向平铺 |
no-repeat | 不平铺 |
示例
.box2{
width: 2000px;
height: 400px;
background-image: url("hh.jpg");
background-repeat: repeat-x;
}
background-size
该属性设置图片的大小
值 | 说明 |
---|---|
length | 设置背景图片的宽度和高度,第一个值宽度,第二个值高度,如果只设置一个,另一个为auto |
percentage | 计算相对位置区域的百分比,第一个值宽度,第二个值高度,如果只设置一个,另一个为auto |
cover | 保持图片纵横比并将图片缩放成完全覆盖背景区域的最小大小 |
contain | 保持图片纵横比并将图片缩放成适合背景定位区域的最小大小 |
示例
.box3{
width: 400px;
height: 500px;
background-image: url(hh.jpg);
/* 图片没有完全填充容器,故图片被上下压缩了 */
/* background-size: 400px 400px; */
/* background-size: 50% 50%; */
/* 完全填充容器且使得图片不变形 */
background-size: cover;
}
background-position
该属性设置背景图像的起始位置,其默认值是:0% 0%
值 | 说明 |
---|---|
left top | 左上角 |
left center | 左中 |
left bottom | 左下 |
right top | 右上角 |
right center | 右中 |
right bottom | 右下 |
center top | 中上 |
center center | 中中 |
center bottom | 中下 |
x% y% | 百分比形式确定任意位置,左上角为起点 |
xpos ypos | 单位为像素 |
示例
background-position: center center;
文本属性
text-align
指定元素的水平对齐方式
值 | 描述 |
---|---|
left | 文本居左排列,默认值 |
right | 把文本排列到右边 |
center | 把文本排列到中间 |
text-decoration
text-decoration属性规定添加到文本的修饰,下划线、上划线、删除线等
值 | 描述 |
---|---|
underline | 定义下划线 |
overline | 定义上划线 |
line-through | 定义删除线 |
text-transform
控制文本的大小写
值 | 描述 |
---|---|
capitalize | 每个单词首字母大写 |
uppercase | 单词的所有字母大写 |
lowercase | 单词的所有字母小写 |
text-indent
属性规定文本块中首行文本的缩进
.p2{
text-indent: 30px;/*两个字的距离*/
}
表格属性
使用css 使 html 表格更加美观
表格边框
示例
table,td{
/* 第一个属性表示边框的像素距离,第二个属性表示边框的线段类型,第三个属性表示颜色 */
border: 1px solid red;
}
折叠边框
示例
table{
/* 折叠边框 */
border-collapse: collapse;
}
表格的高度和宽度
width和height属性定义表格的宽度和高度
示例
table{
/* 折叠边框 */
border-collapse: collapse;
/* 设置边框长和宽 */
width: 500px;
height: 300px;
}
表格文字对齐
表格中的文本对齐和垂直对齐属性
text-align属性设置水平对齐方式,向左、右或中心
示例
td{
text-align: center;
vertical-align: top;
vertical-align: bottom;
vertical-align: center;
}
表格填充
相当于设置表格的宽和高
示例
td{
padding: 20px;
}
设置表格的颜色
有表格边框颜色、背景颜色、文本颜色
示例
td{
background-color: #555555;
color: #ffffff;
}
关系选择器
后代选择器
定义
选择所有元素被E元素包含的F元素,中间空格隔开
语法
EF{}
示例
ul li{
color: red;
}
子代选择器
定义
选择所有作为E元素的直接子类元素F,对更深一层的元素不起作用,用“>”表示
语法
E>F {}
示例
div>p{
color: red;
}
相邻兄弟选择器
定义
选择紧跟E元素后的F元素,用加号表示,选择相邻的第一个兄弟元素
注意:只能向下选择
语法
E+F{}
示例
通用兄弟选择器
定义
选择E元素之后的所有兄弟元素F,作用于多个元素,用~隔开
语法
E~F{}
css盒子模型
概念
所有html元素可以看做盒子,在CSS中,“box model”这一术语是用来设计和布局时使用css盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:
外边距、边框、内边距和实际内容
外边距:清除边框区域,外边距是透明的
边框:围绕在内边距和内容外的边框
内边距:清除内容周围的区域,内边距是透明的
内容:盒子内容,显示文本的图像
示例
div{
width: 100px;
height: 100px;
background-color: red;
padding-left: 50px;
padding-top: 100px;
padding-right: 150px;
padding-bottom: 40px;
margin-left: 50px;
margin-top: 20px;
margin-right: 50px;
margin-bottom: 50px;
}
弹性盒子模型
定义
弹性盒子模型由弹性容器和弹性元素组成
弹性容器包含了一个或者多个弹性子元素
注意:弹性容器外及弹性子元素是正常渲染的。弹性盒子只定义了弹性元素如何在弹性容器内布局
注意:默认弹性盒子的摆放位置为横向摆放的。
父元素上的属性
display属性
display:flex;/*开启弹性盒*/
flex-direction属性
定义
flex-direction属性指定了弹性子元素在父类中的位置
语法
flex-direction: row|row-reverse|colume|colume-reverse
row:横向从左到右排列(默认)
row-reverse:反转横向排列
colume:纵向排列
colume-reverse:反转纵向排列,从后往前排,最后一项排在最上面
示例
.container{
width: 500px;
height: 500px;
background-color: gray;
display: flex;
flex-direction: column;
}
justify-content属性
定义
内容对齐属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线对齐
语法
jsutify-content:flex-start|flext-end|center
示例
.container{
width: 500px;
height: 500px;
background-color: gray;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
align-items属性
定义
设置水平方向上的对齐方式
语法
align-items:flex-start|flex-end|center
子元素上的属性
flex-grow/flex属性
定义
根据弹性盒子元素所设置的扩展因子作为比率来分配剩余空间
示例
/* 如果在一个子元素中设置了flex属性,那么它本身的宽度(或高度)则不再生效了 */
.box1{
width: 100px;
height: 100px;
background-color: red;
flex:2;
}
.box2{
width: 100px;
height: 100px;
background-color: green;
flex:2;
}
.box3{
width: 100px;
height: 100px;
background-color: blue;
flex:1;
}
文档流
文档流是文档中可显示对象在排列时所占用的位置、空间
例如:块元素从上到下摆放、内联元素从左到右摆放
标准流里面的限制非常多,导致很多页面效果无法实现
例如:
- 高矮不一,底边对齐
- 空白折叠
- 元素之间用空格换行会产生空隙
解决方式
脱离文档流
- 浮动
- 绝对定位
- 固定定位
浮动
浮动的定义
float属性定义元素在哪个方向浮动,任何元素都可以浮动
值 | 描述 |
---|---|
left | 元素向左浮动 |
right | 元素向右浮动 |
浮动原理
浮动以后使元素脱离了文档流
浮动只有左右浮动,没有上下浮动
元素向左浮动
示例
.box{
width: 200px;
height: 200px;
background-color: aqua;
float: left;
}
.container{
width: 400px;
height: 400px;
background-color: blueviolet;
}
img{
width: 300px;
float: left;
}
所有元素向左浮动
当所有元素同时浮动的时候,会变成水平摆放,向左或者向右
/*将本来竖着摆放的元素横向摆放*/
div{
width: 300px;
height: 300px;
float: left;
}
.box1{
background-color: red;
}
.box2{
background-color: blue;
}
.box3{
background-color: yellow;
}
注意:当容器宽度不够的时候会自动换行
清除浮动
浮动的副作用
- 浮动元素会造成父元素高度塌陷
- 后续元素会受到影响
清除浮动的方式
- 父元素设置高度
- 受影响元素增加clear属性
- overflow清除浮动
- 伪对象
示例
父元素设置高度
.container{
width: 500px;
height:500px;
background-color: #888888;
}
.box{
width: 100px;
height: 100px;
background-color: aqua;
margin: 5px;
float: left;
}
.text{
width: 100px;
height: 100px;
background-color: blueviolet;
}
受影响元素增加clear属性
.container{
width: 500px;
background-color: #888888;
}
.box{
width: 100px;
height: 100px;
background-color: aqua;
margin: 5px;
float: left;
}
.text{
width: 100px;
height: 100px;
background-color: blueviolet;
clear: both;
}
overflow清除浮动
.container{
width: 500px;
background-color: #888888;
overflow: hidden;
clear: both;
}
.box{
width: 100px;
height: 100px;
background-color: aqua;
margin: 5px;
float: left;
}
.text{
width: 100px;
height: 100px;
background-color: blueviolet;
}
伪对象
.container{
width: 500px;
background-color: #888888;
}
.container::after{
content: "";
display: block;
clear: both;
}
.box{
width: 100px;
height: 100px;
background-color: aqua;
margin: 5px;
float: left;
}
.text{
width: 100px;
height: 100px;
background-color: blueviolet;
clear: both;
}
定位
position属性指定了元素的定位类型
值 | 描述 |
---|---|
relative | 相对定位 |
absolute | 绝对定位 |
fixed | 固定定位 |
绝对定位和固定定位会脱离文档流,设置定位以后可以使用四个方向键
相对定位
示例
div{
width: 200px;
height: 200px;
background-color: red;
position: relative;
left: 200px;
top:100px
}
绝对定位
示例
.box1{
width: 200px;
height: 200px;
background-color: red;
position: absolute;
left: 100px;
top: 200px;
}
.box2{
width: 300px;
height: 300px;
background-color: blue;
}
.box3{
width: 200px;
height: 200px;
background-color: blueviolet;
position: absolute;
left: 50px;
top: 100px;
}
注意:有多少个元素是绝对定位就会出现绝对定位个数加一的层次
固定定位
.box1{
width: 100px;
height: 100px;
background-color: brown;
position: fixed;
left: 100px;
top: 100px;
}
.box2{
width: 400px;
height: 400px;
background-color: aqua;
}
注意:定位的位置相对于滚动的界面是不动的!
注意
设置定位后,相对定位和绝对定位是相对具有定位的父级元素进行位置调整,如果父级元素不存在定位,则逐层向上寻找,直到顶层文档
定位的问题
.container{
width: 200px;
height: 200px;
background-color: #888;
position: relative;
margin-left: 100px;
}
/* 如果container有定位box相对container进行移动;如果没有,则相对文档进行移动 */
.box{
width: 100px;
height: 100px;
background-color: blue;
position: absolute;
left: 50px;
top: 50px;
}
Z-index
z-index属性设置元素的堆叠位置。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面
/* z-index属性可以调整元素间的覆盖关系,谁大谁在上面 */
.box1{
width: 200px;
height: 200px;
background-color: red;
position: absolute;
left: 100px;
top: 200px;
z-index: 100 ;
}
.box3{
width: 200px;
height: 200px;
background-color: blueviolet;
position: absolute;
left: 50px;
top: 100px;
z-index: 50;
}
CSS3新特性(相较于CSS2)
圆角
使用css3boder-radius属性来制作圆角
规则
- 四个值:分别代表:左上、右上、右下、左下
- 三个值:分别代表:左上、右下+右上、左下
- 两个值:分别代表:左上右下、右上左下
- 一个值:四个相同圆角值
阴影
通过box-shadow向框添加一个或多个阴影
box-shadow有四个值:
值 | 描述 |
---|---|
h-shadow | 必选,水平位置的阴影 |
v-shadow | 必选,垂直方向上的阴影 |
blur | 可选,模糊距离 |
color | 可选,阴影颜色 |
示例
.box{
width: 400px;
height: 400px;
background-color: red;
/* 上下内边距为0,左右空间平均分配 */
margin: 0 auto;
box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);
}
动画
动画是使元素从一种样式逐渐变化为另一种样式的效果
您可以改变任意多样式的次数
用关键词from…to表示
0%是动画的开始,100%表示动画已经完成
@keyframes创建动画
规则
@keyframes myAAnim {
0%{
background-color: red;
}
50%{
background-color: green;
}
100%{
background-color: red;
}
}
animation执行动画
值 | 描述 |
---|---|
name | 设置动画的名称 |
duration | 设置动画的持续时间 |
timing-function | 设置动画效果速率(如下) |
delay | 设置动画的开始时间 |
iteration-count | 设置动画的循环次数,infinite为无限循环 |
direction | 设置动画播放方向 |
animation-play-state | 控制动画的播放状态:running代表播放,而paused代表停止播放 |
timing-function值 | 描述 |
---|---|
ease | 逐渐变慢 |
linear | 匀速 |
ease-in | 加速 |
ease-out | 减速 |
ease-in-out | 先加速后减速 |
direction值 | 描述 |
---|---|
normal | 默认为normal表示向前播放 |
alternate | 动画播放在第偶数次向前播放,第奇数次向反播放 |
切换背景颜色
媒体查询
媒体查询能使页面在不同终端下达到不同的效果
媒体查询会根据设备的大小自动识别加载不同的样式
设置mate标签
使设备的宽度作为视图宽度并禁止初始的缩放,在head标签里加入这个标签
示例
<meta name="viewport" content="width=device-width, initial-scale=1.0">
媒体查询语法
示例
/* 使用一套代码适应不同设备的屏幕比例 */
.box{
width: 300px;
height: 300px;
background-color: red;
}
@media screen and (max-width: 768px) {
.box{
background-color: blue;
}
/* 使元素消失 */
.p1{
display: none;
}
.p2{
display: none;
}
}
@media screen and (max-width: 992px) and (min-width: 768px) {
.box{
background-color: green;
}
.p1{
display: none;
}
/* 使元素显示 */
.p2{
display: block;
}
}
@media screen and (min-width: 992px) {
.box{
background-color: red;
}
.p1{
display: block;
}
.p2{
display: block;
}
}
字体图标
我们经常会用到一些图标。但是我们在使用这些图标的时,往往会遇到失真的情况,而且图片数量很多的话,页面加载速度就越慢。所以,我们可以使字体图标的方式来显示图标,既解决了失真的问题,也解决了图盘占用资源的问题。
优点
- 轻量性:加载速度快,减少http请求
- 灵活性:可以利用css设置大小颜色等
- 兼容性:网页字体支持所有现在浏览器,包括IE低版本
使用字体图标
- 官网下载图标
- 点击index.html图标进入说明界面
- 使用link引用其中的iconfont.css文件
- 使用span元素容纳
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./font/iconfont.css">
<style>
.home{
font-size: 100px;
color: red;
}
</style>
</head>
<body>
<span class="iconfont icon-fangzi home"></span>
</body>
</html>