CSS & jQuery: 元素移动元素
CSS & jQuery: Element moving Element
我希望横幅在加载后从顶部向下移动到站点中。从顶部移入的元素应该将页面的其余部分向下推,以获得更多关注。这是我的代码的简化版本:
.hinweis-wrapper {
background: #00abe8;
padding: 25px;
}
.hinweis {
color: #fff;
margin: 0 auto;
}
p {margin: 0}
.rest-of-website {
height: 160px;
background-color: black
}
<div class="hinweis-wrapper">
<div class="hinweis">
<p>Content goes here</p>
</div>
</div>
<div class="rest-of-website">
</div>
我希望黑色元素在蓝色元素进入时向下移动。我尝试使用 transform: translateY(...)
绑定到 jQuery (document).ready(function()
但黑色元素仍保留在原处而蓝色元素是动画的。
您可以通过 jQuery 获得 banner/header 的高度,将该值乘以 -1 作为负数 margin-top
应用到 .hinweis-wrapper
并将其动画化为 0通过 jQuery.
为了避免该元素首先显示片刻(在通过 jQuery 应用负边距之前),您可以在 css 中对其应用 display: none
并更改它在 jQuery 函数中,先于其他内容加载文档。
$(document).ready(function() {
var offset = $(".hinweis-wrapper").outerHeight() * -1;
$(".hinweis-wrapper").css({display: 'block', marginTop: offset}).animate({
marginTop: '0px'
}, 1000);
})
body {
margin: 0;
}
.hinweis-wrapper {
background: #00abe8;
padding: 25px;
display: none;
}
.hinweis {
color: #fff;
margin: 0 auto;
}
p {
margin: 0
}
.rest-of-website {
height: 160px;
background-color: black;
color: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hinweis-wrapper">
<div class="hinweis">
<p>This is the header, which has dynamic height</p>
</div>
</div>
<div class="rest-of-website">
<p>This is the Website Content</p>
<p>(dynamic content)</p>
</div>
这是一个 Jquery 版本,它在页面加载后将黑色元素向下移动。要对其进行动画处理,您可以使用 .slideDown(duration, functionOnEnd())
document.addEventListener("DOMContentLoaded", ready);
function ready() {
$('.rest-of-website').css('margin-top', $('.hinweis-wrapper').prop("margin-top"));
}
.hinweis-wrapper {
background: #00abe8;
padding: 25px;
}
.hinweis {
color: #fff;
margin: 0 auto;
}
p {margin: 0}
.rest-of-website {
height: 160px;
background-color: black
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hinweis-wrapper">
<div class="hinweis">
<p>Content goes here</p>
</div>
</div>
<div class="rest-of-website">
</div>
我希望横幅在加载后从顶部向下移动到站点中。从顶部移入的元素应该将页面的其余部分向下推,以获得更多关注。这是我的代码的简化版本:
.hinweis-wrapper {
background: #00abe8;
padding: 25px;
}
.hinweis {
color: #fff;
margin: 0 auto;
}
p {margin: 0}
.rest-of-website {
height: 160px;
background-color: black
}
<div class="hinweis-wrapper">
<div class="hinweis">
<p>Content goes here</p>
</div>
</div>
<div class="rest-of-website">
</div>
我希望黑色元素在蓝色元素进入时向下移动。我尝试使用 transform: translateY(...)
绑定到 jQuery (document).ready(function()
但黑色元素仍保留在原处而蓝色元素是动画的。
您可以通过 jQuery 获得 banner/header 的高度,将该值乘以 -1 作为负数 margin-top
应用到 .hinweis-wrapper
并将其动画化为 0通过 jQuery.
为了避免该元素首先显示片刻(在通过 jQuery 应用负边距之前),您可以在 css 中对其应用 display: none
并更改它在 jQuery 函数中,先于其他内容加载文档。
$(document).ready(function() {
var offset = $(".hinweis-wrapper").outerHeight() * -1;
$(".hinweis-wrapper").css({display: 'block', marginTop: offset}).animate({
marginTop: '0px'
}, 1000);
})
body {
margin: 0;
}
.hinweis-wrapper {
background: #00abe8;
padding: 25px;
display: none;
}
.hinweis {
color: #fff;
margin: 0 auto;
}
p {
margin: 0
}
.rest-of-website {
height: 160px;
background-color: black;
color: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hinweis-wrapper">
<div class="hinweis">
<p>This is the header, which has dynamic height</p>
</div>
</div>
<div class="rest-of-website">
<p>This is the Website Content</p>
<p>(dynamic content)</p>
</div>
这是一个 Jquery 版本,它在页面加载后将黑色元素向下移动。要对其进行动画处理,您可以使用 .slideDown(duration, functionOnEnd())
document.addEventListener("DOMContentLoaded", ready);
function ready() {
$('.rest-of-website').css('margin-top', $('.hinweis-wrapper').prop("margin-top"));
}
.hinweis-wrapper {
background: #00abe8;
padding: 25px;
}
.hinweis {
color: #fff;
margin: 0 auto;
}
p {margin: 0}
.rest-of-website {
height: 160px;
background-color: black
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hinweis-wrapper">
<div class="hinweis">
<p>Content goes here</p>
</div>
</div>
<div class="rest-of-website">
</div>