只用纯CSS顺畅滚动

You*_*sef 22 css

如何使用纯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.

sid*_*ney 29

您需要使用target选择器.

这是另一个例子的小提琴:http://jsfiddle.net/YYPKM/3/

  • 你应该这样做,如果你只想要纯粹的CSS. (2认同)

SW4*_*SW4 9

可以使用纯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完成前的毫秒延迟.

演示小提琴

好处是,无论您的内容维度发生什么变化,都不需要更改该功能.

  • 问题是"只是纯CSS"而不是JQuery ...... (4认同)