javascript - 使用 JavaScript 和 CSS 从中心调整模态大小

标签 javascript jquery css

我有以下 fiddle 示例:http://jsfiddle.net/c2mmQ/

当我点击显示链接时,我使用 jQuery 显示模态,然后使用 CSS 动画将其淡入并放大。在模态内,我有另一个调整模态大小的链接。这个想法是它应该从中间调整大小,所以它看起来像在放大(尽管我们没有使用缩放,因为我们实际上是在改变模态的尺寸)。想想弹出窗口在 Xbox 360 上是如何工作的。

发生了两个问题.. 首先,虽然调整大小确实支持 css 转换,但它们不会触发事件 transitionend,因此中心代码不会在调整大小后运行。第二个问题是调整大小不是从中心发生的……

关于如何做到这一点有什么想法吗?

代码如下:

jQuery.fn.centerImage = function () {

    var win = window.parent;

    var element = $(this);

    var centerElement = function () {
        element.css("position", "absolute");
        element.css("top", ( (($(win).height()) - element.outerHeight()) / 2));
        element.css("left", ( (($(win).width()) - element.outerWidth()) / 2));
    }

    element.bind('centerElement', centerElement).trigger('centerElement');

    $($(win)).bind('resize', function () {
        element.trigger('centerElement');
    });

    return element;
}

$(document).ready(function(){

    $('.show').on('click', function(e){

        $('.modal').centerImage().addClass('show');

    });

    $('.resize').on('click', function(e){

        $('.modal').width(640).height(480);

        $('modal').on('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', function() {
            $('.modal').centerImage();
        });

    });

});

.modal
{
    width: 480px;
    height: 320px;
    background: #ffffff;
    box-shadow: rgba(0,0,0,.6) 0 0 16px;

    -webkit-transform: scale(0.7);
    -moz-transform: scale(0.7);
    -ms-transform: scale(0.7);
    transform: scale(0.7);
    opacity: 0;
    -webkit-transition: all 0.3s;
    -moz-transition: all 0.3s;
    transition: all 0.3s;
}

.modal.show
{
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    -ms-transform: scale(1);
    transform: scale(1);
    opacity: 1;
}

最佳答案

你会踢自己的!

$('modal').on('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', function() {
            $('.modal').centerImage();
        });

应该是

$('.modal').on('transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd', function() {
            $('.modal').centerImage();
        });

http://jsfiddle.net/robschmuecker/c2mmQ/1/

关于javascript - 使用 JavaScript 和 CSS 从中心调整模态大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594895/

相关文章:

javascript - 如何在加载网页时自动运行自定义 JavaScript 代码?

javascript - react : Grab change on input value done by jQuery

html - 我的 Bootstrap 导航栏按钮不起作用

jquery - 如何定位没有类或 id 但具有所有这些特定样式属性的 div

css 不工作背景悬停事件 - 不是语法问题

javascript - 什么是扁平化嵌套对象的简洁 es6 方法?

javascript - 'compile' javascript的方法在页面执行期间隐藏源代码?

javascript - 在Primefaces中,如何通过javascript中的小部件类型获取小部件

javascript - js Node -socket.io聊天修改

javascript - 如何禁用 h2 标签的 cufon 样式?