flex弹性布局

image-20240311183517117

容器属性:

1.定义主轴方向:flex-direction

2.定义子元素在x横轴方向的对齐方式:justify-content

3.定义子元素在y纵轴的对齐方式:align-items

4.超出容器轴线长度自动换行:flex-wrap

5.定义了多行项目在纵轴的对齐方式:align-content

image-20240311184429035

 

transform

translate实现偏移效果

transform: translate(x,y); 实现偏移效果 x和y是参照自身的位移量,可以是百分比

 

rotate实现旋转效果

transform: rotate(30deg); 实现旋转效果 正数表示顺时针旋转,负数表示逆时针旋转

rotate默认是以元素的中心作为圆点进行旋转

可以通过transform-origin属性对圆点进行修改

transform-origin: top left; 以元素左上角作为旋转圆点

 

scale实现缩放效果

transform: scale(0.5, 0.8) 0.5表示宽 0.8表示高,只填一个就是宽高一致缩放

缩放也可以通过transform-origin修改缩放的奇点

transform-origin: top left; 以元素左上角作为缩放奇点

 

skew实现倾斜效果

transform: skew(30deg, 10deg); 30deg表示水平方向倾斜角度 10deg垂直方向倾斜角度,传一个就一致倾斜

倾斜也可以通过transform-origin修改倾斜的奇点

transform-origin: top left; 以元素左上角作为倾斜的奇点

 

matrix实现2D变换矩阵的方式

transform: matrix(a, b, c, d, e, f)

a 和 d 控制元素的缩放

b 和 c 控制元素的倾斜或斜切

e 和 f 控制元素的平移

 

transition实现过渡效果

transition: property duration timing-function delay;

property:需要过度的属性

duration:过渡的时长

timing-function:缓动函数

delay:开始延迟时间

例如:

image-20240323152427010

 

垂直居中

文本: line-height = height 图片: vertical-align: middle; absolute 定位: top: 50%; left: 50%; transform: translate(-50%, -50%); flex: display:flex; margin:auto

 

子选择器 >

子选择器只作用父元素下面的第一级标签

image-20240322191112133

相邻兄弟选择器 +

只作用于相邻的标签的下个标签

.active必须是和要找的标签一样,例如下面都是p标签

image-20240322191554344

通用兄弟选择器 ~

当前选择的标签向下所有的同级相同类型的标签

image-20240322192058405

:first-child选择第一个元素

 

image-20240322193720880

 

:last-cild选择最后一个元素

image-20240322193841547

p:nth-child(2)

选择当前p元素的父级元素,选中父级元素的第一个,并且是当前指定的元素才生效

image-20240322194428160

p:nth-of-type(2)

选择父元素里第2个类型为p的元素

image-20240322200014542

:hover鼠标移过去的样式

image-20240322200326972

属性选择器(常用)

给有id属性的设置样式

image-20240322203350533

给id等于last的设置属性

这里不需要加引号,因为id是唯一的

image-20240322203544569

image-20240322203717367

给所有class里包含links的设置样式

image-20240322203930265

给href中以http开头的设置样式

image-20240322205328641

给href中以pdf结尾的设置样式

image-20240322205541432

字体样式

font-family: 楷体 设置字体样式

font-size:50px 设置字体大小

font-weight: bold 设置粗细

color 字体颜色

font: bold 20px/50px 楷体 便捷设置字体

文本样式

color:red; 颜色

text-algin: center/left/right; 文本居中/偏左/偏右

text-indent:2em 首行缩进2个字符

text-shadow: 5px 5px 5px #FF0000; 设置阴影

line-height:50px; 设置行高,一般高度是多少就设置多少

text-decoration: underline/line-through/overline 下划线/中划线/上划线

水平对齐:

image-20240322213658123

a超链接伪类

a:hover 是鼠标放上悬停时的效果

a:active 是点击时不松手的效果

a:link 是未访问时的效果

a:visited 是访问完后的效果

.box:before 可以在元素内容的前面插入新内容,必须要有content属性,如果不需要就写为空content=""

.box:after 可以在元素内容的后面插入新内容,必须要有content属性,如果不需要就写为空content=""

鼠标指针样式

cursor: point; 鼠标变成手

 

列表样式

list-style: none/circle/decimal/square; 设置列表前的小点,去掉/空心圆/有序列表/正方形

如果设置了margin: 0px; padding: 0px; 则列表样式会被遮蔽住,只有设置margin-left才能看到

背景图片

background-image: url("imgs/a.png") 默认全部平铺

background-repeat: repeat-x; 水平平铺

background-repeat: repeat-y; 垂直平铺

background-repeat: no-repeat; 不平铺

background-position: 50px 20px; 背景位置 x轴/ y轴

background: red url("imgs/a.png") 50px 20px no-repeat; 颜色/ 图片/ x轴/ y轴/ 不平铺

 

盒子模型

image-20240322221509795

margin 外边距

border: 1px solid red 边框 solid实线 dashed虚线

padding 内边距

box-shadow: 10px 10px 100px yellow; 盒子阴影

盒子模型的尺寸:border + margin + padding + 内容元素

使用margin进行水平居中

前提:父元素有宽度,需要居中的元素是块元素且设置宽度,在需要居中的元素里使用 margin: 0 auto; 进行水平居中

使用text-align进行水平居中

前提:父元素有宽度,需要居中的元素是块元素且设置宽度,在需要居中的元素里使用 text-align:center; 进行水平居中

 

浮动

块级元素:独占一行

行内元素:不独占一行

display: block; 设置成块元素

display: inline; 设置成行内元素

display: inline-block; 设置成既是块元素又是行内元素

display: none; 隐藏,但是源码里还是有

 

如果给一个元素即设置了float:left; 又设置了clear: both; 这样的话会浮动然后变成块元素独占一行的浮动

clear: left/both/right; 分别是左侧/全部/右侧不允许有浮动,如果有那就排到对应位置的后面去

 

overflow

overflow: hidden; 将浮动后溢出的部分(即超过父元素高度的部分)进行隐藏

overflow: scroll; 给父元素增加滚动条,将浮动后溢出的部分显示在滚动条里

overflow-x: hidden; 取消x轴的滚动条 overflow-y: hidden; 取消y轴的滚动条

当x轴和y轴的滚动条同时取消的时候就相当于设置overflow: hidden;

 

解决浮动后父级边框塌陷问题

解决方法:方法2和4是最认可,最常用的还是方法4

1.增加父级元素高度

2.在所有浮动元素的最后增加空的div 给div设置属性 clear: both; margin: 0; padding: 0;

3.在父元素没有设置高度的情况下使用overflow: hidden; 如果父元素设置了高度,子元素部分内容就会被隐藏掉

4.父元素无需高度,在父元素的css中添加一个伪类 :after 原理和方法2类似,可以避免在html中增加空div

具体示例:

 

行内元素排列的方式

1.使用display: inline-block;

2.使用float: left; clear:both;

二者对比:

display: 方向不可以控制

float: 浮动起来会脱离标准文档流,要解决父级边框塌陷的问题

 

定位position

相对定位relative

相对自己原来的位置进行指定的偏移,仍然在标准文档流中所以不会造成父级边框塌陷的问题,其原来的位置依然被保留下来了

绝对定位absolute

1.没有给父元素设置定位,则绝对定位的元素会相对于浏览器进行定位

2.父元素有relative相对定位,则绝对定位的元素会相对于父元素进行定位

3.在父级元素范围内进行移动

相对于父级或浏览器进行定位偏移,不在标准文档流当中,原来的位置不会被保留

固定定位 fixed

定位在一个地方不变

 

image-20240323121118003

z-index

image-20240323124800319