Я работаю над проектом по предоставлению дополнительного инструмента для веб-сайтов, который интенсивно использует jQuery.Презентация / дизайн имеют решающее значение, и я хочу заменить стандартную (некрасивую) полосу прокрутки, применяемую браузером, на элементы HTML с переполненным контентом, на что-то более привлекательное.
Существует множество плагинов jQuery, которые применяют пользовательские полосы прокрутки и допускают стилизацию с помощью CSS, что замечательно, но все те, которые я пробовал, похоже, страдают от одной и той же проблемы: если прокручиваемый контентсодержит форму с текстовыми полями и т. д., вкладка между полями не активирует полосу прокрутки, а в некоторых случаях может полностью испортить пользовательский макет полосы прокрутки.
Два примера плагинов, которые я пробовал:
http://manos.malihu.gr/jquery-custom-content-scroller http://baijs.nl/tinyscrollbar/
Я пробовал и другие, но во всех демонстрациях / примерах содержание - простой текст.Я уже много занимался поиском по этому вопросу, но, похоже, никто не пытался использовать эти плагины с содержимым на основе форм.
Все эти плагины работают более или менееточно так же, и я точно вижу, что происходит и почему, но мне просто интересно, если кто-то еще имел эту проблему и / или нашел решение?
Эта проблема может быть легко воспроизведена следующим образом (с помощью плагина tinyscrollbarin):
Добавьте это на стандартную тестовую страницу 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, чтобы перейти кследующий и посмотрим, что произойдет.