我正在尝试将每个<li>
移到onClick()
的屏幕顶部,并使用scrollIntoView();
进行操作,但因为我的标题是<li>
的一小部分。低于标题。如何将<li>
滚动到标题下方。
HTML
<header></header>
<div id="wrapper">
<ul>
<li id='li1' onClick="moveup(1)"> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li2' onClick='moveUp(2)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li3' onClick='moveUp(3)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li4' onClick='moveUp(4)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li1' onClick='moveUp(1)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li5' onClick='moveUp(5)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
</ul>
</div> <!--end wrapper-->
CSS
header {
position: fixed;
top: 0;
right: 0;
left: 0;
height: 50px;
background-color: red;
}
#wrapper {
width: 1000px;
background-color: blue;
height: 100%;
margin: 0 auto;
}
#col1 {
background-color: green;
height: 100%;
width: 80%;
margin: 0 auto;
}
ul {
margin: 0 auto;
width: 500px;
display: block;
}
li {
display: block;
background-color: yellow;
height: 500px;
width: 500px;
margin-bottom: 5px;
}
JAVASCRIPT
function moveup(x){
document.getElementById('li'+x).scrollIntoView();
}
感谢。
答案 0 :(得分:1)
在scrollIntoView()
之后,将它向下推50px,使用类似的东西:
scrollBy(0, -50);
答案 1 :(得分:0)
而不是onClick
使用onclick
。您还将函数定义为moveup
,但调用moveUp
。
使用jQuery可以轻松实现所需的功能。检查此http://jsfiddle.net/alekperos/Jn74M/3/
HTML
<header></header>
<div id="wrapper">
<ul>
<li id='li1'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li2'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li3'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li4'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li5'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
</ul>
</div> <!--end wrapper-->
JS
// on click of list element
$('li').click(function(){
// scroll the window in the amount of position of current clicked list element
// minus
// the amount that corresponds to the height of the header
$(window).scrollTop($(this).position().top - $('header').height())
})
答案 2 :(得分:0)
我已经解决了您的示例,因此它可以正常工作:[jsfiddle.net/t3go7b0u/4][1]我知道这个问题很旧,您可能已经解决了……但是为了记录。更改:position:sticky在标题和固定/ sticky元素滚动插件[smartScroll] [2]
更改:
header {
position: fixed;
}
$('#li' + x).smartScroll("start");
function moveUp(x){
// document.getElementById('li'+x).scrollIntoView();
// https://github.com/webdevelopers-eu/DNA-Smart-Scroll
$('#li' + x).smartScroll("start");
}
header {
position: sticky;
top: 0;
right: 0;
left: 0;
height: 50px;
background-color: red;
}
*[onclick] {
cursor: pointer;
}
*[onclick]:hover {
outline: 2px solid orange;
opacity: 0.5;
}
#wrapper {
width: 1000px;
background-color: blue;
height: 100%;
margin: 0 auto;
}
#col1 {
background-color: green;
height: 100%;
width: 80%;
margin: 0 auto;
}
ul {
margin: 0 auto;
width: 500px;
display: block;
}
li {
display: block;
background-color: yellow;
height: 500px;
width: 500px;
margin-bottom: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/webdevelopers-eu/DNA-Smart-Scroll/main/jquery.smartscroll.js"></script>
<header></header>
<div id="wrapper">
<ul>
<li id='li1' onClick="moveUp(1)"> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li2' onClick='moveUp(2)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li3' onClick='moveUp(3)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li4' onClick='moveUp(4)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li1' onClick='moveUp(1)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
<li id='li5' onClick='moveUp(5)'> blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
blah blah blah blah blah <br/>
</li>
</ul>
</div> <!--end wrapper-->
[1]: https://jsfiddle.net/t3go7b0u/4
[2]: https://github.com/webdevelopers-eu/DNA-Smart-Scroll