У меня очень большой table
на моей странице. Поэтому я решил поставить горизонтальную полосу прокрутки в нижней части таблицы. Но я бы хотел, чтобы эта полоса прокрутки была также сверху на столе.
Что я имею в шаблоне это:
<div style="overflow:auto; width:100%; height:130%">
<table id="data" style="width:100%">...</table>
</div>
Это возможно сделать только в HTML и CSS?
javascript
jquery
html
css
psoares
источник
источник
Ответы:
Чтобы смоделировать вторую горизонтальную полосу прокрутки поверх элемента, поместите «пустышку»
div
над элементом, имеющим горизонтальную прокрутку, достаточно высоко для полосы прокрутки. Затем присоедините обработчики события «scroll» для фиктивного элемента и реального элемента, чтобы синхронизировать другой элемент при перемещении полосы прокрутки. Фиктивный элемент будет выглядеть как вторая горизонтальная полоса прокрутки над реальным элементом.Для живого примера , см. Эту скрипку
Вот код :
HTML:
CSS:
JS:
источник
Попробуйте использовать
jquery.doubleScroll
плагин :JQuery:
CSS:
HTML:
источник
Прежде всего, отличный ответ, @StanleyH. Если кому-то интересно, как сделать контейнер с двойной прокруткой с динамической шириной:
CSS
JS
HTML
демонстрация
http://jsfiddle.net/simo/67xSL/
источник
$('.div1').width( $('.div1')[0].scrollWidth)
чтобы получить реальную ширину прокрутки содержимого, полезно, если вы не используете контейнер, подобный таблице. @Simo Потрясающий помощник усилий.Без JQuery (2017)
Поскольку вам может не понадобиться JQuery, вот рабочая версия Vanilla JS, основанная на ответе @StanleyH:
источник
Вы можете использовать плагин jQuery, который сделает всю работу за вас:
Плагин будет обрабатывать всю логику для вас.
источник
Ответ StanleyH был превосходным, но у него была одна неприятная ошибка: нажатие на затененную область полосы прокрутки больше не переходит к выбранному вами выбору. Вместо этого вы получите очень маленький и несколько раздражающий прирост положения полосы прокрутки.
Протестировано: 4 версии Firefox (затронуты на 100%), 4 версии Chrome (затронуты на 50%).
Вот мой jsfiddle . Вы можете обойти это, имея переменную on / off (true / false), которая позволяет запускать одновременно только одно событие onScroll ():
Поведение проблемы с принятым ответом:
Фактически желаемое поведение:
Так почему же это происходит?Если вы выполните код, вы увидите, что wrapper1 вызывает scrollLeft для wrapper2, а wrapper2 вызывает scrollLeft для wrapper1 и повторяет это бесконечно, поэтому у нас возникает проблема с бесконечным циклом. Или, скорее: продолжающаяся прокрутка пользователя конфликтует с вызовом прокрутки от wrapperx, возникает конфликт событий, и конечным результатом является отсутствие скачков в полосах прокрутки.
Надеюсь, это поможет кому-то еще!
источник
Связывание скроллеров работало, но в том виде, в котором оно написано, оно создает цикл, который замедляет прокрутку в большинстве браузеров, если вы нажимаете на часть более легкой полосы прокрутки и удерживаете ее (а не при перетаскивании скроллера).
Я исправил это с флагом:
источник
решение только для javascript, основанное на ответах @HoldOffHunger и @bobince
,
источник
На основе решения @StanleyH я создал директиву AngularJS , демо-версию для jsFiddle .
Легко использовать:
Для разработчиков AngularJS
источник
Насколько я знаю, это невозможно с HTML и CSS.
источник
В ванильном Javascript / Angular вы можете сделать это следующим образом:
HTML:
CSS:
источник
Расширяя ответ Стэнли и пытаясь найти необходимый минимум, вот что я реализовал:
JavaScript (вызывается один раз откуда-то вроде
$(document).ready()
):HTML (обратите внимание, что ширина будет изменять длину полосы прокрутки):
Вот и все.
источник
всем поклонникам angular / nativeJs, реализующим ответ @ simo
HTML (без изменений)
CSS (без изменений, ширина: 90% - мой дизайн)
JS (как
onload
) илиngAfterViewChecked
(всеas
дляTypeScript
)источник
Если вы используете iscroll.js в веб-браузере или мобильном браузере, вы можете попробовать:
источник
Директива AngularJs для достижения этой цели: чтобы использовать ее, добавьте класс css double-hscroll к вашему элементу. Для этого вам понадобятся jQuery и AngularJ.
источник
Вот пример для VueJS
index.page
ЗАМЕТЬТЕ на
height: 12px
.. Я сделал это 12px, чтобы это было замечено и для пользователей Mac. Но с окнами 0.1px достаточно хорошисточник
Существует проблема с направлением прокрутки: RTL. Кажется, плагин не поддерживает его правильно. Вот скрипка: скрипка
Обратите внимание, что в Chrome он работает правильно, но во всех других популярных браузерах направление верхней полосы прокрутки остается левым.
источник