Для того чтобы сделать собственный сайт привлекательным в глазах посетителей, нам приходится создавать парой сложные, но в тоже время интересные элементы дизайна. К тому же они иногда имеют весьма практичный смысл, к примеру, экономят места. Конечно, многие из нас предпочитают сторонние шаблоны для Joomla, так как они уже содержать красивый внешний вид. Но сегодня, мы не станем искать лёгких путей. В этой статье мы рассмотрим три способа создания Аккордеона.

Accordion - это один из элементов визуального оформления, его задача скрыть контент, а после нажатия на заголовок пункта открыть его. На самом деле способов создание аккордеона огромное множество, но мы разделили их на три основных. Первый основан на современной таблице стилей - CSS3. Второй предполагает подключение JavaScript. Ну а третьим способом станут стандартные средства Joomla. У каждого из них будет плавная анимация, а первые два можно установить на любой сайт, при этом неважно какой движок вы используете.

«Accordion» на Joomla Демо

1 способ - CSS3

Для того чтобы понять как всё работает, мы начнём с самого простого варианта. Здесь нам понадобиться создать всего два файла HTML и CSS, а после положить их в одну папку вместе.

1. На рабочем столе создайте папку MySite.

2. Откройте Notepad++ и нажмите Ctrl+Alt+S. Введите название index, а тип файла выберите HTML.

Создание файла index.html

Сохраните этот файл в нашу папку MySite.

3. После сохранения файл index.html будет открыт в редакторе, туда необходимо вставить вот этот код:

HTML код:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Accordion CSS3</title>
  5. <link rel="stylesheet" type="text/css" href="style.css">
  6. <meta charset="utf-8" />
  7. </head>
  8. <body>
  9.  
  10. <!------------ Аккордеон на CSS3 ------------>
  11. <div>
  12. <section>
  13. <div>
  14. <input id="ac-1" name="accordion-1" type="checkbox" />
  15. <label for="ac-1">О нас</label>
  16. <article>
  17. <p>Наша компания занимается разработкой...</p>
  18. </article>
  19. </div>
  20. <div>
  21. <input id="ac-2" name="accordion-1" type="checkbox" />
  22. <label for="ac-2">Коллектив</label>
  23. <article>
  24. <p>У нас самые лучшие программисты...</p>
  25. </article>
  26. </div>
  27. <div>
  28. <input id="ac-3" name="accordion-1" type="checkbox" />
  29. <label for="ac-3">Контакты</label>
  30. <article>
  31. <p>Вы можете связаться с нами по телефонам...</p>
  32. </article>
  33. </div>
  34. </section>
  35. </div>
  36. <!------------ Аккордеон на CSS3 ------------>
  37.  
  38. </body>
  39. </html>

4. После того как у нас полностью готов первый файл, нам необходимо прописать стили для визуального оформления вкладок и текста внутри. Вновь при помощи Notepad++ создаём «style» с типом CSS как показано на картинке ниже:

Создаем файл style.css

Положите его в туже папку.

5. Вставляем в style.css вот этот код:

CSS код:
  1. .ac-container{
  2. width: 600px;
  3. margin: 50px auto 30px auto;
  4. text-align: left;
  5. background: #eee;
  6. }
  7. .ac-container label{
  8. padding: 5px 20px;
  9. position: relative;
  10. z-index: 20;
  11. display: block;
  12. height: 30px;
  13. cursor: pointer;
  14. color: #777;
  15. text-shadow: 1px 1px 1px rgba(255,255,255,0.8);
  16. line-height: 33px;
  17. font-size: 17px;
  18. background: #ffffff;
  19. background: -moz-linear-gradient(top, #ffffff 1%, #eaeaea 100%);
  20. background: -webkit-gradient(linear, left top, left bottom, color-stop(1%,#ffffff), color-stop(100%,#eaeaea));
  21. background: -webkit-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  22. background: -o-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  23. background: -ms-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  24. background: linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  25. filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eaeaea',GradientType=0 );
  26. box-shadow:
  27. 0px 0px 0px 1px rgba(155,155,155,0.3),
  28. 1px 0px 0px 0px rgba(255,255,255,0.9) inset,
  29. 0px 2px 2px rgba(0,0,0,0.1);
  30. }
  31. .ac-container label:hover{
  32. background: #fff;
  33. }
  34. .ac-container input:checked + label,
  35. .ac-container input:checked + label:hover{
  36. background: #D0D8E8;
  37. color: #3d7489;
  38. text-shadow: 0px 1px 1px rgba(255,255,255, 0.6);
  39. box-shadow:
  40. 0px 0px 0px 1px rgba(155,155,155,0.3),
  41. 0px 2px 2px rgba(0,0,0,0.1);
  42. }
  43. .ac-container input{
  44. display: none;
  45. }
  46. .ac-container article{
  47. background: rgba(255, 255, 255, 0.5);
  48. margin-top: -1px;
  49. overflow: hidden;
  50. height: 0px;
  51. position: relative;
  52. z-index: 10;
  53. -webkit-transition: height 0.3s ease-in-out, box-shadow 0.6s linear;
  54. -moz-transition: height 0.3s ease-in-out, box-shadow 0.6s linear;
  55. -o-transition: height 0.3s ease-in-out, box-shadow 0.6s linear;
  56. -ms-transition: height 0.3s ease-in-out, box-shadow 0.6s linear;
  57. transition: height 0.3s ease-in-out, box-shadow 0.6s linear;
  58. }
  59. .ac-container article p{
  60. color: #777;
  61. line-height: 23px;
  62. font-size: 14px;
  63. padding: 20px;
  64. text-shadow: 1px 1px 1px rgba(255,255,255,0.8);
  65. }
  66. .ac-container input:checked ~ article{
  67. -webkit-transition: height 0.5s ease-in-out, box-shadow 0.1s linear;
  68. -moz-transition: height 0.5s ease-in-out, box-shadow 0.1s linear;
  69. -o-transition: height 0.5s ease-in-out, box-shadow 0.1s linear;
  70. -ms-transition: height 0.5s ease-in-out, box-shadow 0.1s linear;
  71. transition: height 0.5s ease-in-out, box-shadow 0.1s linear;
  72. box-shadow: 0px 0px 0px 1px rgba(155,155,155,0.3);
  73. }
  74. .ac-container input:checked ~ article.ac-small{
  75. height: 140px;
  76. }
  77. .ac-container input:checked ~ article.ac-medium{
  78. height: 180px;
  79. }
  80. .ac-container input:checked ~ article.ac-large{
  81. height: 230px;
  82. }

6. Теперь заходим в MySite, где два файла и открываем index.html в браузере. Вот что должно получиться:

1 способ - CSS3

Стили, которые мы использовали для создания анимации в выпадающих вкладках, работают только на современных браузерах. Это связано с тем, что мы используем CSS3. Посмотреть ДЕМО (http://websitek.ru/demo/Accordion-CSS3/).

2 способ - JavaScript

Второй способ заключается в создании тех же файлов, но с подключением дополнительных скриптов. Один будет автоматически загружаться браузером с сервера Google во время открытия страницы, а второй будет прописан в самом файле, он станет отвечать за действия мышкой. В нём я подписал значения, которые можно изменить.

1. На рабочем столе создайте вторую папку с именем MySite2.

2. В ней при помощи всё той же программы Notepad++ создаём два файла index.html и style.css. Всё как мы делали до этого.

Создаём два файла index.html и style.css

3. В index.html вставляем вот этот код:

HTML код:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Accordion jQuery</title>
  5. <link rel="stylesheet" type="text/css" href="style.css">
  6. <meta charset="utf-8" />
  7. </head>
  8. <body>
  9.  
  10. <!------------ Аккордеон на jQuery ------------>
  11. <div>
  12. <div>О нас</div>
  13. <div>
  14. <p>Наша компания занимается разработкой...</p>
  15. </div>
  16.  
  17. <div>Коллектив</div>
  18. <div>
  19. <p>У нас самые лучшие программисты...</p>
  20. </div>
  21.  
  22. <div>Контакты</div>
  23. <div>
  24. <p>Вы можете связаться с нами по телефонам...</p>
  25. </div>
  26. </div>
  27.  
  28. <!-- Подключаем скрипты -->
  29. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
  30. <script type="text/javascript">
  31. $(document).ready(function() {
  32. $(".accordion .accord-header").click(function() {
  33. if($(this).next("div").is(":visible")){
  34. $(this).next("div").slideUp(700); // Скорость "ЗАКРЫТИЯ" (если нажал на ТУЖЕ вкладку)
  35. } else {
  36. $(".accordion .accord-content").slideUp(700); // Скорость "ЗАКРЫТИЯ" (если нажал на ДРУГУЮ вкладку)
  37. $(this).next("div").slideToggle(700); // Скорость "ОТКРЫТИЯ" (100-быстро, 2000-медленно)
  38. }
  39. });
  40. });
  41. </script>
  42. <!------------ Аккордеон на jQuery ------------>
  43.  
  44. </body>
  45. </html>

4. А в style.css вот это:

CSS код:
  1. .accordion{
  2. width: 600px;
  3. margin: 50px auto 30px auto;
  4. text-align: left;
  5. background: #eee;
  6. }
  7.  
  8. .accord-header{
  9. padding: 5px 20px;
  10. position: relative;
  11. z-index: 20;
  12. display: block;
  13. height: 30px;
  14. cursor: pointer;
  15. color: #777;
  16. text-shadow: 1px 1px 1px rgba(255,255,255,0.8);
  17. line-height: 33px;
  18. font-size: 17px;
  19. background: #ffffff;
  20. background: -moz-linear-gradient(top, #ffffff 1%, #eaeaea 100%);
  21. background: -webkit-gradient(linear, left top, left bottom, color-stop(1%,#ffffff), color-stop(100%,#eaeaea));
  22. background: -webkit-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  23. background: -o-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  24. background: -ms-linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  25. background: linear-gradient(top, #ffffff 1%,#eaeaea 100%);
  26. filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eaeaea',GradientType=0 );
  27. box-shadow:
  28. 0px 0px 0px 1px rgba(155,155,155,0.3),
  29. 1px 0px 0px 0px rgba(255,255,255,0.9) inset,
  30. 0px 2px 2px rgba(0,0,0,0.1);
  31. }
  32. .accord-header:hover{
  33. background: #fff;
  34. }
  35. .accord-content {
  36. display: none;
  37. }
  38. .accord-content p{
  39. color: #777;
  40. line-height: 23px;
  41. font-size: 14px;
  42. padding: 20px;
  43. text-shadow: 1px 1px 1px rgba(255,255,255,0.8);
  44. }

5. Заходим в нашу папку MySite2 и открываем index.html в браузере. Должно получиться так:

2 способ - JavaScript

Посмотреть ДЕМО (http://websitek.ru/demo/Accordion-jQuery/).

Как вы видите, визуально, они мало чем отличаются друг от друга, но работают по-разному принципу. Первый использует таблицу стилей CSS3 и требует современные браузеры, а второй обходится несложным скриптом, благодаря которому можно настроить скорость анимации. Какой способ использоваться на сайте, решать вам. Каждый из них обладает очевидными достоинствами.

3 способ - Bootstrap Joomla

Настало время поговорить о последнем варианте создания аккордеона. Он основан на Bootstrap Framework. Это своего рода библиотека, которая устанавливается в шаблон и облегчает создание элементов на сайте. Нам достаточно написать небольшие команды на PHP для того чтобы получить желаемое. Устанавливать сам Bootstrap не станем, мы воспользуемся стандартным шаблоном «protostar» из Joomla, в нём уже есть всё, что нам надо. Данный способ работает, начиная от Joomla 3.2 и выше.

Рассматривать таблицу стилей в этом примере не станем.

Для того чтобы создать «Accordion» нам понадобиться вот этот код:

PHP код:
  1. <?php echo JHtml::_('bootstrap.startAccordion', 'slide-example', array('active' => 'slide1')); ?>
  2.  
  3. <?php echo JHtml::_('bootstrap.addSlide', 'slide-example', 'О нас', 'slide1'); ?>
  4. <p>Наша компания занимается разработкой...</p>
  5. <?php echo JHtml::_('bootstrap.endSlide'); ?>
  6.  
  7. <?php echo JHtml::_('bootstrap.addSlide', 'slide-example', 'Коллектив', 'slide2'); ?>
  8. <p>У нас самые лучшие программисты...</p>
  9. <?php echo JHtml::_('bootstrap.endSlide'); ?>
  10.  
  11. <?php echo JHtml::_('bootstrap.addSlide', 'slide-example', 'Контакты', 'slide3'); ?>
  12. <p>Вы можете связаться с нами по телефонам...</p>
  13. <?php echo JHtml::_('bootstrap.endSlide'); ?>
  14.  
  15. <?php echo JHtml::_('bootstrap.endAccordion'); ?>

Вставьте его в файл index.php между тегами <body></body> нашего шаблона. Аккордеон получился весьма простой, а при редактировании придётся каждый раз лесть в php и править вручную. Такой способ подходит разве что для сайта-визитки. Вот что получилось:

Аккордеон Bootstrap

Признаться честно, таким положением дел я лично не доволен, поэтому предлагаю создать Accordion, внутри которого будут располагаться позиции под модули. Это даст нам возможность быстро редактировать контент внутри вкладок посредством панели управления. К тому же, сможем установить туда любой тип модуля, а это практически безграничные возможности.

1. Скачиваем на компьютер с сервера два файла index.php и templateDetails.xml. Оба открываем в Notepad++.

Редактируем index.php и templateDetails.xml

2. Для начала в templateDetails.xml прописываем это:

XML код:
  1. <position>Accordion1</position>
  2. <position>Accordion2</position>
  3. <position>Accordion3</position>

Так как показано на следующей картинке:

Редактирование templateDetails.xml

3. Теперь переходим к редактированию index.php. Я выбрал место перед подвалом нашего сайта. Вставляем этот код:

PHP код:
  1. <?php if ($this->countModules('Accordion1 or Accordion2 or Accordion3')) : ?>
  2. <?php echo JHtml::_('bootstrap.startAccordion', 'slide-example', array('active' => 'slide1')); ?>
  3.  
  4. <?php echo JHtml::_('bootstrap.addSlide', 'slide-example', 'О нас', 'slide1'); ?>
  5. <p><jdoc:include type="modules" name="Accordion1" style="xhtml" /></p>
  6. <?php echo JHtml::_('bootstrap.endSlide'); ?>
  7.  
  8. <?php echo JHtml::_('bootstrap.addSlide', 'slide-example', 'Коллектив', 'slide2'); ?>
  9. <p><jdoc:include type="modules" name="Accordion2" style="xhtml" /></p>
  10. <?php echo JHtml::_('bootstrap.endSlide'); ?>
  11.  
  12. <?php echo JHtml::_('bootstrap.addSlide', 'slide-example', 'Контакты', 'slide3'); ?>
  13. <p><jdoc:include type="modules" name="Accordion3" style="xhtml" /></p>
  14. <?php echo JHtml::_('bootstrap.endSlide'); ?>
  15.  
  16. <?php echo JHtml::_('bootstrap.endAccordion'); ?>
  17. <?php endif; ?>

Делаем это внизу файла, вот тут:

Редактирование index.php

4. После всех этих действий, бросаем наши файлы обратно на сервер, откуда мы их скачивали. Если сейчас открыть сайт, то нечего не произойдёт. Это нормально, аккордеон покажется только при условии заполнения хотя бы одной вкладки. А для того чтобы заполнить их потребуется создать модули.

5. Бежим «Панель управлений-->Расширения-->Менеджер модулей». Вверху нажимаем «Создать». Я выбрал «HTML-код». А после вводим название, скрываем заголовок, пишем текст в редакторе и справа выбираем позицию Accordion1 [Accordion1]. Нажимаем «Сохранить и закрыть».

Модуль аккордеон

6. Аналогично пункту 5 необходимо создать ещё два модуля на ваше усмотрение. В каждом из них обязательно отключить заголовок и выбрать позицию Accordion2 [Accordion2] для второй вкладки, а так же Accordion3 [Accordion3] соответственно для третьей.

Остаётся открыть наш сайт и посмотреть на результат.

Аккордеон Bootstrap Joomla

В заключении

Все представленные варианты в статье работают по разным принципам. Поэтому, если вам не подошел один способ, вы всегда сможете использовать другой.


 
4.5178571428571 1 1 1 1 1 (Оценок: 280)
4.5178571428571 280
Опубликовано: 28-05-2016

Комментарии  

Zahar
+1 #1 Zahar 17.06.2016 12:57
На первый взгляд процедура может выглядит сложно,но если разобраться то лаже школьник сможет это сделать!Также мне кажется,что 2 способ самый легкий и достаточно быстро можно создать"Accordi on".

Вы не зарегистрированы, чтобы оставлять комментарии.