2015-11-24 34 views
0

如果在<div>的內部如何「模仿」background-size:cover;(請參閱http://www.w3schools.com/cssref/playit.asp?filename=playcss_background-size&preval=cover)與<img>標記的行爲。我想有結構是這樣的:background-size:cover equivalent

<div style="width:100%, height=30%"> 
    <img ng-src="{{data.imageData}}"/> 
</div> 

對不起,如果我不是的話題很清楚,我不知道,如何把它更加清晰。

+0

有關添加'IMG {寬度什麼:100%; height:auto;}' – Chris

+0

其中之一取決於圖像及其容器的寬高比:'{width:100%; height:auto}'或'{width:auto;身高:100%}' –

回答

0

這裏是一個解決方案,但類似於@Moob。

div{ 
    width: 100%; 
    height: 200px; 
    position: relative; 
    overflow: hidden; 
} 
img { 
    display: block; 
    width: 100%; 
    position: absolute; 
    top: 0px; 
    left: 0px; 
    right: 0px; 
    bottom: 0px; 
} 

工作jsfiddle

+0

就是這樣,我一直在尋找。 @ Moob的解決方案也在工作。如果我有足夠的代表,我會贊成。 :) –

+0

此示例不會將圖像居中放置*或*使其垂直放置。它與將圖像寬度定義爲100%相同。請參閱:https://jsfiddle.net/14fs9ckL/1/證明 – Moob

+0

...和https://jsfiddle.net/14fs9ckL/3/ – Moob

0

您可以使用這樣的事情:

$(window).load(function() {  
 

 
\t var theWindow  = $(window), 
 
\t  $bg    = $("#bg"), 
 
\t  aspectRatio  = $bg.width()/$bg.height(); 
 
\t  \t \t \t  \t \t 
 
\t function resizeBg() { 
 
\t \t 
 
\t \t if ((theWindow.width()/theWindow.height()) < aspectRatio) { 
 
\t \t  $bg 
 
\t \t  \t .removeClass() 
 
\t \t  \t .addClass('bgheight'); 
 
\t \t } else { 
 
\t \t  $bg 
 
\t \t  \t .removeClass() 
 
\t \t  \t .addClass('bgwidth'); 
 
\t \t } 
 
\t \t \t \t \t 
 
\t } 
 
\t      \t \t \t 
 
\t theWindow.resize(resizeBg).trigger("resize"); 
 

 
});
#bg { position: fixed; top: 0; left: 0; } 
 
.bgwidth { width: 100%; } 
 
.bgheight { height: 100%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 

 
<img src="http://dummyimage.com/600x400/000/fff" id="bg" alt="">

見另一個備選方案:

https://css-tricks.com/perfect-full-page-background-image/

0

可以內div絕對定位的形象。使用min-widthmin-height使其至少與其容器一樣大。給它定位並使用margin:auto垂直和水平居中。最後使用overflow:hidden的div來隱藏溢出:

html, body { 
 
    height:100%; min-height:100%; 
 
} 
 
div { 
 
    border:1px solid black; 
 
    width:100%; 
 
    height:30%; 
 
    overflow:hidden; 
 
    position:relative; 
 
} 
 
div img { 
 
    display:block; 
 
    position:absolute; 
 
    margin:auto; 
 
    top:-100%; 
 
    right:-100%; 
 
    bottom:-100%; 
 
    left:-100%; 
 
    min-width:100%; 
 
    min-height:100%; 
 
}
<div> 
 
    <img src="http://lorempixel.com/400/400/" /> 
 
</div>

可能更容易在this jsFiddle看到,你可以調整面板,看看它的工作。 http://jsfiddle.net/jb40mLq3/

1

解決方案

您可以object-fitobject-position屬性來完成這個

將其設置爲covertop left分別

img { 
    display: block; 
    width:inherit; 
    height: inherit; 
    object-fit: cover; 
    object-position: top left; 
} 

如何將這些工作

這些CSS3性質在css-tricks.com解釋如下

目的配合屬性定義的元素如何響應其內容框的高度 和寬度。它旨在將其他可嵌入媒體格式的圖像,視頻和 與對象位置 屬性結合使用。對象適合讓我們通過 裁剪一個內嵌圖像,使我們能夠細密地控制它在框內如何擠壓和拉伸 。

有關詳細的使用,指link1link2