如何让CSS / JavaScript弹出窗口过渡?

treboothjD6

我试图弄清楚如何使用CSS和少量JavaScript制作div弹出窗口。我已经能够单击一个链接,弹出一个框,并且在它周围的屏幕上,它是灰色的,如果您单击灰色,则该弹出窗口会消失。但是,我不能让它淡入淡出,而不仅仅是立即出现。这是我的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <script type="text/javascript">
            function showPopUp(el) {
                var cvr = document.getElementById("cover")
                var pop = document.getElementById(el)
                cvr.style.display = "block"
                pop.style.display = "block"
                pop.style.opacity = "1"
                pop.style.webkitTransform = "scale(1, 1)"
                if (document.body.style.overflow = "hidden") {
                    cvr.style.width = "100%"
                    cvr.style.height = "100%"
                }
            }
            function closePopUp(el) {
                var cvr = document.getElementById("cover")
                var pop = document.getElementById(el)
                cvr.style.display = "none"
                pop.style.display = "none"
                document.body.style.overflowY = "scroll"
            }
        </script>
        <style type="text/css">
            #cover {
                display:none;
                position:absolute;
                left:0;
                top:0;
                width:100%;
                height:100%;
                background:gray;
                filter:alpha(Opacity = 50);
                opacity:0.5;
                -moz-opacity:0.5;
                -khtml-opacity:0.5;
            }

            #popup {
                display:none;
                left:100px;
                top:100px;
                width:300px;
                height:300px;
                position:absolute;
                z-index:100;
                background:white;
                padding:2px;
                border:1px solid gray;
                opacity:0;
                -webkit-transform:scale(.5, .5);
                -webkit-transition:all .5s ease-in-out;
            }

            #cover-link {
            position:absolute;
            width:100%;
            height:100%;
            left:0;
            top:0;
            }
        </style>
    </head>
    <body>
        <div id="cover"><a id="cover-link" href="#" onclick="closePopUp('popup');"></a></div>
        <div id="popup">
            Some Words
        </div>
        <a href="#" onclick="showPopUp('popup');">Show</a>
    </body>
</html>

重要的部分是这些:

从JavaScript:

pop.style.opacity = "1"
pop.style.webkitTransform = "scale(1, 1)"

从CSS:

opacity:0;
-webkit-transform:scale(.5, .5);
-webkit-transition:all .5s ease-in-out;

一切似乎都可以正常工作,但是-webkit-transform:scale(.5, .5);pop.style.webkitTransform = "scale(1, 1)"JavaScript中的会被忽略,而-webkit-transition:all .5s ease-in-out;正义什么也没做。如果您认为自己知道某些可行的方法,则可以复制上面的代码块并进行更改;否则,请执行以下步骤。它已经是一个完整的HTML文件。

这个想法是让它淡出这样的效果:

<html>
    <head>
        <style type="text/css">
            .message {
            left:100px;
            top: 100px;
            width:300px;
            height:300px;
            position:absolute;
            z-index:100;
            background:white;
            padding:2px;
            border:1px solid gray;
            opacity:0;
            -webkit-transform: scale(.95, .95);
            -webkit-transition: all .5s ease-in-out;
            }

            .message p {
            padding:80px 0;
            border-radius:3px;
            }

            .info:hover + .message {
            opacity: 1;
            -webkit-transform: scale(1, 1);
            }
        </style>
    </head>
    <body>
        <div class="info">
            <p>Hover</p>
        </div>
        <div class="message">
            <p>A Simple Popup</p>
        </div>
    </body>
</html>
埃文

您遇到的主要问题是您要从迁移display: nonedisplay: block过渡将不会那样工作。由于您已经必须opacity隐藏div并且还在使用position: absolute,因此我认为没有充分的理由不将div留在display: block

我还认为,最好将显示div时想要的div的属性移动到CSS类中,并在适当的触发器中添加和删除该类,从而为您提供最好的服务。这样一来,将来也可以更轻松地对其进行修改。

使用建议的更改创建了一个jsBin

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript / HTML / CSS弹出窗口

如何使这个JavaScript弹出窗口模式?

如何使用javascript打印弹出窗口的内容?

如何同时打开多个JavaScript弹出窗口?

如何使用JavaScript刷新弹出窗口

javascript:如何在弹出窗口中编写

如何使用JavaScript关闭弹出窗口

如何在Javascript中创建弹出窗口?

如何在使用 javascript 和 css 弹出的消息上设置动画或使用过渡?

图片未显示在弹出窗口中(CSS,HTML,Javascript)

如何在页面加载/使用Javascript时自动打开纯CSS弹出窗口?

如何使用CSS和或JavaScript在链接上的鼠标悬停时创建登录弹出窗口

如何使我的 HTML、CSS 和 JavaScript 弹出窗口具有响应性?

如何使用Nokgiri或Mechanize确认JavaScript弹出窗口

如何断开JavaScript弹出窗口与打开器的连接

用户使用javascript键入时如何显示弹出窗口?

如何通过Excel VBA单击JavaScript确认弹出窗口

如何使用javascript单击按钮/图标弹出窗口

如何在新打开的弹出窗口上执行Javascript或jQuery?

如何使用 Javascript 制作动态 html 弹出窗口?

如何使用javascript打开超赞的mvc弹出窗口

如何使用Javascript打开本地主机弹出窗口?

如何获得平滑的JavaScript弹出窗口大小调整

如何在Javascript的弹出窗口中添加文本?

如何禁用Chrome中的javascript弹出窗口/警报?

如何在Selenium WebDriver中处理Javascript Alert /弹出窗口

如何为单击弹出窗口添加 Jquery 或 javascript 函数?

如何在asp.net页面中使用javascript创建弹出窗口-无法在javascript弹出窗口中传递值

如何刷新弹出窗口