Пытаюсь применить скрипт, который должен позволять плавающей кнопке появляться после прокрутки определенного количества пикселей, но он не работает

#javascript

#javascript

Вопрос:

 <script>

document.addEventListener
    ('DOMContentLoaded', 
    function() {
jQuery(function($){
$(document).scroll(function() 
    {
var y = $(this).scrollTop();
if (y > 1810 amp;amp; $(window
    ).scrollTop()   $(window
    ).height() < $(document
    ).height() - 100) {
$('#addcartsection').addClass
    ('viewaddcart')
} else {
$('#addcartsection'
    ).removeClass
    ('viewaddcart')
}
});
$('#addcartbutton').click
    (function(){
$('.single_add_to_cart_button'
    ).click();
$('html, body').animate({
scrollTop: $('.product_title'
    ).offset().top
}, 'slow');
});
});
});
</script>

<style>
#addcartsection{
position: fixed;
bottom: 0;
width: 100vw;
z-index: 98;
-webkit-transition: transform 
    0.34s ease;
transition : transform 0.34s
    ease;
transform: translateY(0px); /*adjust this value to the height of your addcartsection*/
}
.viewaddcart{
transform: translateY(0px
    )!important;
}
</style>
  

применил это в html-элементе page builder, но кнопка появляется всегда, а не после прокрутки определенного количества пикселей вниз по странице. есть ли какие-либо ошибки в скрипте? извините, я не эксперт в кодировании.

Комментарии:

1. Но вы никогда не скрываете эту кнопку в первую очередь.

Ответ №1:

Кажется, работает, убедитесь, что вы скрываете его по умолчанию и отображаете только тогда, когда viewaddcart класс существует на той же кнопке:

 #addcartsection {
  ...
  display: none;
}

#addcartsection.viewaddcart {
  display: block;
}
  

 document.addEventListener('DOMContentLoaded',
  function() {
    jQuery(function($) {
      $(document).scroll(function() {
        var y = $(this).scrollTop();
        if (y > 1810 amp;amp; $(window).scrollTop()   $(window).height() < $(document).height() - 100) {
          $('#addcartsection').addClass('viewaddcart')
        } else {
          $('#addcartsection').removeClass('viewaddcart')
        }
      });
      $('#addcartbutton').click(function() {
        $('.single_add_to_cart_button').click();
        $('html, body').animate({
          scrollTop: $('.product_title').offset().top
        }, 'slow');
      });
    });
  });  
 #addcartsection {
  position: fixed;
  bottom: 0;
  width: 100vw;
  z-index: 98;
  -webkit-transition: transform 0.34s ease;
  transition: transform 0.34s ease;
  transform: translateY(0px);
  /*adjust this value to the height of your addcartsection*/
}

.viewaddcart {
  transform: translateY(0px)!important;
}

.veryHugeDocument {
  background: grey;
  height: 5000px;
}

#addcartsection {
  width: 100px;
  color: white;
  background: blue;
  right: 0;
  display: none;
}

#addcartsection.viewaddcart {
  display: block;
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="veryHugeDocument">
  <h1>My document!</h1>
</div>
<button id="addcartsection">Add to cart!</button>  

Комментарии:

1. Спасибо! однако проблема, с которой я сталкиваюсь сейчас, заключается в том, что я хочу, чтобы это отображалось только в мобильной версии. он отображается как в настольной, так и в планшетной версии, но не в мобильной версии

2. @leghaulsвы можете использовать медиа-запрос для определения размера экрана и отображения только на устройствах с маленькими экранами. developer.mozilla.org/en-US/docs/Web/CSS/@media/width