我正在开发一个为网站提供附加工具的项目,该工具大量使用了 jQuery。演示/设计至关重要,我想将浏览器应用的标准(丑陋)滚动条替换为内容溢出的 html 元素,并用更好看的东西。
周围有许多 jQuery 插件可以应用自定义滚动条并允许通过 CSS 进行样式设置,这很棒,但我尝试过的所有插件似乎都遇到了同样的问题:如果可滚动内容包含带有文本字段的表单等等,字段之间的选项卡不会激活滚动条,并且在某些情况下可能会完全搞砸自定义滚动条布局。
我尝试过的两个插件示例:
http://manos.malihu.gr/jquery-custom-content-scroller http://baijs.nl/tinyscrollbar/
我也尝试过其他人,但在所有演示/示例中,内容都是纯文本。我已经对此进行了大量搜索,但似乎没有人尝试将这些插件与基于表单的内容一起使用。
所有这些插件似乎或多或少都以相同的方式工作,我可以确切地看到发生了什么以及为什么,但只是想知道是否有其他人遇到过这个问题和/或找到了解决方案?
这个问题可以很容易地复制如下(使用 tinyscrollbar 插件):
将此添加到标准 html 测试页面 -
CSS:
<style>
#tinyscrollbartest { width: 520px; height: 250px; padding-right: 20px; background-color: #eee; }
#tinyscrollbartest .viewport { width: 500px; height: 200px; overflow: hidden; position: relative; }
#tinyscrollbartest .overview { list-style: none; position: absolute; left: 0; top: 0; }
#tinyscrollbartest .scrollbar { position: relative; float: right; width: 15px; }
#tinyscrollbartest .track { background: #d8eefd; height: 100%; width: 13px; position: relative; padding: 0 1px; }
#tinyscrollbartest .thumb { height: 20px; width: 13px; cursor: pointer; overflow: hidden; position: absolute; top: 0; }
#tinyscrollbartest .thumb .end { overflow: hidden; height: 5px; width: 13px; }
#tinyscrollbartest .thumb, #tinyscrollbartest .thumb .end { background-color: #003d5d; }
#tinyscrollbartest .disable { display: none; }
</style>
html:
<div id="tinyscrollbartest">
<div class="scrollbar">
<div class="track">
<div class="thumb">
<div class="end"></div>
</div>
</div>
</div>
<div class="viewport">
<div class="overview">
</p>Here's a text field: <input type="text"/><p>
...
// lots of content to force scrollbar to appear,
// and to push the next field out of sight ..
...
<p>Here's another field: <input type="text"/></p>
</div>
</div>
</div>
插件参考(假设 jquery 库等也被引用):
<script type="text/javascript" src="scripts/jquery.tinyscrollbar.min.js"></script>
jQuery代码:
<script type="text/javascript">
$(document).ready(function () {
$('#tinyscrollbartest').tinyscrollbar();
});
</script>
现在单击第一个文本字段,使其具有焦点,按 Tab 键移动到下一个,看看会发生什么。