Я хочу создать карусель изображений, где пользователь может переключаться между изображениями, щелкая стрелки. Например:
Однако я могу использовать только HTML и CSS - без JavaScript (и, следовательно, jQuery). Мне просто нужна базовая настройка; плавные переходы и тому подобное не нужны.
Как я могу это сделать?
javascript
jquery
html
css
royhowie
источник
источник
:hover
; наконец , состоит фрагмент с использованиемclick
,css
; хотя использование только двух стрелок для элементов управления здесь не было особенно тривиальным. Если "слишком много возможных решений" верны, можно создать, опубликовать альтернативное решение, чтобы ответить ниже, отвечающему конкретному требованию, "где пользователь может переключаться между изображениями, нажимая на стрелки" ?Ответы:
Это легко! Просто используйте радиокнопки и целевые ярлыки.
Радиокнопки имеют (необходимое) поведение, позволяющее выбирать только одну в любой момент - точно так же, как изображение в нашей карусели.
демонстрация
Показать фрагмент кода
TL; DR: важные примечания
input(type="radio")
них установленchecked
по умолчанию, иначе вся карусель будет скрыта.labels
правильно настроен таргетинг на предыдущий / следующий радиовход (см. В конце раздел ярлыков о том, как сделать таргетинг):checked
объяснение
Вот как должна выглядеть базовая структура HTML:
div#holder
будет удерживать весь наш контент на месте. Затем мы сгруппируем наши переключатели, метки и изображения под файломdiv.group
. Это гарантирует, что наши радиовходы не пострадают от разрушительных помех (каламбур).Ключ находится в селекторах (и на этикетках - обязательно прочтите этот раздел)
Во-первых, мы спрячем наши переключатели - они все равно уродливые:
Нам никогда не придется щелкать переключатели. Вместо этого мы стилизуем наши метки и добавляем цели (
for
свойства), чтобы они перенаправляли щелчок на соответствующий блок ввода радио.Большинство наших ярлыков следует скрыть:
(Я опущу все эстетические стили, чтобы их было легче понять. Вы можете увидеть более красивую версию во фрагменте стека.)
За исключением тех, кто находится рядом с включенным радиовходом, или
:checked
Кроме того,
div.content
должен отображаться следующий отмеченный ввод:Однако, когда переключатель не установлен, он
div.content
должен быть скрыт:Bazinga! Теперь наша карусель должна быть
полностьюв основном функционален, хотя и немного некрасиво. Давайте переместим наши метки в правильное положение:И центрируем наши изображения в соответствующих div:
Последний шаг - как настроить ярлыки:
Обратите внимание на то, как при наличии радио ввода с
id
изn
,label.previous
будет иметьfor
атрибут,(n - 1) % M
а уlabel.next
будетfor
атрибут(n + 1) % M
, гдеM
- количество изображений в карусели.дополнительный
Если вы используете Jade (или какой-либо другой шаблонизатор), вы можете настроить его с помощью простого цикла for, например:
источник
Обратите внимание, что
css
ниже не соответствует конкретным требованиям в вопросеИспользует псевдокласс , эскизы в качестве элементов управления для переключения между изображениями; смоделирован по шаблону, описанному в разделе Как запускать переходы CSS3 при нажатии, используя: target
:target
источник
Вдохновленный royhowie, я пришел к гораздо более простому решению, если дело доходит до синтаксиса HTML. Также с красивой анимацией и полностью настраиваемой!
Основная идея заключалась в том, чтобы создавать стрелки не путем размещения их в HTML одну за другой, а путем создания и последующего тщательного позиционирования псевдоэлементов.
JSFiddle
Вы можете узнать больше о настройках и некоторых технических ограничениях моей скрипки.
источник
Пожалуйста, проверьте эту ссылку, чтобы увидеть карусель только с CSS с опцией Auto Play в начале, левыми и правыми кнопками навигации, навигационными точками и возобновлением воспроизведения при нажатии на кнопку ...
Демо-ссылка - http://blog.puneets.in/2016/02/pure-responsive-css3-slider-with.html
источник
Расширение потрясающего решения royhowie путем добавления свойства анимации в
img
:источник
Почему бы не сделать его гладким и красивым с помощью только CSS?
Это часть созданной мной библиотеки Picnic CSS . Однако этот jsfiddle включает библиотеку и все плагины для следующей версии (4.0 сейчас дорабатывается ). Здесь вы можете увидеть текущую версию 3.x того же плагина, которая также отвечает всем вашим требованиям, но не так гладко, как хотелось бы:
Прямо сейчас вы можете увидеть только исходный код scss в ветке dev но он будет выпущен в дни, поэтому я обновлю свой ответ.
Немного кода, пожалуйста! Это HTML-код, который вам нужен для версии 4.0, как отмечали другие, вы в основном играете
<input type='radio'>
и<label>
добиваетесь желаемого эффекта:источник