视频资源:黑马程序员完整JavaWeb快速入门教程【收藏比赞多系列】_哔哩哔哩_bilibili
格式
写在<style>
标签中,<style>
标签放在<head>
标签之中。
1 | <style> |
选择器
元素选择器
以HTML标签名作为选择器名称;
1 | 标签名,标签名{ |
类选择器
每一个HTML标签都有一个class属性
1 | .class{} |
id选择器
每一个HTML标签都有一个id属性,id的属性值必须在本页面是唯一的
1 | #id{} |
通配符选择器
1 | *{} |
能匹配页面中所有元素
属性选择符
- [属性名]{}
- [属性名=“属性值”]{}
- [ 属性名*=“部分属性值”]{}
- [属性名^=“以XX开头的属性值”]{}
- [属性名$=“以XX结尾的属性值”]{}
1 | 标签[属性名]{} |
复合选择器
交集选择器
1 | lable.class{} |
并集选择器
1 | 选择器1,选择器2{} |
后代选择器
1 | lable1 lable2:2是1的内部标签 |
伪类
UI伪类
元素的状态
链接伪类
- link:等待点击
- visited:已点击过
- hover:鼠标悬停
- focus:拥有焦点
- active:鼠标按下还未释放
注意要按上述顺序定义选择符
:focus伪类
1 | 标签:focus{} |
该元素正在获取焦点
:target伪类
选中的元素指向页面中的其他元素,对指定的内容样式进行设定。
结构伪类
元素的某种结构关系,根据元素所处的位置选择元素,通常用于序列型的元素,如列表。
::firstletter
元素的第一个字符
::firstline
元素的第一行
::before&::after
在元素前后插入特殊内容
CSS与HTML结合
内部样式
行内样式
1 | <html标签 style=“css样式代码”/> |
<style></style>标签方式
1 | <style> |
外部样式
内嵌式
link标签
1 | <link rel="stylesheet" type="text/css" href="css文件路径"/> |
rel=”stylesheet” ,固定值,表示样式表
type=”text/css” ,固定值,表示css类型
href=”css文件路径”,表示文件位置
导入式
1 | <style type="text/css"> |
基本样式
背景
1 | background-color:color; |
文字
1 | color:color; |
列表
1 | list-style-type:disc/circle/square;项目符号的形状 |
表格
1 | border-width/style/color:;表格的线 |
层叠
继承
当后代的样式在没有设定的情况下默认使用最近祖先的样式
样式来源
- 浏览器默认样式表
- 用户样式表
- 网页作者链接样式表
- 网页作者内嵌样式表
- 网页作者行内样式表
顺序
规则
- 找到元素的的每一个样式申明;
- 按照样式的顺序和权重确定元素的样式;(!Important!2种顺序:样式表顺序、?)
- 按照元素的特征度对样式进行排序
- 顺序决定权重:两条规则,如果优先级相同,后定义的优先级高。
特指度
I-C-E公式:{I:ID, C:Class, E:标签名},有则+1
每一级都是绝对压制下一级
CSS盒子模型
结构组成
边框属性
1 | border-color: |
边距
内边距
padding-top/bottom/left/right
外边距
margin-top/bottom/left/right
外边距叠加:在垂直方向上,两个元素的之间的距离由外边距最大的值确定
Content
浮动与清除
标准流
展示方式:上到下,左到右
块级元素独占一行,垂直放置
1
div,p,form,ul,li,ol,dl,address,fieldset,table,hr
行级元素在水平方向上为左到右
1
span,strong,em,img,a,input,label,select,textarea,cite
块元素vs行内元素
类型 | 宽度 | 属性 | 边距 |
---|---|---|---|
块元素 | 自动填满其父元素宽度 | 可以设置width,height属性 | 可以设置margin,padding |
行内元素 | 宽度随元素内容变化 | 设置无效 | 水平方向有效,即left/right |
浮动
将元素从标准流取出来,使其向左/右移动,直至其外边缘碰到包含父元素的框或另一个浮动框。
图文绕排
必须先定义图片,再写环绕它的文本
默认文本行框围绕浮动框,若要阻止则对该框应用clear属性
左右分栏
?
清除
清除浮动≠回到文档流
目的:改变该元素自身的位置,并且只针对排在该元素前面的元素。即:让该元素的左/右没有浮动元素
解决高度坍塌问题
1 | 1.overflow:hidden |
定位position
position属性取值:
- static:静态定位(默认);
- fixed:固定定位,以浏览器窗口为基准;
- relative:相对定位,以原位置为基准;
- absolute:绝对定位,以父元素为基准。
布局
浮动+定位
display
display属性的取值:
- block:块级元素的显示方式;
- inline:内联元素显示方式;
- inline-block:both;
- table:块级table的显示特点;
- table-cell:tr,td的显示特点;可以解决分栏不等高的问题
- flex:弹性盒子布局;
- grid:网格布局。
流动布局
相关标记
![image-20210925145731343](http://hexo-git.oss-cn-beijing.aliyuncs.com/img/image-20210925145731343.png)
flex布局
https://www.runoob.com/w3cnote/flex-grammar.html
给予容器控制内部元素高度和宽度的能力。
直接在css中设置flex属性:display:flex/-webkit-flex
注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。
属性:
flex-direction:主轴方向
- row(default):→
- row-reverse:←
- column:↓
- column-reverse:↑
flex-wrap换行
- nowrap(default)
- wrap:第一行在上方
- wrap-reverse:第一行在下方
flex-flow: flex-direction flex-wrap
justify-content:容器内元素在主轴上的对齐方式,以row为例
- flex-start(default):左对齐
- flex-end
- center
- space-between:两端对齐
- space-around:每个项目两侧的间隔相等
align-items:在交叉轴上的对齐,以row为例,其交叉轴为column(必须为容器设定高度)
- flex-start:交叉轴的起点对齐(上对齐)。
- flex-end:交叉轴的终点对齐。
- center:交叉轴的中点对齐。
- baseline: 项目的第一行文字的基线对齐。
- stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
align-content:多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
- flex-start
- flex-end
- center
- space-between
- space-around
- strech
容器内item属性
order: <interger>
:order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。flex-grow: <number>
:flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。flex-shrink: <number>
:缩小比例,默认为1flex-basis
:在分配多余空间之前,项目占据的主轴空间,默认autoflex
:前三个的简写align-self
:可覆盖align-items属性
Grid布局
http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html
display: grid
注意:column, float, clear和vertical-align对网格容器没有效果。
术语
- 网格容器(grid container)
- 网格元素(grid item):容器内的子元素
- 网格线(grid line)
- 行网格线(row grid lines)
- 列网格线(column grid lines)
- 网格轨道(grid track):可认为是网格的行或列
- 网格单元(grid cell)
- 网格区(grid area):由若干网格单元组成
流程
- div封装
- display: grid/inline-grid/subgrid
- grid:块级网格
- inline-grid:行内网格
- subgrid:继承父级网格容器的列,行大小
- grid-template-columns&grid-template-rows:行和列的大小
- grid-column&grid-row:子元素的位置
属性
grid-template-columns&grid-template-rows
1
2
3
4grid-template-columns: [name] size //可以没有name
grid-template-columns: [name1 name2] size //可以有多个name
grid-template-columns: repeat(number,[name] size)
grid-template-columns: 1fr 1fr 1fr; //特殊单位fr,设置为份数grid-template-areas
grid-column-gap/grid-row-gap/grid-gap:子项间距离
justify-items/align-items:start/end/center/stretch:与行/列轴对齐
justify-content/align-content