1 回答

TA貢獻(xiàn)1862條經(jīng)驗 獲得超6個贊
背景div擴(kuò)展超出容器限制的原因是,通過使用transform: translate(...),您將背景移到容器之外。
如果您不想將背景移動到容器之外,而是想要移動背景并剪裁其邊緣以匹配容器,則可能需要使用某種形式的 ,這可以防止容器顯示overflow: hidden其邊界之外的任何內(nèi)容。
對于您發(fā)布的代碼,您只需添加overflow: hidden到body元素即可:
body {
overflow: hidden
}
overflow: hidden但是,如果您需要允許頁面其他地方溢出,您可能不一定要添加到正文。在這種情況下,您可以將您的#home和#menu部分包裝在div已overflow: hidden應(yīng)用于它的 中。請注意,您還需要添加position: relative此內(nèi)容div才能使其正常工作。
例如,以下是 HTML 的更新版本:
<div class="container">
<section id="home">
<div id="home-background"></div>
<div id="greeting">
<h1>Hello</h1>
</div>
</section>
<section id="menu">
<ul>
<li><a href="#home">Home</a></li>
</ul>
</section>
</div>
以及相應(yīng)的CSS:
.container {
overflow: hidden;
position: relative;
}
這是演示此解決方案的代碼片段:
var lFollowX = 0,
lFollowY = 0,
x = 0,
y = 0,
friction = 1 / 60;
function moveBackground() {
x += (lFollowX - x) * friction;
y += (lFollowY - y) * friction;
translate = 'translate(' + x + 'px, ' + y + 'px) scale(1.1)';
$('#home-background').css({
'-webit-transform': translate,
'-moz-transform': translate,
'transform': translate
});
window.requestAnimationFrame(moveBackground);
}
$(window).on('mousemove click', function(e) {
var lMouseX = Math.max(-100, Math.min(100, $(window).width() / 2 - e.clientX));
var lMouseY = Math.max(-100, Math.min(100, $(window).height() / 2 - e.clientY));
lFollowX = (20 * lMouseX) / 100; // 100 : 12 = lMouxeX : lFollow
lFollowY = (10 * lMouseY) / 100;
});
moveBackground();
.container {
overflow: hidden;
position: relative;
height: 300px;
}
#home-background {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: url("https://www.tokkoro.com/picsup/5746854-geometry-wallpapers.jpg") no-repeat center center;
background-size: cover;
z-index: -1;
}
#menu {
display: flex;
justify-content: center;
align-items: center;
background-color: #251524;
height: auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<section id="home">
<div id="home-background"></div>
<div id="greeting">
<h1>Hello</h1>
</div>
</section>
<section id="menu">
<ul>
<li><a href="#home">Home</a></li>
</ul>
</section>
</div>
- 1 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報