[英]How to set div height to auto-adjust for background size?
我正在建立一個響應站點。 我的問題是如何獲取div以自動調整為其設置的背景大小,而無需為其設置特定的高度(或最小高度)?
<style>
#master_head{
width:99%;
min-width:640px;
border:1px solid red;
min-height:50px;
background: url(http://nokiaindiacontest.com/ashalcm/images/nokia-asha-Width-banner.png) no-repeat top;
background-size: contain;
height:540px;
}
</style>
<div id="master_head"> </div>
演示鏈接: -http : //jsfiddle.net/rushijogle/5fray/2/
提前感謝:)
工作演示: http : //jsfiddle.net/gKQ7e/
調整大小后,這將拉伸並使div保持在瀏覽器的頂部和底部。
移除height: 540px
加:
position: fixed;
top: 0;
bottom: 0;
#master_head{
width:99%;
min-width:320px;
border:1px solid red;
min-height:50px;
background: url(http://nokiaindiacontest.com/ashalcm/images/nokia-asha-Width-banner.png) no-repeat top;
background-size: contain;
position: fixed;
top: 0;
bottom: 0;
}
實際上,沒有辦法使用CSS自動調整div高度以自動調整背景大小。
但是,您可以使用javascript(在加載背景圖片之后)執行此操作。
<!DOCTYPE html>
<html>
<body>
</body>
<div id='hello' style="background:url(http://nokiaindiacontest.com/ashalcm/images/nokia-asha-Width-banner.png);">
</div>
<script type="text/javascript" charset="utf-8">
window.onload = function() {
var imageSrc = document
.getElementById('hello')
.style
.backgroundImage
.replace(/url\((['"])?(.*?)\1\)/gi, '$2')
.split(',')[0];
var image = new Image();
image.src = imageSrc;
var width = image.width,
height = image.height;
document.getElementById('hello').style.height = height+'px';
document.getElementById('hello').style.width= width+'px';
}
</script>
</html>
無論如何,通過將圖像包含在img標記下且可見性設置為隱藏的情況下,仍然可以通過不帶JavaScript的方式來實現此目的,這是一種效率低下的方法:
<div id='hello' style="background:url(http://nokiaindiacontest.com/ashalcm/images/nokia-asha-Width-banner.png);">
<img src="http://nokiaindiacontest.com/ashalcm/images/nokia-asha-Width-banner.png" style="visibility:hidden"/>
</div>
我已經處理了一段時間,並決定編寫一個jquery插件來解決此問題。 該插件將找到所有帶有“ show-bg”類的元素(或者您可以將其傳遞給您自己的選擇器)並計算其背景圖像尺寸。 您所要做的就是包括以下代碼,用class =“ show-bg”標記所需的元素,然后運行:
$(document).heightFromBG();
請享用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.