Створюємо акордеон для сайту, xozblog - уроки і статті по створенню сайту, блогу

  • за допомогою jQuery;
  • за допомогою CSS3;
  • за допомогою HTML5.

Якщо Ви ще не стикалися з таким елементом на сайті, то це обов'язково станеться рано чи пізно. Насправді дуже проста концепція, яка вимагає невеликого скрипта для функціонування. Акордеони, як правило, використовується для організації додаткової інформації. Ви можете використовувати акордеон як:

  • меню з випадають підпунктами;
  • відповіді на питання (FAQ сторінку).

Насправді застосувань можна знайти багато. Таким чином мета даної статті розглянути три способи створення акордеона. Почнемо з самого вірного способу, вірного в тому сенсі, що працювати буде у всіх браузерах.

Спосіб 1: jQuery

Базова розмітка HTML і CSS стилі


Тема 1

Тут знаходиться контент.

Тема 2

Тут знаходиться контент.

Тема 3

Тут знаходиться контент.

Тут знаходиться контент.

h2 # 123;
color. # 002850; font-size. 30px; font-weight. normal;
padding. 45px 0 15px; cursor. pointer;
# 125;
.accordion # 123;
border. 1px solid #ddd; border-top. none; margin. 10px 0;
float. left; width. 470px; position. relative;
# 125;
.accordion a # 123;
display. block; text-decoration. none;
# 125;
.accordion h2. accordion a # 123;
background-color. #fff;
background-image. url # 40; gradient.jpg # 41; ;
background-image. -moz-linear-gradient # 40; bottom. # F1f1f1. #fff # 41; ;
background-image. -ms-linear-gradient # 40; bottom. # F1f1f1. #fff # 41; ;
background-image. -o-linear-gradient # 40; bottom. # F1f1f1. #fff # 41; ;
background-image. -webkit-linear-gradient # 40; bottom. # F1f1f1. #fff # 41; ;
background-image. linear-gradient # 40; bottom. # F1f1f1. #fff # 41; ;
border-top. 1px solid #ddd;
color. # 222; font. 14px / 30px 'Verdana'. sans-serif;
height. 30px; margin. 0; padding. 0; text-indent. 10px;
# 125;
p # 123;
color. # 555; font. 12px / 18px 'Verdana'. sans-serif;
padding. 20px 10px;
# 125;

За допомогою цих правил створюємо загальні для всіх способів, основні стилі «кнопки» акордеона. В якості фону використовується CSS3 градієнт, само собою в старих браузерах працювати не буде, тому має сенс підстрахуватися фоновим зображенням.

Найважливіший момент - jQuery:

$ # 40; document # 41 ;. ready # 40; function # 40; # 41; # 123;
$ # 40; '# Accordion-js' # 41 ;. find # 40; 'H2' # 41 ;. click # 40; function # 40; # 41; # 123;
$ # 40; this # 41 ;. next # 40; # 41 ;. stop # 40; # 41 ;. slideToggle # 40; # 41; ;
# 125; # 41 ;. next # 40; # 41 ;. stop # 40; # 41 ;. hide # 40; # 41; ;
# 125; # 41; ;

Завдяки селектору знаходимо по id контейнер accordion-js. а в ньому елемент h2. Відстежуємо клік по цьому елементу і методом .next () вибираємо наступний елемент після h2. в нашому випадку параграф p. і відкриваємо або приховуємо його після другого клацання.

Спосіб 2: CSS3

розмітка HTML

Тема 1

Тут знаходиться контент.
Тема 2

Тут знаходиться контент.
Тема 3


Тут знаходиться контент.

Тут знаходиться контент.

У порівнянні з попереднім способом є 3 зміни:

a # 91; href ^ = "#accordion" # 93; + * # 123; display. none; # 125;
# Accordion-css3: target # 123; display. block; # 125;

Працює це таким чином:
За допомогою CSS селектора a [href ^ = »# accordion»] + * вибираємо і приховуємо елемент, який йде після заслання, атрибут href починається на #accordion.

Спосіб 3: HTML5

розмітка HTML

Я думаю, що це найпростіший спосіб зробити акордеон, і найперспективніший так сказати. Тому як працює тільки в WebKit браузерах. Думаю не варто так просто скидати з рахунків HTML5, це лише питання часу, адже рано чи пізно все браузери будуть на 100% підтримувати його.


Тема 1

Тут знаходиться контент.


Тема 2

Тут знаходиться контент.

Тег details використовується для зберігання інформації, яку можна приховати або показати на вимогу користувача. За умовчанням вміст тега не відображається. А тег summary вказує заголовок для тега details. по якому можна клацати для розгортання / згортання інформації. Тег summary повинен йти першим всередині details.

За замовчуванням браузер додає стрілку поруч з summary. Позбавляємося від цього так:

details summary. -webkit-details-marker # 123; display. none; # 125;

Щоб залишатися в курсі свіжих статей і уроків підписуйтесь на щотижневу поштову розсилку або на новинну стрічку RSS. Дякуємо!