jquery - 在 FlexBox 中使用 ScrollTop 不起作用

标签 jquery html css flexbox scrolltop

nav, main, footer, 有3个标签。我将它们应用于 FlexBox:

body {
  color: #ddd;
  font-family: Gotham;
  background: url(../assets/body-background.png);
  display: flex;
  min-height: 100%;
  flex-direction: column;
}
main {
  flex: 1;
}

一切看起来都很好。但之后事情变得更糟了

我的脚本文件中有以下代码(使用 jQuery):

$('.scroll-top').click(function () {
  $('body').animate({
     scrollTop: 0
  }, 1000);
})

但是页面滚动动画不工作

jsfiddle

$('a').click(function(){
	$('body').animate({
      scrollTop: 0
    }, 1000);
})
nav{
  padding: 10px;
  background: grey;
}
main{
  height:800px;
  background: lightgrey;
}
footer{
  padding: 10px;
  background: grey;
}
body{
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}
main{
  flex: 1;
}
a{
  position: fixed;
  right: 40px;
  bottom: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<nav>nav content</nav>
<main>main content</main>
<a href="javascript:;">scroll top</a>
<footer>footer content</footer>

最佳答案

它在 Chrome 中工作正常,但在 Firefox 中不工作。要在 Firefox 中使用滚动,您必须在 html 上使用 scrollTop:

$('body,html').animate({
  scrollTop: 0
}, 1000);

main 也不会占用您在 Firefox 中分配给它的 800px。将 flex: 1 更改为 flex: 1 1 800px 以实现相同的跨浏览器行为。

请看下面的演示:

$('a').click(function() {
  $('body,html').animate({
    scrollTop: 0
  }, 1000);
})
nav {
  padding: 10px;
  background: grey;
}

main {
  height: 800px;
  background: lightgrey;
}

footer {
  padding: 10px;
  background: grey;
}

body {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

main {
  flex: 1 1 800px; /* NEW */
}

a {
  position: fixed;
  right: 40px;
  bottom: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<nav>nav content</nav>
<main>main content</main>
<a href="javascript:;">scroll top</a>
<footer>footer content</footer>

关于jquery - 在 FlexBox 中使用 ScrollTop 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503367/

相关文章:

javascript - 如何一次不快速地轻柔滚动

javascript - 定位模态窗口

javascript - Chrome 警报事件每 4 秒持续触发一次

html - 获取过滤器的定义边缘 :blurred image with background cover

html - 开发时如何在我的页面上查看 Bootstrap 网格大小?

html - 让 Div 覆盖整个页面(不仅仅是视口(viewport))?

javascript - 将 kml 转换为 geojson 时出错

javascript - Webview javascript 未执行

html - 最小高度为 100% 且内容垂直居中的 CSS 扩展部分

javascript - Bootstrap 下拉列表未出现在 Firefox 中