我尝试对图像进行覆盖,但是有两个问题:



$(document).ready(function () {
  $('#boximmagini img').click(function(){
    $("#immagine img:last-child").remove()
    var source= $(this).attr('src');
    $('#immagine').append("<img src="+source+"/>")
    $('#overlay').fadeIn('fast');
    $('#box').fadeIn('slow');
  });
  $(".chiudi").click(function(){
    $('#overlay').fadeOut('fast');
    $('#box').hide();
  });
  $("#overlay").click(function(){
    $(this).fadeOut('fast');
    $('#box').hide();
  });
});

.chiudi{
  cursor:pointer;
}
.overlay{
  position:fixed;
  top:0px;
  bottom:0px;
  left:0px;
  right:0px;
  z-index:100;
  cursor:pointer;
}

#box{
  width:600px;
  height:400px;
  display:none;
  z-index:+300;
  position:absolute;
  left:30%;
  top:20%;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="overlay" id="overlay" style="display:none"></div>
<div id="box">
  <div class="chiudi">CHIUDI</div><br>
  <div id="immagine"></div>
</div>
<div id="boximmagini">
  <div><b>Clicca</b></div>
  <img src="http://i62.tinypic.com/icpph2.jpg" class="imgoverlay" style="width: 31%" />
</div>





问题:


我不知道#box在屏幕中间的位置。左:30%不在屏幕中间。我读过其他问题,很多用户建议使用相对位置的div并在其中使用绝对位置的div。但就我而言,我认为那是不可能的。
当框淡入,并且我调整窗口大小时,框是“出”窗口(原因是left属性)


我希望你能帮助我!

对不起我的英语不好

谢谢!

最佳答案

在这个小提琴中,我既设置了不断变化的颜色,又确保它始终位于中间,设置left:50%和translate3d -50%总是将其设置为中心,因为位置是绝对的,如果您还希望垂直定位的话对top相同,对y(第二个参数)为-50%:http://jsfiddle.net/whb3mpg4/7/

#box{
  width:600px;
  height:400px;
  display:none;
  z-index: 300;
  position:absolute;
  top:20%;
  left:50%;
  transform: translate3d(-50%,0,0);
}

#box img{
    position:absolute;
    left:50%;
    transform: translate3d(-50%,0,0);
}


我知道我可以为两者使用相同的CSS类,但我想保持清晰,不要更改JS或CSS定义

希望这对您有所帮助。

关于javascript - 图片叠加层不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32668391/

10-09 17:42