У меня есть веб-страница, с которой, если вы прокрутите страницу более чем на 175 пикселей, появится окно "Назад на верх", чтобы вы могли вернуться назад к верхнему элементу.
Поэтому для этого я установил div для "BackToTop" с "Видимость: скрытый", чтобы он не отображался на веб-сайте при загрузке страницы, так как вы уже будете в верхней части страницы.
Затем, как только вы прокрутите 175px, div "BackToTop" исчезнет.
Только это не так. Сначала он появляется мгновенно, затем исчезает, затем снова исчезает при первой загрузке. После этого он работает правильно.
Кто-нибудь с любыми идеями о том, как исправить?
JS FIDDLE: http://jsfiddle.net/AuLFR/1/
HTML:
<div id="BackToTop">Back To Top</div>
CSS:
html {
height:1000px;
}
#BackToTop {
border-radius:10px;
padding:5px;
background-color:#ccc;
display:block;
visibility:hidden;
position:fixed;
top:10px;
text-align:center;
width:120px;
left: 50%;
margin-left:-60px;
}
JAVASCRIPT:
$(window).scroll(function () {
if ($(this).scrollTop() > 175) {
$('#BackToTop').css({
'visibility': 'visible'
});
$("#BackToTop").fadeIn("slow", function () {});
} else {
// $('#BackToTop').css({'visibility': 'hidden'});
$("#BackToTop").fadeOut("slow", function () {});
}
});
Использовать display:none
поскольку работа fadeIn/Out
не имеет видимости.
$('#BackToTop').css({
'visibility': 'visible'
});
Код .css()
выше, быстро меняет видимость элемента.
#BackToTop {
display:none
}
Если вы хотите, чтобы он исчезал, вы должны изменить свойство непрозрачности, а не наглядность; Кроме того, определите объекты jQuery вне обработчика событий scoll, иначе это может стать дорогостоящим.
HTML
<div id="BackToTop">Back To Top</div>
JS
var $back_to_top = $('#BackToTop');
$(window).on('scroll', function () {
if (window.scrollY > 175) {
$back_to_top.addClass('active');
} else {
$back_to_top.removeClass('active');
}
});
CSS
html {
height:1000px;
}
#BackToTop {
border-radius:10px;
padding:5px;
background-color:#ccc;
display:block;
position:fixed;
top:10px;
text-align:center;
width:120px;
left: 50%;
margin-left:-60px;
opacity: 0;
transition-duration: 600ms;
}
#BackToTop.active {
opacity: 1;
}
здесь скрипка: http://jsfiddle.net/AuLFR/6/
Я проверил ваш css prop, чтобы увидеть, было ли это видно, прежде чем пытаться скрыть его, используя это:
$(window).scroll(function () {
console.log($(this).scrollTop());
if ($(this).scrollTop() > 175) {
$('#BackToTop').css({
'visibility': 'visible'
});
$("#BackToTop").fadeIn("slow", function () {});
} else {
// $('#BackToTop').css({'visibility': 'hidden'});
if($('#BackToTop').css('visibility') == 'visible'){
$("#BackToTop").fadeOut("slow", function () {});
}
}
});