我試圖定位一個背景圖像,以便它與現有的漸變背景對齊,該漸變背景相對定位到<html>
元素(即漸變圖像出現在瀏覽器寬度的92%處,不管您如何調整大小窗口)。<body>以外的背景圖像?
我通過將圖像放置在<div>
中,將圖像相對於<div>
定位,並將<div>
相對於瀏覽器窗口定位。
例如。
<body>
<div id="background-position-container">
<img src="images/bubbles.png" id="background-corner-decoration" />
</div>
</body>
有:
<style>
#background-position-container {
position: absolute;
width: 0px;
height: 0px;
top: 180px;
left: 92%;
}
#background-corner-decoration {
position: relative;
/* tweak the position of the image so it lines up with the gradient */
top: -176px;
left: -118px;
width: 216px;
height: 477px;
margin: 0px -118px -176px 0px;
}
</style>
這似乎很好地工作,但如果你水平縮小瀏覽器窗口,背景圖像會導致<body>
元素增長超過<html>
元素和滾動條出現。
我似乎能夠通過創建<body>
一個新的同級元素,並把裏面的<div>
解決這個問題:
<div id="background-page-container">
<div id="background-position-container">
<img src="images/bubbles.png" id="background-corner-decoration" />
</div>
</div>
<body>
</body>
,並補充說:
#background-page-container {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
overflow: hidden;
}
這至少在Firefox ,但這看起來並不是一個好的做法,我確信所有的瀏覽器都不能正確呈現。有沒有更好的方法來實現我想要的,同時將所有顯示元素都留在<body>
之內(也就是說,將背景圖像剪切在<body>
的邊緣而不是增長)?
感謝您的幫助,
gs。
編輯:按照要求,這裏有jsfiddles來說明這個問題:
- 這裏是它看起來像Hiigaran的解決方案:http://jsfiddle.net/kn36A/
- 這裏是對齊正確的解決方案,但會導致難看的滾動條時,窗口的尺寸重新調整:http://jsfiddle.net/w446Q/
- 這裏是「最好」的解決方案,我到目前爲止,但它似乎違反HTML最佳實踐(?):http://jsfiddle.net/H2PLr/
我已經用#3測試過的每個瀏覽器似乎都能夠正確渲染它 - 這種解決方案真的和我認爲的一樣糟糕嗎?
再次感謝!
gs。
嗨,謝謝你的回答。這種情況下的問題是,漸變的位置相對於瀏覽器寬度的92%。如果我將圖像定位爲92%的背景,則不會與漸變正確對齊。即使我調整了圖像的位置,使其排列齊整,但您只需調整瀏覽器窗口的大小,圖像就不再與漸變線對齊。所以我需要一種方法來定位圖像,使其不會相對於漸變的位置移動。 –
你能鏈接你試過的代碼的JSFiddle嗎? http://jsfiddle.net/ – Hiigaran
請參閱原文中的編輯。順便說一句,我錯了背景圖像相對於梯度移動,如果他們被設置爲相同的%位置,但是如果您嘗試通過將兩個元素放置在不同的%位置來排列它們(例如92%爲梯度但93.45 %圖像)。 –