CSS如何显示一个从左上角开始展开的弹窗,最终是显示在屏幕中间,思路是什么,请大神指导下。

html-css019

CSS如何显示一个从左上角开始展开的弹窗,最终是显示在屏幕中间,思路是什么,请大神指导下。,第1张

思路应该是一个从0%到100%的动画展开的效果,大概需要写0%,50%,100%三个样式。 弹窗的css代码大概是:position: fixedz-index: 2000left: 0top: 0这样弹窗的左上角原点在页面最左上角,如果要调整位置要用CSS变换特效(transform)的平移translate函数达到目的: translate(x, y)(长度值或者百分比):在水平方向、垂直方向平移元素。    translateX(value):水平方向平移。    translateY(value):垂直方向平移。    scale(x, y)、scaleX(value)、scaleY(value):在水平方向、垂直方向或者两个方向上缩放元素。    rotate()、rotateX()、rotateY()、rotateZ():rotate支持3D效果,可在x、y、z轴上旋转元素。    skew()、skewX()、skewY():在水平方向、垂直方向或者两个方向倾斜一定的角度。  另外弹窗展开的动画要用到css3的动画属性:    animation-delay:设置动画开始前的延迟时间。    animation-direction:设置动画循环播放的时候是否方向播放,包含normal和alternate两个值。    animation-duration:设置动画播放持续的时间。    animation-interacion-count:设置动画的播放次数,可以为具体数据或者无限循环关键字infinite。    animation-name:指定动画名称。    animation-play-state:允许动画暂停和重新播放,包含running、paused。    animation-timing-function:指定如何计算中间动画值,

主要思路是利用hover来进行功能实现,transition-duration:来实现过度动画;

css这样实现

html如下

.download-block{

width:90%

height:100px

background:#0b0e32

/*margin:  100px  auto 0*/

    margin:0 auto

position:absolute

left:0

right:0

transition-duration:2s

opacity:0.7

}

.download-block1{

background:transparent

height:100px

overflow:hidden

position:relative

left:0

top:-100px

right:0

padding-top:100px

transition-duration:2s

opacity:0.7

cursor:pointer

}

.download-block1:hover{

padding-top:0

transition-duration:2s

opacity:0.7

}

前言:

VUE弹窗动画建议不要参考官网封装好的的transition,本来很简单的一个需要,越看越晕。

先上源码,看不懂再往下看:

开发流程:

1.先写好一个不带动画的弹窗组件,share_cover为遮罩DIV,share_content为内容DIV

2.(核心)

弹窗动画,我们要给内容DIV的CSS加个animation属性。这里我们给animation设置了三个值:动画CSS名,时间,动画播放次数

3.动画CSS名,按照组件功能命名就行,动画效果在@keyframes里面配置

keyframes后面跟动画名,0%表示动画开始的DIV样式,会覆盖掉animation所在DIV的属性。

可以把0%当作vi-if=false时来理解,动画刚开始时候DIV的样式。

比如我们这里0%的时候bottom设置为-5.5rem,那么share_content里面的bottom会开始会被替换成-5.5rem.

5.同理,如果我们想把动画由从上到下换成从中间一个点展开,也是改keyframes

更多动画效果可以参考 这个 ,直接预览看里面的样式文件,拉倒keyframes那一块即可