полоса прокрутки в стиле iPhone в веб-приложении с автоматическим выделением и исчезновением - PullRequest
7 голосов
/ 30 августа 2011

Я создаю веб-приложение и очень люблю полосы прокрутки в стиле iPhone, которые автоматически исчезают и исчезают. Я только когда-либо видел это на продуктах iOS, но теперь кажется, что Facebook включил это в список контактов Чата.

Почему мне это так нравится? Он автоматически исчезает и исчезает, поэтому он менее навязчив и может сэкономить значительное количество места. Когда он отображается, он фактически внутри div, а не вокруг него, снова эффективно используя пространство.

Есть идеи, как это сделать? Это не «iScroll» Маттео Спинелли, который использует «обычную» полосу прокрутки (которая для iOS-продуктов, конечно, в стиле iOS) для использования на div.

Я пытался использовать плагин Джонатана Азоффа Overscroll Jquery, но я не могу заставить его работать правильно. Мне удалось добиться того, чтобы полосы прокрутки автоматически появлялись и исчезали при наведении мыши (как это делает Facebook), но поведение прокрутки в разных браузерах различается (и, похоже, перекрывает поведение прокрутки браузера как по скорости, так и по инерции в OSX). Быстрый взгляд на исходный код, кажется, согласуется с этим выводом.

Существуют ли какие-либо другие плагины / библиотеки, которые я могу использовать для точного управления прокруткой браузера, но с полосами прокрутки, которые автоматически исчезают и исчезают и выглядят в стиле iOS?

РЕДАКТИРОВАТЬ : Решил сделать это сам. Смотрите ответ ниже.

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

Спасибо за ваш вклад, Сунь-Цзы.Я взглянул на tinyscroll, и он довольно хорош, но я решил, что он недостаточно совершенен.В частности, в Firefox (на моем macbook) я теряю плавную прокрутку (и прокрутка заканчивается в дискретном / квантованном количестве).Быстрый взгляд на код показывает, что это происходит из-за того, что они вручную обрабатывают входные события и вызывают прокрутку в соответствии с этими событиями.Мне бы очень хотелось сохранить абсолютно собственную производительность и поведение при прокрутке.

Поэтому я написал свой собственный плагин jQuery, innerscroll .Я с открытым исходным кодом на GitHub .Демоверсия также доступна здесь .Просто включите мой файл и добавьте 3 строки кода:

$('#content').innerscroll({
    destination: $('#wrapper')
});

, где content - это переполнение элемента.Некоторые незначительные дополнительные настройки заключаются в том, что вам нужно создать родительский элемент wrapper для content с почти идентичными размерами, но только с чуть меньшей шириной (чтобы скрыть собственную полосу прокрутки content).wrapper также находится там, где будет размещена новая, исчезающая полоса прокрутки.

Я уверен, что есть ошибки.Любые комментарии, критика или предложения будут оценены.

2 голосов
/ 08 октября 2011

Извините, что вам понадобилось так много времени, чтобы получить ответ на такой простой вопрос ... Это близко к тому, что, я думаю, вы ищете http://baijs.nl/tinyscrollbar/. Тогда для затухания просто используйте простую функцию, такую ​​как это.

Первый для HTML

<div id="scrollbar1" style="visibility: hidden">
    <div class="scrollbar"><div class="track"><div class="thumb"><div class="end"></div></div></div></div>
    <div class="viewport">
        <div class="overview">
            <h3>Magnis dis parturient montes</h3>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut vitae velit at velit pretium sodales. Maecenas egestas imperdiet mauris, vel elementum turpis iaculis eu. Duis egestas augue quis ante ornare eu tincidunt magna interdum. Vestibulum posuere risus non ipsum sollicitudin quis viverra ante feugiat. Pellentesque non faucibus lorem. Nunc tincidunt diam nec risus ornare quis porttitor enim pretium. Ut adipiscing tempor massa, a ullamcorper massa bibendum at. Suspendisse potenti. In vestibulum enim orci, nec consequat turpis. Suspendisse sit amet tellus a quam volutpat porta. Mauris ornare augue ut diam tincidunt elementum. Vivamus commodo dapibus est, a gravida lorem pharetra eu. Maecenas ultrices cursus tellus sed congue. Cras nec nulla erat.</p>

            <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eget mauris libero. Nulla sit amet felis in sem posuere laoreet ut quis elit. Aenean mauris massa, pretium non bibendum eget, elementum sed nibh. Nulla ac felis et purus adipiscing rutrum. Pellentesque a bibendum sapien. Vivamus erat quam, gravida sed ultricies ac, scelerisque sed velit. Integer mollis urna sit amet ligula aliquam ac sodales arcu euismod. Fusce fermentum augue in nulla cursus non fermentum lorem semper. Quisque eu auctor lacus. Donec justo justo, mollis vel tempor vitae, consequat eget velit.</p>

            <p>Vivamus sed tellus quis orci dignissim scelerisque nec vitae est. Duis et elit ipsum. Aliquam pharetra auctor felis tempus tempor. Vivamus turpis dui, sollicitudin eget rhoncus in, luctus vel felis. Curabitur ultricies dictum justo at luctus. Nullam et quam et massa eleifend sollicitudin. Nulla mauris purus, sagittis id egestas eu, pellentesque et mi. Donec bibendum cursus nisi eget consequat. Nunc sit amet commodo metus. Integer consectetur lacus ac libero adipiscing ut tristique est viverra. Maecenas quam nibh, molestie nec pretium interdum, porta vitae magna. Maecenas at ligula eget neque imperdiet faucibus malesuada sed ipsum. Nulla auctor ligula sed nisl adipiscing vulputate. Curabitur ut ligula sed velit pharetra fringilla. Cras eu luctus est. Aliquam ac urna dui, eu rhoncus nibh. Nam id leo nisi, vel viverra nunc. Duis egestas pellentesque lectus, a placerat dolor egestas in. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vitae ipsum non est iaculis suscipit.</p>

            <h3>Adipiscing risus </h3>
            <p>Quisque vel felis ligula. Cras viverra sapien auctor ante porta a tincidunt quam pulvinar. Nunc facilisis, enim id volutpat sodales, leo ipsum accumsan diam, eu adipiscing risus nisi eu quam. Ut in tortor vitae elit condimentum posuere vel et erat. Duis at fringilla dolor. Vivamus sem tellus, porttitor non imperdiet et, rutrum id nisl. Nunc semper facilisis porta. Curabitur ornare metus nec sapien molestie in mattis lorem ullamcorper. Ut congue, purus ac suscipit suscipit, magna diam sodales metus, tincidunt imperdiet diam odio non diam. Ut mollis lobortis vulputate. Nam tortor tortor, dictum sit amet porttitor sit amet, faucibus eu sem. Curabitur aliquam nisl sed est semper a fringilla velit porta. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum in sapien id nulla volutpat sodales ac bibendum magna. Cras sollicitudin, massa at sodales sodales, lacus tortor vestibulum massa, eu consequat dui nulla et ipsum.</p>

            <p>Aliquam accumsan aliquam urna, id vulputate ante posuere eu. Nullam pretium convallis tincidunt. Duis vitae odio arcu, ut fringilla enim. Nam ante eros, vestibulum sit amet rhoncus et, vehicula quis tellus. Curabitur sed iaculis odio. Praesent vitae ligula id tortor ornare luctus. Integer placerat urna non ligula sollicitudin vestibulum. Nunc vestibulum auctor massa, at varius nibh scelerisque eget. Aliquam convallis, nunc non laoreet mollis, neque est mattis nisl, nec accumsan velit nunc ut arcu. Donec quis est mauris, eu auctor nulla. Fusce leo diam, tempus a varius sit amet, auctor ac metus. Nam turpis nulla, fermentum in rhoncus et, auctor id sem. Aliquam id libero eu neque elementum lobortis nec et odio.</p>                             
        </div>
    </div>
</div>

Затем функция jQuery, чтобы заставить его исчезать и в:

$(function() {  
     $("#scrollbar1").bind('hover', function() {
          // On hover fade in
          $(this).fadeIn(1000);
     });
     $("#scrollbar1").bind('mouseout', function() {
          // On mouseout fade out
          $(this).fadeOut(1000);
     });
});
1 голос
/ 31 января 2013

Я нашел Nanoscroller JS как самый надежный заменитель полосы прокрутки, поддерживающий этот стиль.http://jamesflorentino.github.com/nanoScrollerJS/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...