【问题标题】:Scroll up for each article向上滚动查看每篇文章
【发布时间】:2021-12-08 05:32:36
【问题描述】:

我的页面上有一个文章列表,从第二篇文章开始应该有一个向上滚动按钮。问题是如何正确地做到这一点。这是我的代码

php.blade

<div class="blog-list">
    @foreach($articles as $article)
        <div class="blog-article @foreach ($article->blog_categories as $blog_category) category_{{ $blog_category->id }} @endforeach">
            <picture>
                <source srcset="{{ $article->main_image }}">
                <img class="article_image" srcset="{{ $article->main_image }}" alt="">
            </picture>

            <div class="container">

                //Scroll up
                <div class="top-button-blog-wrapper">
                    <div id="scrollTopButtonBlog" class="top-button-blog">
                        <div class="top-button-blog_text">To top</div>
                    </div>
                </div>

           <h2 class="blog-article__title">{{ $article->title }}</h2>
           <span>{{ date('d F Y', strtotime($article->published_at)) }}</span>

        </div>
    </div>
    @endforeach
</div>

js

//Scroll up
const scrollTopButtonBlog = document.getElementById('scrollTopButtonBlog');
scrollTopButtonBlog.addEventListener('click', () => {
  window.scrollTo({
    top: 0,
    behavior: 'smooth',
  });
});

现在我的代码为每个新博客添加了一个滚动按钮,但它只适用于第一个,也许这个Scroll up 代码不应该添加到文章本身,而是单独简单地固定在正确的位置?在这里进行的最佳方式是什么?

【问题讨论】:

  • 是的,最好的方法是设置一个默认隐藏的按钮。然后您可以侦听scroll 事件,然后如果滚动超过某个点,则呈现按钮
  • @MartinTavernier 你有没有偶然看到过类似的例子,确切地说是在哪里隐藏和出现在正确的地方?

标签: javascript laravel-blade


【解决方案1】:

这是我如何做的一个例子

const scrollTopButton = document.getElementById("scrollTopButton");
document.addEventListener('scroll', function(e) {
  if(window.scrollY > 100) {
    // Removing inline style to reset the display property to what's set in stylesheet
    scrollTopButton.style.opacity = "1";
  } else {
    // Hiding the button with inline style
    scrollTopButton.style.opacity = "0";
  }
});
scrollTopButton.addEventListener("click", () => {
  window.scrollTo({
    top: 0,
    behavior: 'smooth',
  });
});
#scrollable {
  overflow:auto;
}
#firstDiv {
  background-color: green;
  height: 1500px;
}
#scrollTopButton {
  transition: opacity 0.5s;
  cursor: pointer;
  width: 100px;
  height: 15px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: red;
  padding: 5px;
  position: fixed;
  bottom: 5px;
  left: 15px;
}
<div id="scrollable">
  <div id="firstDiv"></div>
  <div id="scrollTopButton" style="opacity: 0">ScrollTop</div>
</div>

如您所见,通过在滚动上的事件侦听器,您可以知道用户何时滚动以及现在已经滚动了多少像素。在这个功能中,您可以显示/隐藏按钮

【讨论】:

  • 我在我的页面上做了同样的事情,它在滚动时出现,但根本无法点击,并且向后滚动也不起作用。它甚至会影响页面上的位置吗?我在 blog-list 之后有这段代码
  • @Kim2000 好吧,这并没有什么不同。您能否检查事件侦听器是否正确添加以及按钮前面是否有东西?或者您可以制作一个 jsFiddle/分享更多代码,以便我可以更准确地帮助您?
  • 我能够进一步弄清楚,非常感谢您的帮助)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多