CSS3实现3D效果的弹出框

本文介绍了如何利用CSS3实现3D效果的弹出框,包括设置按钮的圆角和阴影,以及通过变换围绕中心实现弹出框的开启和关闭动画。文章详细阐述了关键帧动画在不同阶段的transform属性变化,以达到类似吊桥升降的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    首先,用css3做一个触发弹出框的按钮:

border-radius: 10px; /*圆角*/
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-o-border-radius: 10px;


box-shadow: 10px 10px 5px #888; /*阴影(x,y,w,color)*/
-webkit-box-shadow: 10px 10px 5px #888;
-moz-box-shadow: 10px 10px 5px #888;
-o-box-shadow: 10px 10px 5px #888;

    我是将弹出框作为单独的文件通过iframe显示的,也可以做一个div和按钮放在同一个页面。单独的文件的好处在于,真的使用到一个网站的时候,弹出框可以做一个单独的插件,避免每个页面都写弹出框的重复代码。

document.getElementById("dialog").src = "dialog.html";
document.getElementById("dialogFrame").style.display = "block";


    弹出框的处理:

        1、要设置变换围绕的中心:transform-origin: 50% 100%

        2、绑定弹出框出现时的动作myAction:

$blackboard.setAttribute("class", "show")

#blackboard.show{
animation: myAction 1s ease-in-out;
-webkit-animation: myAction 1s ease-in-out;
-moz-animation: myAction 1s ease-in-out;
-ms-animation: myAction 1s ease-in-out;
-o-animation: myAction 1s ease-in-out;
}


         @keyframes myAction{
0% {transform: perspective(1000px) rotate3d(1,0,0,90deg);}
100% {transform: perspective(1000px) rotate3d(1,0,0,0deg);}
}

        3、绑定弹出框关闭时的动作closeAction

#blackboard.hide{
animation: closeAction 1s ease-in-out;
-webkit-animation: closeAction 1s ease-in-out;
-moz-animation: closeAction 1s ease-in-out;
-ms-animation: closeAction 1s ease-in-out;
-o-animation: closeAction 1s ease-in-out;
}


@keyframes closeAction{
0% {transform: perspective(1000px) rotate3d(1,0,0,0deg);}
100% {transform: perspective(1000px) rotate3d(1,0,0,90deg);}
}


        这时,你会发现打开弹出框的时候,弹出框是从水平方向抬起,类似古代城墙的吊桥被抬起的效果。而关闭弹出框时,呈现吊桥被放下的效果,但是在结束的时候,又会回到被完全抬起的状态。因为动画结束时,是会回到初始的状态。因此在结束时,要修改弹出框的样式,使它呈现平躺状态:

$blackboard.style.transform = "rotate3d(1, 0, 0, 90deg)";
$blackboard.setAttribute("class", "hide");

setTimeout(function () {
window.parent.document.getElementById("dialog").src = "";
window.parent.document.getElementById("dialogFrame").style.display = "none";
}, 1000);

    效果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值