ФорумРазработкаКлиентская сторонаВерстка и оформление → проблема с прокруткой в галерее на css

проблема с прокруткой в галерее на css

  • Jane

    Сообщения: 363 Репутация: N Группа: Адекваты

    Spritz 7 ноября 2015 г. 16:28

    Захотелось мне побаловаться с CSS галерей, но возникла одна проблемка с полосами прокрутки.

    Работа галереи на примере страниц:
    ·•° Miau-Jane °•· Мои работы ;) | Дизайн web-сайтов | Stepclick e-mal [miau-jane.ru]
    ·•° Miau-Jane °•· Мои работы ;) | Иллюстрации и персонажи | Друидка приручает кота [miau-jane.ru]

    Сейчас на сайте не финальная версия CSS файла, там пока последний рабочий вариант выложен.

    Итак, в чём заключается проблема:
    При клике на картинку открывается её увеличенное изображение, однако остаются полосы прокрутки.

    Задача:
    Когда показано увеличенное изображение: основные полосы прокрутки сайта должны пропадать, т.е. должна подключаться строчка в css:

    body{overflow:hidden;}

    А в случае, когда картинка большая, как по 1й ссылке - появляться прокрутка для блока с увеличенной картинкой. Это решается достаточно легко: у класса "lb-overlay" значение overflow:hidden меняется на auto, но на данный момент при этом появляются 2 полосы прокрутки (при локальном тестировании), вот от внешней нужно избавиться... :)

    Средствами css задачу пока не удаётся решить (хотя может просто где-то туплю в виду не хватки знаний). Склоняюсь к тому, что нужно использовать скрипты, но я с ними не дружу :) И важно, чтобы это всё продолжало работать на мобильных устройствах, как сейчас (тестируется на планшете).
    В общем, я за советом: в каком направлении копать для решения задачи? Или может кто-то расщедрится на какое-то работающее изящное решение? :))

  • cOAPerator

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 7 ноября 2015 г. 18:11, спустя 1 час 42 минуты 13 секунд

    Попробовал, полоса одна всегда. (опера 26)

    Jq юзай, классы(стили) добавляй/убирай при открытии/закрытии картинки для нужных блоков.

    Спустя 246 сек.

    И да, для BODY задавай

    overflow: hidden;
    padding-right: 17px;

    а то прыгать будет контент

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 7 ноября 2015 г. 19:58, спустя 1 час 47 минут 34 секунды

    Крутой лайтбокс PhotoSwipe: Responsive JavaScript Image Gallery [photoswipe.com]

    Спустя 94 сек.

    "дилер", с одной "л"

    Спустя 55 сек.

    У меня если что-то не получается на css - делаю на js и не парюсь.

    не всё полезно, что в swap полезло
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 8 ноября 2015 г. 1:14, спустя 5 часов 16 минут 6 секунд

    @Jane, можно сделать так, но не знаю, как будет работать во всех браузерах:
    для html по дефолту поставь overflow: hidden;
    для body - overflow: auto;
    так можно накрывать прокрутку окна внутренними элементами
    теперь .lb-overlay будет над прокруткой body
    ну и для .lb-overlay поставь overflow-y: auto; для своей прокрутки.
    при закрытии попапа лучше ссылаться на пустой хэш #, что бы страница не перегружалась

    Высокоуровневое абстрактное говно
  • Jane

    Сообщения: 363 Репутация: N Группа: Адекваты

    Spritz 8 ноября 2015 г. 1:15, спустя 26 секунд

    Попробовал, полоса одна всегда. (опера 26)

    @cOAPerator, Сейчас одна полоса, потому как последнюю версию с 2мя я не стала выкладывать.

    Проблема в том, что если для BODY по умолчанию это использовать, то страница до открытия блока с картинкой на маленьком разрешении тоже не прокручивается.
    А тут нужно чтобы полоса пропадала только при открытии просмотра картинки (потому как сейчас она прокручивает страницу под ней).

    Крутой лайтбокс PhotoSwipe: Responsive JavaScript Image Gallery [photoswipe.com]

    @master, покопаюсь, у меня задача была чтобы можно было описание добавлять к картинкам. Ещё не всё отладила визуально, но всё работает кроме это прокрутки :))
    В примере полоса прокрутки так же остаётся, и если колёсиком мышки крутануть - картинка просто сворачивается и страница мотается вниз.

    У меня если что-то не получается на css - делаю на js и не парюсь.

    @master, я с js пока совсем на Вы, вот и парюсь с css.

    Фактически нужно каким-то способом написать условие: если div с классом lb-overlay открыт, то у BODY меняется overflow с auto на hidden, и я допускаю, что тут можно при помощи скриптов это как-то решить в 1-2 строчки буквально, только я не знаю, как именно это написать (полночи вчера копалась, но не нашла примеров, либо не по тем запросам искала).

  • Jane

    Сообщения: 363 Репутация: N Группа: Адекваты

    Spritz 8 ноября 2015 г. 1:24, спустя 9 минут 1 секунду

    для body - overflow: auto;
    так можно накрывать прокрутку окна внутренними элементами
    теперь .lb-overlay будет над прокруткой body
    ну и для .lb-overlay поставь overflow-y: auto; для своей прокрутки.
    при закрытии попапа лучше ссылаться на пустой хэш #, что бы страница не

    @technobulka, вот это делала, без 1го пункта про html - оставались 2 полосы
    Сейчас попробовала ещё и html задать - заработало :)))
    Кроме ИЕ и оперы - там в принципе работает, но не все стили корректно (в опере почему-то webkit не подцепляется и части эффектов просто нет, но это уже другая задача :)) С этим попробую разобраться.

    Спасибо, про отдельно для html и body не додумалась прописывать.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!