我想使用角度引导程序滚动到我的页面中固定的顶部箭头。 目前我有
<div class="col-md-1">
<div class="affix">
<div>
<a th:href="@{/}" href="#" target="_self"><img id="image" src="source" alt="yoli" width="50px" /></a>
</div>
<a href="#search-bar">Scroll to top</a>
</div>
</div>
<div class="col-md-6">
<div id="search-bar" ng-include="blabla"></div>
<li ng-repeat="something"></li>
</div>
然而,当单击“滚动到顶部”时,它仅在第一次工作,因为网址更改为...#search-bar,当您再次单击它时,没有任何反应。那么如何在不更改网址的情况下滚动到顶部?
还问我如何在搜索栏没有显示时才显示“滚动到顶部”?
我正在考虑使用$ anchorScroll并在li上使用id'ed数字,如果它高于“element-3”则显示按钮,但不确定是否可行。
更新: 我正在考虑使用this示例,即使用#search和#results的导航栏,并使#search href在#results上显示为活动,并且#results一个隐藏。
答案 0 :(得分:1)
以下是如何做到这一点。创建一个按钮:
<a href="#" class="scrollToTop">Scroll To Top</a>
CSS:
.scrollToTop{
width:100px;
height:130px;
padding:10px;
text-align:center;
background: whiteSmoke;
font-weight: bold;
color: #444;
text-decoration: none;
position:fixed;
top:75px;
right:40px;
display:none;
background: url('arrow_up.png') no-repeat 0px 20px;
}
.scrollToTop:hover{
text-decoration:none;
}
JavaScript:
$(document).ready(function(){
//Check to see if the window is top if not then display button
$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$('.scrollToTop').fadeIn();
} else {
$('.scrollToTop').fadeOut();
}
});
//Click event to scroll to top
$('.scrollToTop').click(function(){
$('html, body').animate({scrollTop : 0},800);
return false;
});
});
答案 1 :(得分:1)
您也可以不使用jQuery:
function filterPath(string) {
return string
.replace(/^\//, '')
.replace(/(index|default).[a-zA-Z]{3,4}$/, '')
.replace(/\/$/, '');
}
const locationPath = filterPath(location.pathname);
document.querySelectorAll('a[href*="#"]').forEach(link => {
let thisPath = filterPath(link.pathname) || locationPath;
if ((location.hostname == link.hostname || !link.hostname)
&& (locationPath == thisPath)
) {
let hashName = link.hash.replace(/#/, '');
if (hashName) {
let targetEl = document.getElementById(hashName);
if (targetEl) {
link.addEventListener('click', () => {
event.preventDefault();
targetEl.scrollIntoView({
top: 50,
left: 0,
behavior: "smooth"
});
});
}
}
}
});