Bootstrap Thumbnail裁剪和定位

时间:2015-06-09 15:03:56

标签: css twitter-bootstrap position overflow crop

我有3张不同尺寸的图像。当我在3个容器中显示它们时:

@foreach (var item in Model) {   
    <div class="avatar-container">
        <img class="avatar img-thumbnail" src="@Href("~/Content/Avatars/",item.Name+".jpg")" />  
    </div>
}

这是我的CSS文件:

div.avatar-container {
    display: inline-block;
    max-height: 50px;
    overflow: hidden;
    width: 70px;
}

.avatar {
    width: 100%;
    height:auto;
    overflow: hidden;
}

img-thumbnail 来自bootstrap.css(第368行)。过了一会儿,我设法裁剪图像(使用溢出属性),以便每个头像显示为70x50缩略图。

看看这3张返回的缩略图:image
[问题]

image1。它还裁剪了缩略图的漂亮底部 image2。我认为缩略图是正方形,而不是矩形 image3。如何裁剪到图像的中间(垂直和水平方式)?

1 个答案:

答案 0 :(得分:0)

这是我提出的,使用JavaScript和另一个缩略图容器。

@*HTML-----------------------------------------------*@
@foreach (var item in Model) {   
    <div class="avatar-container">
        <div class="img-thumbnail">
            <img class="avatar img-thumbnail" src="@Href("~/Content/Avatars/",item.Name+".jpg")" />  
        </div>
    </div>
}
@*JavaScript-----------------------------------------*@
//If the image has greater Width => display as landscape
<script>
        $(".avatar").each(function () {
            if (this.naturalWidth > this.naturalHeight) {
                $(this).addClass("landscape");
            }
        });
</script>
@*CSS------------------------------------------------*@
//That big container outside
div.avatar-container {
    display: inline-block;
    position: relative;
    width: 70px;
    height:70px;
    overflow: hidden;
}
//And here's the extra thumbnail container
div.img-thumbnail{
    width:100% !important;
    height:100%;
    background-color:#e1dada;
}
//This is for the actual image
.img-thumbnail{
    padding:1px !important;
}
//This one sets the image as a portrait
.avatar {
    position: absolute;
    top: 50%;
    left: 50%;
    height: 100%;
    width: auto;
    -webkit-transform: translate(-50%,-50%);
    -ms-transform: translate(-50%,-50%);
    -moz-transform: translate(-50%,-50%);
    -o-transform: translate(-50%,-50%);
    transform: translate(-50%,-50%);
}
//This one helps setting up the image horizontally
.landscape{
    width:100%;
    height:auto;
}

最终结果看起来像this