CSS
一、CSS变形,过渡和动画
CSS变形,过渡和动画
1.变形:transform
- 1.1旋转:rotate
- transform:ratate(180deg);
- 1.2:缩放:scale
- transform:scale(2) ps:0会让元素从页面中消失。放大的时候如果空 间不够则会叠加到其他元素上
- transform:scale(0.5,2);分别为横向和纵向缩放
- transform:scaleY(2)
- transform:scaleX(2) 缩放还可以上下对调和前后对调效果
- transform:scale(-1):实现上下左右对调
- transform:scale(-1,1):实现横轴翻转
- 1.3平移:translate
- transform:translate(1px,2px):横向和纵向
- transform:translateX(-0.5em)
- transform:translateY(2em)
- 1.4倾斜:skew
- transform:skew(45deg,0):向左倾斜45度,逆时针旋转
- transform:skew(0,45deg)
- transform:skew(45deg,45deg)
- skewX和skewY
- 1.5多重变形
- transform:rotate(45deg) scale(5) translate(400px,500px) skew(45deg,0deg);
- 1.6原点
- 默认元素中心为变形原点
- transform-origin可以修改元素变形原点
- transform-origin:left top;和transform-origin:0 0和transform-origin:0% 0%;是等价的是左上角为原点
- 右下角:transform-origin:right bottom;\transform-oringin:100% 100%
- transform-origin属性对只使用translate函数移动的元素没有效果。
2过渡:transition
- 2.1
- IE10之前版本不支持transition
- 实现过渡效果,要满足以下几个条件
- 两个样式。一个样式表示过渡前的外观,另一个样式表示过渡后的外观。
- transition属性。CSS提供的transition属性,一般情况下,transition属性要添加到初始样式中
- 触发器。触发器是指促使元素在两个样式之间变化的操作
- 2.2添加过渡效果
- transition-property:指定要以动画显示的属性
-
transition-property:all
-
- transition-duration:指定动画持续多长时间
- transition-timing-function:控制动画的速率
- linear:匀速
- ease:开始很慢中间加速最后有降速
- ease-in
- ease-out
- ease-in-out
- cubic-bezier
- transition-delay:延迟开始过渡
- 过渡属性的简写形式:transition:all 1s ease-in .5s;顺序是属性、持续时间、属性函数和延迟
- transition:all 1s;
3动画
-
3.1
- IE10之前版本不支持动画
- 关键帧:指展示画面的一帧
- 创建动画的过程分成以下两步:
- 定义动画:设置关键帧,列出要变化的CSS属性。
- 把动画应用到元素上:定义好动画后,可以把动画应用到页面中的任意元素上。而且可以分别为每个元素设置时序、延迟和其他动画属性。
- 定义关键帧
- animation
- animation-duration
- animation-timing-function(linear、ease、ease-in、ease-out、ease-in-out)-
- animation-name
- animation-delay
- animation-iteration-count(动画运行次数:10、infinite(无数次)等)
- animation-direction:alternate;(让动画在奇偶次数分别正向和反向播放)
- animation-fill-mode:forwards;(让元素显示动画结束后的样式)
- animation-play-state:pause(暂停)/running(执行)
二、web布局新方法:弹性盒(flexbox)
1. 弹性容器
- 任何html元素都可以做弹性容器,弹性容器里的标签是弹性盒模型的一部分
2. 弹性项目
-
直接嵌套在弹性容器里的标签交弹性项目。只有弹性容器的子代是弹性项目,如果把一个
<div>
标签设为容器,然后里面放一个无需列表,那么只有<ul>
标签是弹性项目<ul>
标签里的<li>
标签则不是。 -
参考阮一峰的教程:Flex 布局教程:语法篇
3. 属性
3.1 flex-flow 属性
flex:1
各项目宽度相等
flex-flow
有两个值,第一个值指明方向。第二个值指明是否换行。
- 方向有四个可选值
row
(默认值),并排显示row-reverse
,并排显示,顺序跟row
相反column
,纵向叠放column-reverse
,
- 第二个值有三个可选值
nowrap
:不换行wrap
换行wrap-reverse
flex-flow
是flex-direction
和flex-wrap
的简写形式。flex-flow:row wrap;
等价:flex-direction:row;flex-wrap:wrap;
3.2 justify-content 属性
这个属性告诉浏览器把弹性项目显示在一行里的位置,只有弹性项目设置了宽度,而且各个项目的宽度之和小于弹性容器的宽度时才起作用。
- 五个可选值
flex-start
项目在一行里靠左对齐。如果把分析设为row-reverse
,项目会靠右对齐。flex-end
项目在一行里靠右对齐。如果把分析设为row-reverse
,项目会靠左对齐。center
居中显示space-between
均布各个弹性项目,项目之间的空间大小相同,最左边的项目靠容器的左边,最右边的项目靠容器右边space-around
把容器里剩余的空间平均分布给各个项目。
3.3 align-items 属性 决定高度不同的项目在容器里的纵向对齐方式,默认情况下,弹性项目会拉伸,因此高度都相同
flex-start
各个项目的顶边与容器的顶边对齐 -flex-end
各个项目的底边与容器的底边对齐center
各个项目的纵向中心线与容器的纵向中心线对齐baseline
把各个弹性项目里第一个元素的基线对齐stretch
项目常规纵向对齐方式,拉伸容器里的各个项目,使各个项目的高度相同。
3.4 align-content 属性 告诉浏览器如何放置显示为多行的项目,只有满足两个条件,这个属性才起作用
- 容器必须允许换行
- 容器的高度必须大于多行显示的弹性项目
align-content
支持六个值
flex-start
把各行弹性项目放在弹性容器的顶部flex-end
把各行弹性项目放在容器的底部center
把各行整体的纵向中心线与容器的纵向中心线对齐space-between
把纵向额外的空间平均分布在各行之间,最上面一行放在容器的顶部,最下面一行放在容器的底部space-around
把空间平均分布到各行的上下,包括最上面一行和最下面一行stretch
拉伸各个项目,让一行里的项目具有相同的高度。