我正在制作一个简单的图像库并完成一般结构,此时我只是想让 Jquery 工作,所以当单击 Div 时,里面的 img 被放大到完整并在屏幕上居中(就像大多数图像画廊一样)。
这是我使用引导程序的 HTML。
<div class = "row gallery">
<div class = "col-md-12 gallery_row">
<div class = "pic_div"><img src="test.png" class = "pic"></div>
<div class = "pic_div"><img src="test.png" class = "pic"></div>
<div class = "pic_div"><img src="test.png" class = "pic"></div>
<div class = "pic_div"><img src="test.png" class = "pic"></div>
</div>
</div>
到目前为止,当我尝试使用 Jquery 时,我已经能够在单击时调整图像大小,但它只能调整大小以适应div,而不是调整为初始大小。
var $pic_div = $('.pic_div');
$pic_div.on('click',function(){
$(this).find('img').css({'height' : '100%' , 'width' : '100%'});
});
我不确定如何让图像从div 中弹出,或者我必须加载相同的图像。我试图使添加新图片变得容易,所以我偏离了每个图像的特定命名。
这里还有包含div 的 CSS:
.pic_div{
width: 150px;
height: 150px;
margin: 25px;
overflow:hidden;
display:inline-block;
}
您也可以滚动自己的灯箱:
jsFiddle 演示
var pd = $('.pic_div');
pd.on('click',function(){
var i = $(this).find('img').clone();
$('#lightbox').html(i);
$('#lightbox img').css({'width':'100%','height':'auto'});
$('#overlay, #lightbox').fadeIn();
});
$('#overlay').click(function(){
$('#lightbox, #overlay').fadeOut();
$('#lightbox').html();
});
.pic_div{width: 150px;height: 150px;margin: 25px;overflow:hidden;display:inline-block;}
#lightbox{
position:absolute;
top:10%;
left:20%;
width:60%;
height:70%;
z-index:2;
display:none;
}
#overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:black;opacity:0.7;z-index:1;display:none;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class = "row gallery">
<div class = "col-md-12 gallery_row">
<div class = "pic_div"><img src="http://placeimg.com/50/50/animals" class = "pic"></div>
<div class = "pic_div"><img src="http://placeimg.com/50/50/animals" class = "pic"></div>
<div class = "pic_div"><img src="http://placeimg.com/50/50/animals" class = "pic"></div>
<div class = "pic_div"><img src="http://placeimg.com/50/50/animals" class = "pic"></div>
</div>
</div>
<div id="lightbox"></div>
<div id="overlay"></div>
你可以从div 组件中取出 class 属性并放入 image 组件,就像这样:
<div class = "row gallery">
<div class = "col-md-12 gallery_row">
<div><img class = "pic_div" src="test.png" class = "pic"></div>
<div><img class = "pic_div" src="test.png" class = "pic"></div>
<div><img class = "pic_div" src="test.png" class = "pic"></div>
<div><img class = "pic_div" src="test.png" class = "pic"></div>
</div>
</div>
这应该可以完成工作!
这是基本概念。CSS使用通常称为box方法(容器中的容器)。默认情况下,框或容器的宽度和高度不能大于其父容器的宽度和高度(因为框不适合)。
为了规避这种情况,您可以将包含div 的位置更改为绝对位置,即它相对于浏览器窗口而不是相对于其父容器定位。
此外,与其使用 jQuery 插入内联样式,不如为大图像切换 a 类集,这可以使用 css3 过渡进行动画和修饰。
这里有一个例子...
var $pic_div = $('.pic_div');
$pic_div.on('click', function() {
$(this).toggleClass("active");
});
.pic_div img {
max-width: 150px;
max-height: 150px;
display: block;
margin: auto;
}
.pic_div.active img {
max-width: 100%;
max-height: 100%;
}
.pic_div {
width: 150px;
height: 150px;
margin: 25px;
overflow: hidden;
display: inline-block;
background-color: white;
}
.pic_div.active {
position: absolute;
z-index: 999999;
width: 100%;
height: 100%;
left: 0px;
top: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row gallery">
<div class="col-md-12 gallery_row">
<div class="pic_div">
<img src="http://www.activedemo.co.za/OA/Images_Product/BIN373502(12).jpg" class="pic">
</div>
<div class="pic_div">
<img src="http://www.activedemo.co.za/OA/Images_Product/RAK05_amended(3).jpg" class="pic">
</div>
<div class="pic_div">
<img src="http://www.activedemo.co.za/OA/Images_Product/OA066(2).jpg" class="pic">
</div>
<div class="pic_div">
<img src="http://www.activedemo.co.za/OA/Images_Product/SF4310(7).jpg" class="pic">
</div>
</div>
</div>