前言
一个小白的学习历程,用自己的的亲身经历为各位还未步入职场的朋友们先探探路。qvq
提示:这是CSS篇
CSS
一、CSS介绍
CSS (Cascading Style Sheets) 翻译为指层叠样式表 ,用于HTML页面的美化,层叠样式是指对同一个HTML标签添加多种不同的样式(字号、字体、颜色等等),所有样式会叠加在一起展示出效果
CSS语法
<head>
<style>
选择器{
属性名:属性值;
属性名:属性值;
}
</style>
</head>
选择器:要修饰的对象(东西)
属性名:修饰对象的哪一个属性(样式)
属性值:样式的取值
二、引入方式
HTML引入CSS的三种方式:
1.行内样式:定义在标签的属性中, 作用于当前标签,也称为嵌入样式,使用HTML标签的style属性定义只对设置style属性的标签起作用
2.内部样式:定义在页面的head部分, 作用于当前页面中的所有(部分)标签,也称为内嵌样式,在页面头部通过style标签定义对当前页面中所有符合样式选择器的标签都起作用
3.外部样式:定义在页面外部,通过link标签引入到页面中,作用于所有引入此样式文件的页面标签,使用单独的 .CSS 文件定义,然后在页面中使用 link标签 或 @import指令 引入:
使用 link标签 链接外部样式文件
<link rel="stylesheet" type="text/css" href="CSS样式文件的路径">
提示:type属性可以省略
@import 指令 导入外部样式文件
<style>
@import "CSS样式文件路径";
@import url(CSS样式文件路径);
</style>
CSS样式使用优先级: 行内样式 > 内部和外部样式(内部和外部样式,后面覆盖前面)
三、CSS选择器
3.1基础选择器
3.1.1标签选择器
作用:使用标签名选中一类标签,然后设置样式
语法:标签名 { css样式 }
注意:标签选择器无法差异化同名标签的显示效果
3.1.2类选择器
作用:使用标签的class属性选中一类标签
语法:.class属性值{ css样式 }
步骤:1. 在目标标签上添加class=""属性 2. 使用类选择器选中标签,然后设置样式
注意:一个类选择器可以供多个标签使用,一个标签也可以使用多个类选择器,需要使用空格隔开
3.1.3id选择器
作用:使用id属性选中一个标签
语法:#id值 { css样式 }
步骤:1. 在目标标签上添加id=""属性 2. 使用id选择器选中标签,然后设置样式
注意:一个id选择器在一个页面上只能用一次(html不建议页面上的元素有相同的id名称)
3.1.4通配符选择器
作用:查找页面所有标签,设置相同样式
语法:*{ css样式 }
注意:不需要调用,浏览器自动查找页面所有标签,设置相同的样式;优先级最低
3.2复合选择器
3.2.1后代选择器
作用:选中某元素的后代元素
语法:父选择器 子选择器 { css样式 }
3.2.2子代选择器
作用:选中某元素的字代元素(最近的子级)
语法:父选择器 > 子选择器 { css样式 }
3.2.3并集选择器
作用:选中多组标签设置相同的样式
语法:选择器1, 选择器2, …, 选择器N { css样式 }
3.2.4交集选择器
作用:选中页面中 同时满足 多个选择器的标签
选择器语法: 选择器1选择器2 { css }
结果:(既又原则)找到页面中 既 能被选择器1选中, 又 能被选择器2选中的标签,设置样式
注意点:
- 交集选择器中的选择器之间是 紧挨着的,没有东西分隔
- 交集选择器中 如果有标签选择器,标签选择器必须写在最前面
3.3伪选择器
伪类选择器书写最大的特点是 用冒号(:)表示 ,比如 :hover 、 :first-child 。
3.3.1链接伪类选择器
作用:伪类表示元素状态,选中元素的某个状态设置样式
语法:选择器:状态{ css样式 } 状态有四种:link-访问前 visited-访问后 hover-鼠标悬停 active-点击时
注意:如果要给超链接设置以上四个状态,需要按 LVHA 的顺序书写
3.3.2结构伪类选择器
作用:根据元素的结构关系查找元素
语法:选择器 { css样式 }
3.3.3伪元素选择器
作用:创建虚拟元素(伪元素),用来摆放装饰性的内容
注意:必须设置 content: ””属性,用来设置伪元素的内容,如果没有内容,则引号留空即可,伪元素默认是行内显示模式
3.3.4focus伪类选择器
:focus 伪类选择器 用于选取获得焦点的表单元素。
焦点就是光标,一般情况 类表单元素才能获取,因此这个选择器也主要针对于表单元素来说。
3.4选择器优先级
3.4.1优先级
行内样式>ID选择器>类选择器>标签选择器
原因:首先加载标签选择器,再加载类选择器,然后加载ID选择器,最后加载行内样式后加载会覆盖先加载的同名样式
3.4.2内外部样式加载顺
就近原则
原因:按照书写顺序依次加载,在同优先级的前提下,后加载的会覆盖先加载的同名样式,所以离的越近越优先
3.4.3!important
可以使用!important使某个样式有最高的优先级
四、CSS样式
4.1文字样式
font-size: 20px; 设置字号
font-family: ‘楷体’; 设置字体
font-weight: bold; 设置文字加粗( normal:正常[默认], bold:粗体, 数值 )
font-style: italic; 设置文字倾斜( normal:正常[默认], italic:倾斜 )
font简写属性:font:font-style|font-weight|font-size|font-family必须按此顺序书写
4.2文字属性
color:颜色
line-height:行高 行之间的高度
text-align:水平对齐方式 取值:left、center、right
vertical-align:垂直对齐方式 取值:top、middle、bottom可以用于图片和文字的对齐方式
text-indent:首行缩进 用px或者em
text-decoration:文本修饰 取值:underline、overline、line-through、none
text-transform:字母大小写转换 取值:lowercase、uppercase、capitalize首字母大写
letter-spacing:字符间距
word-spacing:单词间距 只对英文有效
white-space:空白的处理方式 文本超出后是否换行,取值:nowrap
4.3背景样式
background-size:宽度 高度;/背景图片大小/
background-color: red; /* 设置背景颜色 /
background-image: url(图片位置); / 设置背景图,背景图默认有平铺(复制)效果 /
background-repeat: repeat; / no-repeat:不平铺 repeat:平铺 repeat-x(y): 水平(垂直)平铺*/
background-position: 50px -100px; /* 水平:正数向右;负数向左 垂直:正数向下;负数向上 */
background-attachment:/取值:scroll(默认)、fixed固定不动 背景图片是否跟随滚动/
background简写属性:background:background-color|background-image|background-repeat|background-position以空格隔开,书写顺序没有要求
背景半透明
最后一个参数是 alpha 透明度,取值范围在 0~1之间
我们习惯把 0.3 的 0 省略掉,写为 background: rgba(0, 0, 0, .3);
注意:背景半透明是指盒子背景半透明,盒子里面的内容不受影响
4.4列表属性
list-style-type 设置列表前的标记 取值:none、disc、circle、square、decimal
list-style-image 将图像作为列表前的标记
list-style-position 设置标记的位置 取值:outside(默认)、inside
list-style简写属性:list-style:list-style-type|list-style-image|list-style-position书写顺序没有要求
4.5表格属性
border-collapse:表格中相邻的边框是否合并(折叠)为单一边框取值:separated(默认) collapse
4.6显示模式
显示模式指定是标签(元素)的显示方式
五、盒子模型
5.1简介
盒子模型是网页布局的基础,将页面中所有元素都看作是一个盒子,盒子都包含以下几个属性:
width 宽度
height 高度
border 边框
padding 内边距
margin 外边距
5.2盒子模型
5.2.1边框
表示盒子的边框
分为四个方向:
上top、右right、下bottom、左left
border-top、border-right、border-bottom、border-left
每个边框包含三种样式:
border-top-color、border-top-width、border-top-style
border-right-color、border-right-width、border-right-style
border-bottom-color、border-bottom-width、border-bottom-style
border-left-color、border-left-width、border-left-style
样式style的取值:
solid实线、dashed虚线、dotted点线、double双线、inset内嵌的3D线、outset外嵌的3D线
简写,三种方式:
按方向简写:
border-top、border-right、border-bottom、border-left
书写顺序:
border-顺序:width style color
按样式简写:
border-color、border-width、border-style
书写顺序:
border-样式:top right bottom left
必须按顺时针方向书写,同时可以缩写:
border-width:2px;--------->四个边框的宽度均为2px
border-width:1px 2px;
border-width:1px 2px 4px;
规则:如果省略,则认为上下一样,左右一样
终级简写:
如果四个边框样式完全相同,border:width style color;
5.2.2 内边距
表示盒子的内边距,即内容与边框之间的距离
同样也分为四个方向,也可以简写(按顺时针方向,默认上下一样,左右一样)
注意:如果上下冲突,则以上为准,如果左右冲突,则以左为准
5.2.3外边距
表示盒子的外边距,即盒子与盒子之间的距离
同样也分为四个方向,也可以简写(按顺时针方向,默认上下一样,左右一样)
居中对齐:
元素的水平居中
- 块级元素的水平居中
margin:0 auto;
提示:块级元素必须指定宽度 - 文本的水平居中
text-align:center; - 垂直居中,将height和line-height设置为相同
height:100px;
line-height:100px;
注意: 以上方法是让块级元素水平居中, 行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可 。
5.3外边距合并
使用 margin 定义块元素的 垂直外边距 时,可能会出现外边距的合并。
主要有两种情况:
1.相邻块元素垂直外边距的合并
当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距 margin-bottom,下面的元素有
上外边距 margin-top ,则他们之间的垂直间距不是 margin-bottom 与 margin-top 之和。 取两个值中的 较大者这种现象被称为相邻块元素垂直外边距的合并 。
解决方案:
尽量只给一个盒子添加 margin 值。
2. 嵌套块元素垂直外边距的塌陷 2. 嵌套块元素垂直外边距的塌陷
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
解决方案:
可以为父元素定义上边框。
可以为父元素定义上内边距。
可以为父元素添加 overflow:hidden。
5.4除内外边距
网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网
页元素的内外边距。
{
padding:0; 清除内边距
margin:0; 清除外边距
}
注意: 行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内 块元素就可以了。
5.5css3盒子模型
box-sizing: border-box;(盒子被撑大时自动内减)
5.6其他
5.6.1 元素所占空间
页面中的元素实际所占的空间
宽度=width+左右padding+左右border+左右margin
高度=height+上下padding+上下border+上下margin
5.6.2 盒子属性默认值
不同标签的盒子属性默认值可能不同,需要自己设置
body,ul,ol,dl,li,p,h1,h2,h3,h4,h5,h6,form{
margin:0;
padding:0;
}
5.7圆角边框
border-radius 属性用于设置元素的外边框圆角。
5.8盒子阴影
CSS3 中新增了盒子阴影,我们可以使用 box-shadow 属性为盒子添加阴影。
语法:
box-shadow: h-shadow v-shadow blur spread color inset;
注意:
1.默认的是外阴影(outset), 但是不可以写这个单词,否则造成阴影无效
2.盒子阴影不占用空间,不会影响其他盒子排列。
5.9文字阴影
在 CSS3 中,我们可以使用 text-shadow 属性将阴影应用于文本。
语法
text-shadow: h-shadow v-shadow blur color;
六、定位方式
定位 = 定位模式 + 边偏移
6.1简介
通过position属性实现对元素的定位,有四种定位方式
常用取值:
static 静态定位 按照常规文档流进行显示(不脱标,不能使用偏移)
relative 相对定位 相对于标签原来的位置进行的定位(不脱标,占有位置,相对自身位置移动)
absolute 绝对定位 相对于第一个非static定位的父标签的定位(脱标,不占有位置,带有定位的父级)
fixed 固定定位 相对于浏览器窗品进行定位(脱标,不占有位置,浏览器可视区)
sticky 粘性定位 (不脱标,占位置,浏览器可视区)
设置定位方式后,还要设置定位属性(偏移量):top、bottom、left、right
6.2相对定位(子绝父相)
先设置元素的position属性为relative,然后再设置偏移量
相对定位的特点:(务必记住)
1.它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)。
2.原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它。
因此,相对定位并没有脱标。它最典型的应用是给绝对定位当爹的。。。
6.3绝对定位(子绝父相)
先设置父标签为非static定位,然后设置元素的position属性为absolute,最后再设置偏移量
绝对定位的特点:(务必记住)
1.如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document 文档)。
2.如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。
3.绝对定位不再占有原先的位置。(脱标)
所以绝对定位是脱离标准流的。
居中:left:50%
6.4固定定位
先设置元素的position属性为fixed,然后再设置偏移量
设置元素为固定定位后,元素会浮动在面面上方
固定定位的特点:
1.以浏览器的可视窗口为参照点移动元素。
跟父元素没有任何关系
不随滚动条滚动。
2.固定定位不再占有原先的位置。
固定定位也是脱标的,其实固定定位也可以看做是一种特殊的绝对定位。
固定定位小技巧: 固定在版心右侧位置。小算法:
1.让固定定位的盒子 left: 50%. 走到浏览器可视区(也可以看做版心) 的一半位置。
2.让固定定位的盒子 margin-left: 版心宽度的一半距离。 多走 版心宽度的一半位置
就可以让固定定位的盒子贴着版心右侧对齐了。
6.5粘性定位
相对定位和固定定位的总和,sticky
固定定位小技巧: 固定在版心右侧位置。
粘性定位的特点:
1.以浏览器的可视窗口为参照点移动元素(固定定位特点)
2.粘性定位占有原先的位置(相对定位特点)
3.必须添加 top 、left、right、bottom 其中一个才有效
跟页面滚动搭配使用。 兼容性较差,IE 不支持。
6.5z-index
设置元素定位方式后,元素会浮在页面上方,此时可以通过z-index属性设置优先级,控制元素的堆叠顺序
取值为数字,值越大优先级越高,默认为auto(大多数浏览器默认为0)
注意:只能给非static定位的元素设置z-index属性
七、浮动
传统网页布局的三种方式
普通流(标准流):块级元素会独占一行,从上向下顺序排列;行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行。
浮动
定位
7.1 浮动属性
通过float属性来实现元素的浮动,可以让块级元素脱离常规的文档流,向左或向右移动,在同一行显示,
如果一行显示不下,则会换行显示
常用取值:
left左浮动
right右浮动
none不浮动,默认值
设置float属性后,元素会浮在页面上层,此时父容器无法计算自己尺寸,如果我们还想显示父容器通常会在末尾添加一个清除了float属性的空的div来解决
7.2浮动特性
设置了浮动(float)的元素最重要特性:
1.脱离标准普通流的控制(浮) 移动到指定位置(动), (俗称脱标)
2.浮动的盒子不再保留原先的位置
3.浮动元素会具有行内块元素特性。
任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有 行内块元素 相似的特性。
如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决
浮动的盒子中间是没有缝隙的,是紧挨着一起的
行内元素同理
7.2清除属性
通过clear属性来实现清除,设置元素的哪一侧不允许有浮动元素
常用取值:
left左侧不允许出现浮动元素
right右侧不允许出现浮动元素
both两侧不允许出现浮动元素
none允许两侧出现浮动元素,默值
结论:
对于非浮动元素,两边都可以设置清除(常用)
对于浮动元素,向哪边浮动,就只能设置哪边的清除
八、元素的显示和隐藏
8.1 display显隐
通过display属性设置元素是否显示,以及是否独占一行
常用取值:
取值 含义 说明
none 不显示
inline 显示为内联元素,行级元素的默认值 将块级元素变为行级元素,不再独占一行
block 显示为块级元素,块级元素的默认值 将行级元素变为块级元素,独占一行
inline-block 显示为内联元素,但是可以设置宽和高 在inline基础上允许设置宽度和高度
注意:
行级元素是无法设置宽度和高度的,可以为行级元素设置 display:inline-block ,然后就可以设置宽和高了
8.2 visibility显隐
也可以通过visibility属性设置元素的显示和隐藏
常用属性:
取值 含义 说明
visible 显示
hidden 隐藏
8.3 区别
display隐藏时不再占据页面中的空间,后面的元素会占用其位置
visibility隐藏时会占据页面中的空间,位置还保留在页面中,只是不显示
九、轮廓属性
9.1 简介
轮廓outline,用于在元素周围绘制一个轮廓,位于border外围,可以突出显示元素
9.2 基本用法
常用属性:
outline-width:轮廓宽度
outline-color:轮廓颜色
outline-style:轮廓样式
outline简写
在浏览器中,当鼠标单击或使用TAB键让一个表单或链接获得焦点时,该元素会有一个轮廓outline
优点:可以提高使用表单的用户体验
缺点:有时会影响美观
9.3 outline和border的区别
border可以应用于所有html元素,而outline主要用于表单元素、超链接元素
当元素获得焦点时会自动出现outline轮廓效果,当失去焦点时会自动消失,这是浏览器默认行为
outline不影响元素的尺寸和位置,而border会影响
十、其他属性
10.1 宽高相关
max-width:设置元素的最大宽度
max-height:设置元素的最大高度
min-width设置元素的最小宽度
min-height设置元素的最小高度
10.2 溢出属性
当元素内容溢出时该如何处理
常用取值:
visible溢出时可见,显示在元素外,默认值
hidden溢出的部分不可见(常用)
scroll无论是否出现溢出始终出现滚动条
auto溢出时自动出现滚动条
10.3 光标属性
用于设置光标的形状
常用属性:
default默认光标,一般为箭头
pointer手形,光标移动超链接上时一般显示为手形
move表示可移动
text表示文本
wait表示程序正忙,需要等待
hep表示帮助
10.4权重
权重不进位只叠加(!impotan如果不是继承,则权重最高)
10.5过渡 transition
10.6tranfrom属性
值 描述
none 定义不进行转换。
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate(x,y) 定义 2D 转换。
translate3d(x,y,z) 定义 3D 转换。
translateX(x) 定义转换,只是用 X 轴的值。
translateY(y) 定义转换,只是用 Y 轴的值。
translateZ(z) 定义 3D 转换,只是用 Z 轴的值。
scale(x[,y]?) 定义 2D 缩放转换。
scale3d(x,y,z) 定义 3D 缩放转换。
scaleX(x) 通过设置 X 轴的值来定义缩放转换。
scaleY(y) 通过设置 Y 轴的值来定义缩放转换。
scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle) 定义 2D 旋转,在参数中规定角度。
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义沿着 X 轴的 3D 旋转。
rotateY(angle) 定义沿着 Y 轴的 3D 旋转。
rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。
skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。
skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。
skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。
perspective(n) 为 3D 转换元素定义透视视图。