如何在加载时将模态框放置在准确位置上

时间:2014-10-10 07:57:19

标签: javascript jquery html twitter-bootstrap

我试图找到如何做到这一点,但不幸的是我没有发现任何类似的东西。所以我需要动态计算在twitter模式框中加载的每个图像的位置,并将框放在我制作的工具栏元素下面。情况就像在图像中。工具栏框的高度为40px,这应该使用javascript来完成,而不是固定位置或者这样做。

enter image description here

Fiddle here

的js

$(document).ready(function () {
    // - jQuery
    // Swipe feature
    $('#myCarousel').swiperight(function () {
      $('#myCarousel').carousel('prev');
    });
    $('#myCarousel').swipeleft(function () {
      $('#myCarousel').carousel('next');
    });

    // Carousel pause
    $('.carousel').carousel({
      pause: true,
      interval: false
    });

    // Additional toolbar with "close" button appears
    $(window).on('shown.bs.modal', function () {
      $('modal').modal('show');
      $('#toolbar').css('display', 'block'); //.css('position','fixed')
      console.log('fires toolbar');
    });

    $(window).on('hidden.bs.modal', function () {
      $('modal').modal('show');
      $('#toolbar').css('display', 'none'); //.css('position','absolute')
      console.log('closes toolbar when modal is closed');
    });

    // Closes modal on toolbar
    $('.trigger').click(function () {
      $('.modal').modal('hide');
    });

    // Load dynamic images
    $('.modal-trigger img').click(function (e) {
      $('#myModal img').attr('src', $(this).attr('data-img-url'));
    });
});

1 个答案:

答案 0 :(得分:2)

我认为你正在使它变得比它需要的复杂得多。如果我理解正确,您希望在显示模态时图像顶部有一个工具栏,并且您希望图像位于工具栏正下方而没有额外的间距。假设这是正确的,你可以使用css来简单地修改模态的现有外观。

DEMO

<强> CSS

.modal.fade.in {
    top: 0;
}
.modal {
    width: 100%;
    left: 0;
    right: 0;
    margin: 0;
    background-color: transparent;
    border: none;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    border-radius: 0;
    outline: none;
    -webkit-box-shadow: none;
    -moz-box-shadow: none;
    box-shadow: none;
}
.modal-header {
    background-color: #e3e3e3;
    background-image: linear-gradient(to bottom, #ffffff, #b8b8b8);
    background-repeat: repeat-x;
    border-color: #a9a9a9;
    border-image: none;
    border-radius: 0;
    height: 40px;
}
.modal-body {
    padding: 0;
    max-height: 100%;
}
.modal-body img {
    display: block;
    margin: 0 auto;
}
button.close {
    font-size: 14px;
    line-height: 40px;
    opacity: 1;
}

<强> HTML:

<div id="myCarousel" class="carousel slide">
    <div class="carousel-inner">
        <div class="item active"> 
            <a data-toggle="modal" href="#myModal" class="modal-trigger">
                <img src="http://placehold.it/350x150/e8117f/fff&text=Image%201" alt="" data-img-url="http://placehold.it/500/e8117f/fff&text=Image%201" />
            </a>
        </div>
        <div class="item"> 
            <a data-toggle="modal" href="#myModal" class="modal-trigger">
                <img src="http://placehold.it/350x150/9ACD32/fff&text=Image%202" alt="" data-img-url="http://placehold.it/400/9ACD32/fff&text=Image%202" />
            </a>
        </div>
        <div class="item"> 
            <a data-toggle="modal" href="#myModal" class="modal-trigger">
                <img src="http://placehold.it/350x150/FF6347/fff&text=Image%203" alt="" data-img-url="http://placehold.it/300/FF6347/fff&text=Image%203" />
            </a>
        </div>
        <div class="item"> 
            <a data-toggle="modal" href="#myModal" class="modal-trigger">
                <img src="http://placehold.it/350x150/008080/fff&text=Image%204" alt="" data-img-url="http://placehold.it/500/008080/fff&text=Image%204" />
            </a>
        </div>
    </div> 
    <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a>
    <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a>
</div>

<!-- Modal window -->
<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div id="toolbar" class="modal-header">
                <button class="close" data-dismiss="modal">Schließen</button>
            </div>
            <div class="modal-body">
                <img data-dismiss="modal" aria-hidden="true" src="#" class="image" alt="" />
            </div>
        </div>
    </div>
</div>

P.S。在你的小提琴中,你链接bootstrap.min.js,然后分别链接转换和模态的文件。这是不必要的。 bootstrap.min.js文件包含一个文件中的所有javascript插件。