jQuery slideDown() 闪烁?
jQuery slideDown() flicker?
我有一个添加到页面的 "Welcome mat" 效果:
http://citymoveremovals.com.au/definitive-moving-guide/
我给了 div class 的 "welcome-mat"
CSS:
body.hero-content-2 div.welcome-mat {
display: none;
height: 0px;
}
jQuery脚本:
<script>
(function($) {var visitedBefore = Cookies.get('Definitive Guide');
if (visitedBefore >= 0) {
// page has been visited, so don't show the welcome mat
//Cookies.remove('Definitive Guide');
} else {
// Used to create a welcome mat effect when page is first loaded
resizeEvent();
$(window).bind("resize", function() {
resizeEvent();
});
function resizeEvent() {
// $("div.welcome-mat").css("display", "block");
// $("div.welcome-mat").css("height", $(window).height());
$("div.welcome-mat").hide().css("height", $(window).height()).slideDown(500);
$("div.welcome-mat").css("padding-top", $(window).height()/4);
}
$('.close-welcome-mat').on('click', function(e){
$("div.welcome-mat").slideUp(500, function() { $(this).remove(); } );
e.preventDefault();
});
// Add a cookie showing the page has been visited
//Cookies.set('Definitive Guide', '1', { expires: 14 });
}})(jQuery);
一切正常,除了填充没有添加到 div 的顶部。我有点困惑,因为如果我在 resizeEvent() 中使用两个注释掉的行,那么填充就会被添加。
此外,在 slideDown() 启动之前 div 出现然后消失。
我已经研究了几个小时,但还是不能完全确定!
提前感谢您的帮助,如果我遗漏了信息,请告诉我!
干杯,
约翰·德特莱夫斯
您需要将 'px' 添加到您的 css 作业中。试试这个:
$("div.welcome-mat").css("padding-top", $(window).height()/4 = "px");
演示:https://jsfiddle.net/IA7medd/1u4ohbuk/
您有两个解决方案:
第一个解决方案是将提供填充的脚本行移动到 div 上方,使其像这样向下滑动:
function resizeEvent() {
$("div.welcome-mat").css("padding-top", $(window).height()/4);
$("div.welcome-mat").hide().css("height", $(window).height()).slideDown(500);
}
第二种解决方案是像这样使用回调函数:
$("div.welcome-mat").hide().css("height", $(window).height()*3/4).slideDown(500, function(){
$("div.welcome-mat").css("padding-top", $(window).height()/4);
});
我有一个添加到页面的 "Welcome mat" 效果: http://citymoveremovals.com.au/definitive-moving-guide/
我给了 div class 的 "welcome-mat"
CSS:
body.hero-content-2 div.welcome-mat {
display: none;
height: 0px;
}
jQuery脚本:
<script>
(function($) {var visitedBefore = Cookies.get('Definitive Guide');
if (visitedBefore >= 0) {
// page has been visited, so don't show the welcome mat
//Cookies.remove('Definitive Guide');
} else {
// Used to create a welcome mat effect when page is first loaded
resizeEvent();
$(window).bind("resize", function() {
resizeEvent();
});
function resizeEvent() {
// $("div.welcome-mat").css("display", "block");
// $("div.welcome-mat").css("height", $(window).height());
$("div.welcome-mat").hide().css("height", $(window).height()).slideDown(500);
$("div.welcome-mat").css("padding-top", $(window).height()/4);
}
$('.close-welcome-mat').on('click', function(e){
$("div.welcome-mat").slideUp(500, function() { $(this).remove(); } );
e.preventDefault();
});
// Add a cookie showing the page has been visited
//Cookies.set('Definitive Guide', '1', { expires: 14 });
}})(jQuery);
一切正常,除了填充没有添加到 div 的顶部。我有点困惑,因为如果我在 resizeEvent() 中使用两个注释掉的行,那么填充就会被添加。
此外,在 slideDown() 启动之前 div 出现然后消失。
我已经研究了几个小时,但还是不能完全确定!
提前感谢您的帮助,如果我遗漏了信息,请告诉我!
干杯,
约翰·德特莱夫斯
您需要将 'px' 添加到您的 css 作业中。试试这个:
$("div.welcome-mat").css("padding-top", $(window).height()/4 = "px");
演示:https://jsfiddle.net/IA7medd/1u4ohbuk/
您有两个解决方案: 第一个解决方案是将提供填充的脚本行移动到 div 上方,使其像这样向下滑动:
function resizeEvent() {
$("div.welcome-mat").css("padding-top", $(window).height()/4);
$("div.welcome-mat").hide().css("height", $(window).height()).slideDown(500);
}
第二种解决方案是像这样使用回调函数:
$("div.welcome-mat").hide().css("height", $(window).height()*3/4).slideDown(500, function(){
$("div.welcome-mat").css("padding-top", $(window).height()/4);
});