各种盒子特效
盒子大小
1 | height: 100px; |
box-sizing:用来设置盒子尺寸的计算方式
属性
- content-box:默认值,高度和宽度代表内容区的大小
- border-box:宽度和高度代表整个可见框的大小,设置边框宽度和内边距时内容区往里缩,当内边距超过盒子大小才会扩大
normal 默认值 从from到他哦
reverse 从to到from
alternate 从from到to 重复执行时反向执行轮廓与圆角
1 | outline: 10px red solid |
outline用来设置轮廓线,属性和border一样,区别就是不会影响布局
阴影
1 | box-shadow: 10px 20px 50px rgb(0,0,0,.3); |
设置元素的阴影
第一个值是水平偏移量,正值向右,负值向左
第一个值是垂直偏移量,正值向下,负值向上
第三个值,模糊半径
第四个值代表,阴影颜色
圆角
- 以圆画圆角
1 | border-radius: 10px; |
- 以椭圆画圆角
1 | /* 第一个值代表水平半径a,第二个值代表垂直半径b */ |
- 圆
1 | /* 圆形 */ |
文本垂直对齐
1 | vertical-align: middle; |
文本都是在基线(baseline)上面的,使用vertical-align设置对齐方式
值
正值向上移动,负值向下移动
top:顶部对齐
baseline:默认值,沿基线对齐
bottom:底部对齐
middle:在父元素里居中
主要是这个可以解决图片布局的问题,图片在默认情况下是有基线的,它在父元素里并不会把父元素占满,而是在基线之上,去除这个影响就可以使用这个属性,更改默认值就行了
文本溢出处理
当一行文本超过屏幕宽度或指定宽度时,设置处理方式
1 | /*默认值*/ |
背景
background-clip:裁剪背景
- 值
- border-box:默认值,背景会出现在边框下面
- padding-box:背景不会出现在边框,出现在内容区和内边距
- content-box:出现在内容区
background-orgin:背景偏移计算的原点
- 值
- padding-box:默认值,position从内边距开始计算
- content-box:从内容区计算
- border-box:从边框计算
background-size:设置图片大小
- 第一个值代表宽度,第二个值代表高度
- cover:按照图片比例将元素铺满
- contain:图片比例不变,在元素中完整显示
简写注意
size必须写在position后面,使用/隔开
orgin和clip必须按照顺序来
1 background: center center / cover content-box content-box;
渐变
渐变就是将一个颜色向其他颜色进行过渡的效果,需要注意的是,渐变是图片,所以需要使用background-image设置
线性渐变
1 | /* 表示从1px/red到30px/green开始渐变 ,默认从上到下*/ |
径向渐变
使用的时候查api,不怎么常用
介绍一下基本语法
1 | background-image:radial-gradient(大小 at 位置, 颜色 位置,颜色 位置); |
过渡
1 | /*指定属性,all代表所有属性*/ |
可以指定一个属性发生变化的切换方式
提升用户体验
过渡的时序函数
指定过渡的执行方式
1 | transition-timing-function: ; |
可选值
ease 默认值,加速-> 减速
linear 匀速运动
ease-in 加速运动
ease-out 减速运动
ease-in-out 慢->加速->减速
cubic-bezier() 使用贝塞尔曲线
steps() 分步执行过渡效果
steps(3,end);
- 第二个值代表时间起始,默认值end表示时间结束,start表示开始时间执行
延迟
1 | transition-delay: 2s; |
- 延迟i执行
简写
- 第一个时间是持续时间
1 | transition: 1s 2s ease all; |
动画
与过渡类似(有它的所有属性),但不需要用属性触发,是动态的
- 动画效果必须要设置一个关键帧,代表动画执行的步骤
1 | @keyframes test { |
- 然后添加动画属性
1 | /* 执行的的动画关键帧 */ |
还有时序函数等等,和过渡一样
简写
- 注意延时和延迟时间顺序即可
- 第一个代表延迟,第二代表延时
1 | animation:1s 2s 2 alternate; |
变形
1 | transform: translateX(-100px); |
通过css改变元素的形状或位置,不会影响布局
transform用来设置这种效果
平移
- translateX()
- translateY()
- translateZ(),需要设置视窗大小(
perspective
)才有用
例子:当元素大小确定时可以使用绝对路径 ,过度约束来居中
但是对于大小不确定的元素,需要变形比较方便,比如
1
2
3
4 position: absolute;
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%);
旋转
1 | transform: rotateY(1turn) translateZ(800px); |
指定元素沿着x y z轴旋转的角度(单位deg,turn)
- rotateX()
- rotateY()
- rotateZ()
附一张坐标图
注意旋转和平移的顺序,旋转后坐标轴会变化
- 是否显示元素背面
1 | backface-visibility: visible; |
3d效果要使用
transform-style: preserve-3d;
缩放
将元素进行缩放和放大
- scaleX() 水平缩放
- scaleY() 垂直
- scale() 双方向
原点
变形原点
1 | transform-orgin:20px 20px; |
弹性盒
flex(弹性盒)是CSS的布局手段,是用来代替浮动的
使元素具有弹性,让元素随页面的大小改变而改变
弹性容器
1 | dispaly: flex; |
设置上面两个其中一个属性就是弹性容器了
- flex-direction
- row 默认值 弹性元素水平排列(左到右)
- row-reverse 水平反向排列
- column 纵向排列
- column-reverse 纵向反向排列
- 主轴:排列方向就是主轴
- 辅轴:与主轴垂直的方向
- flex-wrap 设置元素是否换行
- nowarp 默认,不换行
- warp 沿辅轴方向换行
- warp-reverse 沿辅轴反方向换行
- flex-flow warp和direction的简写属性
- justify-content 主轴上空白的分布
- flex-start 主轴起边排列
- flex-end 终边排列
- center 主轴中居中排列
- space-around 空白分配到元素两侧
- space-between 空白均匀分配到元素间,两端没有
- space-evenly 空白分配到元素单侧
- align-items 辅轴排列元素
- stretch 默认 将元素长度设置为相同的值
- flex-start 元素不会拉伸 沿辅轴起边对齐
- flex-end 沿终边对齐
- center 辅轴中居中对齐
- baseline 基线对齐
- align-content 辅轴空白的分布
- flex-start 辅轴起边排列
- flex-end 辅轴排列
- center 辅轴中居中排列
- space-around 空白分配到元素两侧
- space-between 空白均匀分配到元素间,两端没有
- space-evenly 空白分配到元素单侧
弹性元素
- flex-grow 设置伸展系数
- 定义了元素在多余空间的容器内怎么分布
- 每个元素都设置时按照比例分配
- flex-shrink 收缩系数
- 当容器不够放下子元素时子元素的变化
- 1 默认值 等比例收缩
- 数值越大代表收缩越厉害
- align-self 覆盖当前的align-items
- flex-basis 指定元素在主轴上的基础长度
- 主轴横向则代表宽度
- 纵向代表高度
- 默认auto,根据元素自身
- 指定数值则以数值为准
- flex 简写属性
flex grow shrink basis
- initial(0 1 auto)
- auto(1 1 auto)
- none(0 0 auto)
- order 指定排列顺序
- 根据指定值排列顺序