【发布时间】:2020-06-08 18:49:03
【问题描述】:
我创建了一个使用 Bootstrap 4、水平滚动(通过jquery.mousewheel.js)和原生 CSS Snapping 的网站。我使用的是 Chrome 81,不关心旧的/不受支持的浏览器。
当我将scroll-snap-type: x mandatory; 应用于 CSS 时,水平滚动停止工作(根本不发生滚动)。如果 CSS 属性被移除,则滚动行为正常。这是我的 HTML 结构:
<div class="portfolio_content container-fluid h-100">
<div class="row h-100 flex-row flex-nowrap scrollx long_content">
<div class="col-12 h-100 project d-table" id="project1">
<div class="project_title d-table-cell align-middle">
<p>
Project 1
</p>
</div>
</div>
<div class="col-12 h-100 project d-table" id="project2">
<div class="project_title d-table-cell align-middle">
<p>
Project 2
</p>
</div>
</div>
<div class="col-12 h-100 project d-table" id="project3">
<div class="project_title d-table-cell align-middle">
<p>
Project 3
</p>
</div>
</div>
<div class="col-12 h-100 project d-table" id="project4">
<div class="project_title d-table-cell align-middle">
<p>
Project 4
</p>
</div>
</div>
</div>
</div>
对于 CSS,关键条目在这里:
html, body {
height: 100%;
}
.portfolio_content .scrollx {
overflow-x: scroll;
}
.portfolio_content .long_content {
scroll-snap-type: x mandatory; /* Comment this to make scrolling works */
}
.portfolio_content .project {
scroll-snap-align: start;
}
.portfolio_content .project_title {
display: block;
margin: auto;
text-align: center;
}
.portfolio_content .project_title h1 {
font-size: 96px;
line-height: 0.8;
}
最后,这里是JSFiddle demo。如果您在 CSS 中注释第 9 行,则演示将能够滚动。
我的目标是让“项目”DIV 在滚动时被捕捉,即滚动后将完全显示一个“项目”DIV。
我应该如何更改代码?
【问题讨论】:
-
您是否注意到
text-align: center规则正在阻止您的.project_title中的文本显示? -
但这与滚动无关。
-
也许不是直接的,但我删除了
scroll-snap-type属性,它仍然没有滚动,所以看起来你的 CSS 存在问题,在你担心之前你需要解决滚动捕捉。 -
即使我注释掉了
text-align: center,情况也没有任何改变。 CSS 属性仅用于说明目的,与问题无关。 -
不要使用任何鼠标滚轮 js 库,它们在 99..9% 中都是像你这样的问题的原因。
标签: jquery css scroll-snap-type