Выдвижная боковая панель на CSS

Данное решение сделано с использованием флажка checkbox и не требует скриптов.

Использовать такую панель можно как угодно, например, для создания меню, формы обратной связи, регистрации/авторизации или любой другой информации

Пример:

Выдвижная панель:

Информация в панеле

HTML:

В данном коде обязательным условием является, чтобы боковая панель <div class="side-panel">...</div> следовала сразу за флажком checkbox

Т.к. панель имеет фиксированное позиционирование, ее можно разместить в любом месте страницы. Основываясь на этом, можно сделать кнопку, которая будет менять свой стиль и текст: side-button-1 (для нее, тоже важна последовательность html тегов.

Если изменять переключатель не нужно, как у кнопки side-button-2, то ее можно ставить где угодно, как угодно и сколько угодно раз. Например:

CSS:

Смотрите также:

Добавить комментарий:

Ваш комментарий отправлен!

Комментарии:

  • Олег Витальевич:

    Ошибся я дело не в скрипте. position fixed снимаешь где то плавает этот списочек...и окошко которое открывается на вопросик. Задача для меня как ни странно усложнилась

    Ответить
    • Alexander:

      Не совсем понял про что речь, но посмотрите z-index'ы

      Ответить
      • Олег Витальевич:

        Спасибо, помогло отчасти, другие комментарии тоже пригодились)

        Ответить
  • Олег Витальевич:

    Добрых вечеров. В данной панели почему то не срабатывают всплывающие окна. Запилил конструктор в нее со значком вопроса, при клике должна подсказка выходить и вне панели она работает. + всплывающие окна в которых например выбрать количество, тоже самое. Подскажите кто знает и разбирался в чем может быть проблема. Скрипты местами переставлял, все кроме панели удалял, мимо 🙁

    Ответить
  • СЕРГЕЙ:

    Скажите пожалуйста! Можно ли в эту панель вставить форму обратной связи с вашего сайта?
    И... можно ли сделать несколько панелей с разной инфой, открывающихся отдельно?

    Ответить
  • Владимир:

    Доброго времени суток. А под валидатор как подогнать данное действо. Для lable вроде как div внутри не допустим с точки зрения хз чего) А так все работает круть как всегда. Тот момент когда в авторе не сомневаешься.

    Ответить
    • Alexander:

      Поменяйте div на span 🙂

      Ответить
      • Владимир:

        Да со span проходит благодарю. Пришлось маленько поправить оформление и норм.

        Ответить
  • СЕРГЕЙ:

    А как вместо кнопки сделать флажок типа бокового меню?

    Ответить
    • Alexander:

      position: fixed и вместо текста иконку

      Ответить
  • Сергей:

    Просто шикарно! Очень вовремя мне попалась эта статья и в целом ваш сайт.
    На редкость полезный и толковый сайт. Спасибо вам.
    А как вместо крестика поставить треугольники? В закрытом состоянии углом внутрь (к центру), а в закрытом состоянии - углом наружу. Получится подсказка типа открыть-закрыть. В смысле - понятно, что это можно сделать с помощью псевдоэлементов или маленьких картинок, но как без JS отловить закрытое и открытое состояние панели?

    Ответить
    • Alexander:

      Без JS это изходить из :checked, как основная кнопка сделана.

      Ответить
  • Сергей:

    А если в панель не помещается содержимое, как добавит вертикальный скролл?

    Ответить
    • Alexander:
      <div class="side-title">Выдвижная панель:</div>
      <p>Информация в панеле</p>

      Обернуть в див со стилями:

      overflow-y: auto;
      height: 100%;
      Ответить
  • Илья:

    Как сделать так, чтобы панель закрывалась не по крестику на панели, а по щелчку в любой точке экрана вне панели?

    Ответить
    • Alexander:

      Для этого нужен лейбл фиксированный во весь экран, а чтобы он кликался, он должен перекрывать весь сайт.

      Ответить
      • Мартин:

        Не подскажете как это сделать?

        Ответить
        • Alexander:

          Ну это уже JS
          Если на нем делать боковоую панель, то смысла нет городить все эти чекбоксы
          На днях сделаю JS вариант

          Ответить
  • Миша:

    Спасибо, отличное решение.

    Ответить
  • Юлия:

    А как сделать, чтобы несколько таких кнопок было на одной странице с разной информацией в боковом меню.. для каждой кнопки своя?

    Ответить
    • Alexander:

      Дублировать: ID, классы и т.д.
      Но тут удобнее на JS будет уже

      Ответить
    • Юлия:

      [quote] я продублировала, но ничего не получилось, вылезает панель от исходных настроек

      Ответить
      • Alexander:

        Дайте ссылку на результат, так сложно понять что не так и тем более обьяснить.

        Ответить
        • Юлия:

          В другой раз, видимо, я на следующий день изменила решение задачи. Если возникнет необходимость снова сделать несколько всплывающих окон - кину ссылку. Спасибо!

          Ответить
  • Георгий:

    если справа нужна панель, то что менять чтобы всё отлично работало?

    Ответить
    • Alexander:
      .side-panel {
      	left: -360px;
      	box-shadow: 10px 0 20px rgba(0,0,0,0.4);
      	left: 100%;
      	box-shadow: -10px 0 20px rgba(0,0,0,0.4);
      }
      #side-checkbox:checked + .side-panel {
      	left: 0;
      	left: calc(100% - 360px);
      }
      Ответить
  • Илья:

    И настроить на стили на свою кнопку?

    Ответить
    • Alexander:

      Только эта кнопка должна быть label и с правильным for

      Ответить
      • Илья:

        т.е. отстилизовать под свой дизайн я не смогу?

        Ответить
        • Alexander:

          Почему?
          Или редактируйте эту кнопку, что в примере, или ставьте любую свою:

          <label class="my-style-button" for="side-checkbox">Моя кнопка</label>  

          Только это должен лейбл быть, чтобы он открывал панель.
          А стили ставьте хоть в виде ссылки, хоть в виде кнопки, хоть в виде фото.

          Ответить
          • Роман:

            Хорошее решение, только что открыл и не пойму, при переделке панели на правую сторону, я не меняю никаких id и названий лейблов, заменил то, что выше в коментарии писали (ориентация панели), но панель справа не открывается? Каким образом лейбл менять? спасибо

            Ответить
          • Роман:

            Разобрался Александр, все Ок! подписка

            Ответить
            • ddd:

              В чем была проблема? Не могу разобраться

              Ответить
              • Роман:

                Никаких проблем нет, просто внимательнее смотрите на CSS

          • Михаил:

            Подскадите, пожалуйста, как сделать не кнопкой, а иконкой (картинкой)?

            Ответить
            • Alexander:
              <label class="my-style-button" for="side-checkbox"><img src="icon.png" /></label>
              Ответить
  • Дмитрий:

    Хорошее решение, спасибо!

    Ответить