图像超出父div的填充区域

时间:2017-02-08 06:18:56

标签: html css twitter-bootstrap modal-dialog responsive

我正在尝试制作缩略图。这是HTML代码:

<div class="product-preview">
    <div data-img-url="images/image7.jpg" class="p-thumbnail">
        <img src="images/image7.jpg" />
    </div><div data-img-url="images/image8.jpg" class="p-thumbnail">
        <img src="images/image8.jpg" />
    </div><div data-img-url="images/image9.jpg" class="p-thumbnail">
        <img src="images/image9.jpg" />
    </div><div data-img-url="images/image10.jpg" class="p-thumbnail">
        <img src="images/image10.jpg" />
    </div>
</div>

和css

.product-preview {
    margin-left: -5px;
    margin-right: -5px;
}
.product-preview .p-thumbnail {
    height: 120px;
    width: 25%;
    display: inline-block;
    padding: 10px 5px;
    overflow: hidden;
}
.p-thumbnail img {
    height: 100%;
    display: block;
    margin: 0 auto;
}    

如何修复以使img不会超过.p-thumbnail的填充区域?我在下面附上一张照片,希望我说清楚,以便有人能理解我想说的话!谢谢!

enter image description here

3 个答案:

答案 0 :(得分:2)

这是因为溢出属性只会从边框向外隐藏元素的子元素。如果要限制图像不超过内容框,则必须放置一些内部容器或使图像包含。

第一个选项

<div data-img-url="images/image7.jpg" class="p-thumbnail">
    <div class="imgcover">
       <img src="images/image7.jpg" />
    </div>
</div><div data-img-url="images/image8.jpg" class="p-thumbnail">
    <div class="imgcover">
       <img src="images/image7.jpg" />
    </div>
</div><div data-img-url="images/image9.jpg" class="p-thumbnail">
    <div class="imgcover">
       <img src="images/image7.jpg" />
    </div>
</div><div data-img-url="images/image10.jpg" class="p-thumbnail">
    <div class="imgcover">
       <img src="images/image7.jpg" />
    </div>
</div>

附加CSS

div.imgcover{
    width: 100%;
    overflow: hidden;
}

如果您希望图像在imgcover div上居中,可以使用

.p-thumbnail{
    position: relative;
}

.p-thumbnail img {
    max-height: 100%;
    max-width: 100%;
    display: block;
    margin: 0 auto;
    position: relative;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
}

第二个选项

将图像样式更改为此以模拟对象适合:包含

.product-preview .p-thumbnail {
    height: 120px;
    width: 25%;
    display: inline-block;
    padding: 10px 5px;
    overflow: hidden;
    text-align: center;
}
.p-thumbnail img {
    max-height: 100%;
    max-width: 100%;
    display: block;
    margin: 0 auto;
}

答案 1 :(得分:0)

首先想到的简单解决方案是您可以在父元素上使用overflow: hidden;
但是,如果您希望图像在缩略图上完全可见,则可以将此代码用于图像标记
{ width: 100%; object-fit: cover; }

答案 2 :(得分:0)

你想要的是

.product-preview img{
  max-width: 100%;
  height: auto; /* instead of height: 100%; */
}

并尝试使用具有相同宽度和高度的图像,以便您没有任何问题