如何使用纯css进行平滑滚动.
我有这个代码小提琴
HTML
<a id="up" href="#down">down</a>
<div class="up"></div>
<a id="down" href="#up">up</a>
<div class="down"></div>
Run Code Online (Sandbox Code Playgroud)
CSS
.up {
width:100px;
height: 600px;
background-color: red;
}
.down {
width:100px;
height: 400px;
background-color: yellow;
}
Run Code Online (Sandbox Code Playgroud)
我知道:target可以提供帮助,但我不知道如何使用它transition.
您可以使用纯CSS执行此操作,但是您需要对偏移滚动量进行硬编码,如果您要更改页面内容,这可能并不理想 - 或者您的内容尺寸会更改,例如窗口调整大小.
你最有可能使用例如jQuery,具体来说:
$('html, body').stop().animate({
scrollTop: element.offset().top
}, 1000);
Run Code Online (Sandbox Code Playgroud)
完整的实施可能是:
$('#up, #down').on('click', function(e){
e.preventDefault();
var target= $(this).get(0).id == 'up' ? $('#down') : $('#up');
$('html, body').stop().animate({
scrollTop: target.offset().top
}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
element滚动到的目标元素在哪里,是1000完成前的毫秒延迟.
好处是,无论您的内容维度发生什么变化,都不需要更改该功能.