2017-02-28 63 views
1

這可能嗎?下面的代碼複製了一半的行爲,圖像將始終覆蓋div。問題是,如果div小於img的尺寸,它將始終在兩個軸上被裁剪。模仿背景大小:封面與img在一個div與CSS只有

max-width: 100%max-height: 100%添加到img會導致圖像扭曲。有沒有什麼辦法可以解決這個問題,而不使用JavaScript/background-img

div { 
 
    background-color: red; 
 
    position: relative; 
 
    width: 300px; 
 
    height: 200px; 
 
    overflow: hidden; 
 
} 
 

 
div.tall { 
 
    height: 400px; 
 
} 
 

 
div.wide { 
 
    width: 400px; 
 
} 
 

 
img { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
    min-width: 100%; 
 
    min-height: 100%; 
 
} 
 

 
img.tallCat { 
 
    max-width: 100%; 
 
} 
 

 
img.wideCat { 
 
    max-height: 100%; 
 
}
Expected output: 
 
<div style="background-image:url(https://i.stack.imgur.com/XCOwb.jpg);background-size:cover;"> 
 
</div> 
 

 
Actual output: 
 
<div> 
 
    <img src="https://i.stack.imgur.com/XCOwb.jpg"> 
 
</div> 
 

 
Actual output with max-width: 
 
<div class="tall"> 
 
    <img class="tallCat" src="https://i.stack.imgur.com/XCOwb.jpg"> 
 
</div> 
 

 
Actual output with max-height: 
 
<div class="wide"> 
 
    <img class="wideCat" src="https://i.stack.imgur.com/XCOwb.jpg"> 
 
</div>

回答

1

還有就是object-fit參數,你想要做(你可以將其設置爲covercontain)的東西,但它不是由IE /邊緣尚不支持:http://caniuse.com/#search=fit

增加:看看這個設置片段(圖像標記內提供的原始圖像的尺寸,對於具有width: 100%圖像CSS規則):

div { 
 
    background-color: blue; 
 
    position: relative; 
 
    width: 300px; 
 
    height: 200px; 
 
    margin-bottom: 50px; 
 
} 
 

 
img.x { 
 
    width: 100%; 
 
    object-fit: contain; 
 
} 
 
img.y { 
 
    width: 100%; 
 
    object-fit: cover; 
 
}
<div> 
 
    <img src="http://placehold.it/500x200/fa0" width="500" height="200" class="x"> 
 
</div> 
 
<div> 
 
    <img src="http://placehold.it/500x200/fa0" width="500" height="200" class="y"> 
 
</div>

+0

努力做到這一點,使用最新的Chrome瀏覽器和Firefox ... – Eamonn

+0

沒關係,您將'object-fit'應用於'img',並提供寬度/高度。謝謝。 – Eamonn

+0

我添加了一個片段 – Johannes

0

隱藏圖像(visibility:hiddenopacity:0),並將其應用到div作爲你的標記的背景圖像。當然,如果你這樣做,它會引發你爲什麼需要img元素的問題。

+0

埃我特別試圖避免使用內聯樣式,同時擁有動態背景圖像。 – Eamonn

+0

@Eamonn - 你爲什麼要避免內聯風格?爲了達到這個目的,我在很多地方使用了'background-image'。 – Adam

+0

因爲它們很臭,我不喜歡它們。我希望能夠將屬性和其他內容應用於實際的img標記,因此我最好將其構建爲'

'。 – Eamonn