书签 分享 收藏 举报 版权申诉 / 26

类型用CSS3动画特效实现弹窗效果.docx

  • 文档编号:29690347
  • 上传时间:2023-07-26
  • 格式:DOCX
  • 页数:26
  • 大小:20.62KB

弹窗效果

Thisisamodalwindow.Youcandothefollowingthingswithit:

  • Read:

    modalwindowswillprobablytellyousomethingimportantsodon'tforgettoreadwhattheysay.

  • Look:

    amodalwindowenjoysacertainkindofattention;justlookatitandappreciateitspresence.

  • Close:

    clickonthebuttonbelowtoclosethemodal.

复制代码

效果如下:

image

动画实现

先看看CSS3为我们提供了的动画属性:

animation-delay:

设置动画开始前的延迟时间。

animation-direction:

设置动画循环播放的时候是否方向播放,包含normal和alternate两个值。

animation-duration:

设置动画播放持续的时间。

animation-interacion-count:

设置动画的播放次数,可以为具体数据或者无限循环关键字infinite。

animation-name:

指定动画名称。

animation-play-state:

允许动画暂停和重新播放,包含running、paused。

animation-timing-function:

指定如何计算中间动画值,

CSS3动画为我们提供了关键帧设置,我们可以按百分比设置动画。

首先弹窗是从窗口底部向上平移到中间位置。

设置的关键帧如下:

复制代码

@keyframesdialogSlipToUp{

0%{

top:

100%;

opacity:

0.3;

}

100%{

top:

50%;

opacity:

1;

}

}

@keyframesdialogSlipToBottom{

0%{

top:

50%;

opacity:

1;

-webkit-transform:

translate(-50%,-50%);

-moz-transform:

translate(-50%,-50%);

-ms-transform:

translate(-50%,-50%);

-o-transform:

translate(-50%,-50%);

transform:

translate(-50%,-50%);

}

100%{

top:

100%;

opacity:

0.3;

-webkit-transform:

translate(-50%,0);

-moz-transform:

translate(-50%,0);

-ms-transform:

translate(-50%,0);

-o-transform:

translate(-50%,0);

transform:

translate(-50%,0);

}

}

复制代码

上面就是关键帧的定义代码,dialogSlipToBottom和dialogSlipToUp是关键帧名称,元素类可通过animation-name属性使用。

dialogSlipToUp是弹窗时的动画效果,透明度从0.3渐变到1并且元素从浏览器底部位置渐变到居中位置。

在关闭窗口时使用dialogSlipToBottom作为动画,效果和dialogSlipToUp反向,另外,还使用了变换效果的tranlate函数,因为窗口的中心点在窗口中心,移到窗口底部时有1/2的高度没有隐藏掉,所以使用translate(-50%,0)让中心点移到顶部,这样整个窗口就可以完全隐藏了。

弹窗有一个3D旋转效果,使用CSS3的3D动画,我们必须选择一个容器作为透视容器,只有在这个容器中设置动画才有效。

通过添加perspective属性设置容器为透视容器,我们把dialog-root作为3D动画容器,样式如下:

复制代码

.dialog-root{

position:

fixed;

z-index:

2000;

left:

50%;

-webkit-animation-duration:

500ms;

-moz-animation-duration:

500ms;

-o-animation-duration:

500ms;

animation-duration:

500ms;

-webkit-perspective:

1300px;

-moz-perspective:

1300px;

perspective:

1300px;

}

复制代码

通过perspective属性设置透视容器透视举例为1300像素,另外动画的周期(animation-duration)为500毫秒。

弹窗的旋转实现是从浏览器由内向外90度旋转,设置transform-origin:

50%100%,让窗口以底线作为旋转轴。

旋转容器样式如下:

复制代码

.dialog-wrapper{

background:

#E74C3C;

width:

635px;

height:

375px;

overflow:

hidden;

-webkit-border-radius:

5px;

-moz-border-radius:

5px;

border-radius:

5px;

-webkit-animation-duration:

500ms;

-moz-animation-duration:

500ms;

-o-animation-duration:

500ms;

animation-duration:

500ms;

-webkit-transform-origin:

50%100%;

-moz-transform-origin:

50%100%;

-ms-transform-origin:

50%100%;

-o-transform-origin:

50%100%;

transform-origin:

50%100%;

}

.dialog-wrapper.slipUp{

-webkit-transform:

rotateX(0deg);

-moz-transform:

rotateX(0deg);

-ms-transform:

rotateX(0deg);

-o-transform:

rotateX(0deg);

transform:

rotateX(0deg);

-webkit-animation-name:

contentSlipToUp;

-moz-animation-name:

contentSlipToUp;

-o-animation-name:

contentSlipToUp;

animation-name:

contentSlipToUp;

}

.dialog-wrapper.slipBottom{

-webkit-transform:

rotateX(90deg);

-moz-transform:

rotateX(90deg);

-ms-transform:

rotateX(90deg);

-o-transform:

rotateX(90deg);

transform:

rotateX(90deg);

-webkit-animation-name:

contentSlipToBottom;

-moz-animation-name:

contentSlipToBottom;

-o-animation-name:

contentSlipToBottom;

animation-name:

contentSlipToBottom;

}

复制代码

添加弹出或关闭窗口函数函数:

toggleDialog,传入一个布尔值,true表示弹窗,false表示关闭窗口。

代码如下:

复制代码

functiontoggleDialog(show){

varanimationClass=show?

"slipUp":

"slipBottom";

varanimation=function(){

varele=document.getElementById("dialog-face");

ele.className="dialog-face"+animationClass;

ele=document.getEentById("dialog");

ele.className="dialog-root"+animationClass;

ele=document.getElementById("dialog-wrapper");

ele.className="dialog-wrapper"+animationClass;

};

setTimeout(animation,100);

}

复制代码

完整代码

复制代码

DOCTYPEhtml>

CSS特殊效果

/*---------------------公共样式-------------------*/

body{

background:

#000;

}

.none{

display:

none;

}

.layout-root{

position:

fixed;

background:

#E74C3C;

height:

100%;

width:

100%;

z-index:

1000;

top:

0;

left:

0;

}

.layout-content{

line-height:

44px;

font-weight:

300;

font-size:

1em;

color:

#fff;

text-indent:

10px;

}

.layout-content.code{

line-height:

22px;

text-align:

center;

}

p{

display:

block;

-webkit-margin-before:

1em;

-webkit-margin-after:

1em;

-webkit-margin-start:

0px;

-webkit-margin-end:

0px;

}

a,button{

outline:

none;

}

button{

border:

none;

padding:

0.6em1.2em;

background:

#c0392b;

color:

#fff;

font-size:

1em;

cursor:

pointer;

display:

block;

margin:

3pxauto;

border-radius:

2px;

}

button:

hover,button:

active,button:

focus{

border:

none;

}

/*---------------------弹窗样式-------------------*/

.dialog-face{

position:

fixed;

background:

#A02418;

height:

100%;

width:

100%;

z-index:

1000;

top:

0;

left:

0;

-webkit-animation-duration:

500ms;

-moz-animation-duration:

500ms;

-o-animation-duration:

500ms;

animation-duration:

500ms;

}

.dialog-face.slipBottom[opacity="0"]{

display:

none;

}

.dialog-face.slipUp{

opacity:

0.7;

-webkit-animation-name:

dialogFaceSlipToUp;

-moz-animation-name:

dialogFaceSlipToUp;

-o-animation-name:

dialogFaceSlipToUp;

animation-name:

dialogFaceSlipToUp;

}

.dialog-face.slipBottom{

opacity:

0;

visibility:

hidden;

-webkit-animation-name:

dialogFaceSlipToBottom;

-moz-animation-name:

dialogFaceSlipToBottom;

-o-animation-name:

dialogFaceSlipToBottom;

animation-name:

dialogFaceSlipToBottom;

}

.dialog-root{

position:

fixed;

z-index:

2000;

left:

50%;

-webkit-animation-duration:

500ms;

-moz-animation-duration:

500ms;

-o-animation-duration:

500ms;

animation-duration:

500ms;

-webkit-perspective:

1300px;

-moz-perspective:

1300px;

perspective:

1300px;

}

.dialog-root.slipUp{

top:

50%;

opacity:

1;

-webkit-animation-name:

dialogSlipToUp;

-moz-animation-name:

dialogSlipToUp;

-o-animation-name:

dialogSlipToUp;

animation-name:

dialogSlipToUp;

-webkit-transform:

translate(-50%,-50%);

-o-transform:

translate(-50%,-50%);

-moz-transform:

translate(-50%,-50%);

-ms-transform:

translate(-50%,-50%);

transform:

translate(-50%,-50%);

}

.dialog-root.slipBottom{

top:

100%;

opacity:

0.3;

-webkit-animation-duration:

500ms;

-mo

举报
举报
版权申诉
版权申诉
word格式文档无特别注明外均可编辑修改;预览文档经过压缩,下载后原文更清晰! 立即下载
配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
CSS3 动画 特效 实现 效果
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:用CSS3动画特效实现弹窗效果.docx
链接地址:https://www.bdocx.com/doc/29690347.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开