向上滚动每篇文章
Scroll up for each article
我的页面上有一个文章列表,从第二篇文章开始应该有一个向上滚动按钮。问题是如何正确地做到这一点。这是我的代码
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
代码不应该添加到文章本身,而应该单独简单地固定在正确的位置?在这里进行的最佳方式是什么?
这是我将如何做的一个例子
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>
如您所见,通过滚动事件侦听器,您可以知道用户何时滚动以及目前已经滚动了多少像素。在这个功能中,您可以 show/hide 按钮
我的页面上有一个文章列表,从第二篇文章开始应该有一个向上滚动按钮。问题是如何正确地做到这一点。这是我的代码
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
代码不应该添加到文章本身,而应该单独简单地固定在正确的位置?在这里进行的最佳方式是什么?
这是我将如何做的一个例子
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>
如您所见,通过滚动事件侦听器,您可以知道用户何时滚动以及目前已经滚动了多少像素。在这个功能中,您可以 show/hide 按钮