м

Аккордеон CSS3

Если вы когда-нибудь использовали обычные плагины аккордеон в ваших проектах, большинство из них используют JavaScript для работы (или JQuery). Обычно (аккордеон) используют чтобы сделать маленькую фото галерею, или в случае, если мы должны создать рекламу со списком функций продукта и т.д

С появлением CSS3, как и во многих случаях JavaScript не нужен. Мы можем обрабатывать событие OnClick с использованием анимации. В статье описаны две версии аккордеонов CSS3. В первом примере изображение будет меняться при нажатии на боковую панель ‘Аккордеон CSS3 версия без анимации’. Посмотрите, как это работает:

Демо

1. HTML



<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
        <title>Аккордеон CSS3 изменение после нажатия на боковую панель</title>

        <link href=
http://pixelcom.crimea.ua/"css/layout.css" rel="stylesheet" />
        <link href=
http://pixelcom.crimea.ua/"css/main.css" rel="stylesheet" />
    </head>
    <body>
        <h1>Аккордеон CSS3 версия без анимации</h1>
        <div class="accordion css3accordion">
            <span id="slide1"></span>
            <span id="slide2"></span>
            <span id="slide3"></span>
            <span id="slide4"></span>
            <span id="slide5"></span>
            <ol>
                <li class="slide1">
                    <a href=
http://pixelcom.crimea.ua/"#slide1"><h2><span>Первое</span></h2></a>
                    <div>
                        <img src=
http://pixelcom.crimea.ua/"images/1.jpg" alt="Slide One" />
                    </div>
                </li>
                <li class="slide2">
                    <a href=
http://pixelcom.crimea.ua/"#slide2"><h2><span>Второе</span></h2></a>
                    <div>
                        <img src=
http://pixelcom.crimea.ua/"images/2.jpg" alt="Slide Two" />
                    </div>
                </li>
                <li class="slide3">
                    <a href=
http://pixelcom.crimea.ua/"#slide3"><h2><span>Третий</span></h2></a>
                    <div>
                        <img src=
http://pixelcom.crimea.ua/"images/3.jpg" alt="Slide Three" />
                    </div>
                </li>
                <li class="slide4">
                    <a href=
http://pixelcom.crimea.ua/"#slide4"><h2><span>Четвёртое</span></h2></a>
                    <div>
                        <img src=
http://pixelcom.crimea.ua/"images/4.jpg" alt="Slide Four" />
                    </div>
                </li>
                <li class="slide5">
                    <a href=
http://pixelcom.crimea.ua/"#slide5"><h2><span>Пятое</span></h2></a>
                    <div>
                        <img src=
http://pixelcom.crimea.ua/"images/5.jpg" alt="Slide Five" />
                    </div>
                </li>
            </ol>
        </div>
<a href=
http://pixelcom.crimea.ua/"http://demo.pixelcom.crimea.ua/css3-accordion/index-2.htm"><h2>Дальше, аккордеон CSS3 версия с анимацией</h2></a>

</body>
</html>


2. CSS3

В макете присутствуют объекты <span>. По умолчанию — все они скрыты, мы используем их для того, чтобы обрабатывать OnClick события. Теперь мы готовы написать собственные стили для нашего аккордеона CSS3. Во-первых, мы должны определить стили для нашего родительского объекта и внутренних пролетов:



/* CSS3 accordion */
.css3accordion {
    border: 9px solid #353535;
    border-radius: 6px;
    padding: 5px 5px 6px 0;
    background: #030303;
    height: 320px;
    width: 960px;

    /* CSS3 shadows */
    -webkit-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5);
    -moz-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5);
    -ms-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5);
    -o-box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 -1px 0 #555 inset, 0 5px 15px rgba(0, 0, 0, 0.5);
}

/* hide first level spans */
.css3accordion > span {
    display: none
}



Теперь мы можем определить стили для наших слайдов и заголовков:



/* main accordion styles and slides */
.css3accordion ol {
    height: 100%;
    list-style: none;
    overflow: hidden;
    position: relative;
}
.css3accordion li {
    float: left;
    height: 100%;
    overflow: hidden;
    position: relative;
    width: 48px;

    /* CSS3 transition for slides */
    -webkit-transition: all 0.9s ease-in-out;
    -moz-transition: all 0.9s ease-in-out;
    -ms-transition: all 0.9s ease-in-out;
    -o-transition: all 0.9s ease-in-out;
    transition: all 0.9s ease-in-out;
}

.css3accordion li a {
    display: block;
    float: left;
    height: 320px;
    position: relative;
    width: 48px;
}

/* slide headers */
.css3accordion  h2 {
    font-size: 16px;
    font-weight: normal;
    height: 48px;
    left: 0;
    line-height: 265%;
    margin: 0;
    position: absolute;
    top: 0;
    width: 320px;
    z-index: 1;

    -webkit-backface-visibility: hidden;
    -webkit-transform: translateX(-100%) rotate(-90deg);
    -webkit-transform-origin: right top;
    -moz-transform: translateX(-100%) rotate(-90deg);
    -moz-transform-origin: right top;
    -ms-transform: translateX(-100%) rotate(-90deg);
    -ms-transform-origin: right top;
    -o-transform: translateX(-100%) rotate(-90deg);
    -o-transform-origin: right top;
    transform: translateX(-100%) rotate(-90deg);
    transform-origin: right top;
}
.css3accordion h2 span {
    background-color: #353535;
    border-radius: 4px;
    color: #fff;
    display: block;
    margin-top: 5px;
    padding-right: 10%;
    text-align: right;

    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;
}
.css3accordion h2 span:hover {
    background-color: #353535;
    background: -webkit-gradient(linear, left top, right top, color-stop(0%,#353535), color-stop(100%,#555555));
    background: -webkit-linear-gradient(left,  #353535 0%,#555555 100%);
    background: -moz-linear-gradient(left,  #353535 0%, #555555 100%);
    background: -ms-linear-gradient(left,  #353535 0%,#555555 100%);
    background: -o-linear-gradient(left,  #353535 0%,#555555 100%);
    background: linear-gradient(left,  #353535 0%,#555555 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#353535', endColorstr='#555555',GradientType=1 );
}
/* inner slide content */
.css3accordion li div {
    margin-left: 5px;
    padding-left: 48px;
}



Теперь делаем, отображение счетчика объекта в каждом заголовке.



/* 'counter' object */
.css3accordion h2 span:after {
    color: #080808;
    font-weight: bold;
    left: 10%;
    position: absolute;
    text-shadow: -1px 1px 0 #555555;
    top: 10%;

    /* CSS3 rotate for 'counter' */
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    transform: rotate(90deg);
}
/* 'counter' values */
li.slide1  h2 span:after {
    content: "1";
}
li.slide2  h2 span:after {
    content: "2";
}
li.slide3  h2 span:after {
    content: "3";
}
li.slide4  h2 span:after {
    content: "4";
}
li.slide5  h2 span:after {
    content: "5";
}



Наконец, для того, чтобы закончить наш аккордеон мы должны реализовать действие OnClick:



/* onclick behavior */
#slide1:target ~ ol li.slide1,
#slide2:target ~ ol li.slide2,
#slide3:target ~ ol li.slide3,
#slide4:target ~ ol li.slide4,
#slide5:target ~ ol li.slide5 {
    width: 768px;
}
#slide1:target ~ ol li.slide1 span,
#slide2:target ~ ol li.slide2 span,
#slide3:target ~ ol li.slide3 span,
#slide4:target ~ ol li.slide4 span,
#slide5:target ~ ol li.slide5 span {
    background: #353535;
    background: -webkit-gradient(linear, left top, right top, color-stop(0%,#353535), color-stop(100%,#555555));
    background: -webkit-linear-gradient(left,  #353535 0%,#555555 100%);
    background: -moz-linear-gradient(left,  #353535 0%, #555555 100%);
    background: -ms-linear-gradient(left,  #353535 0%,#555555 100%);
    background: -o-linear-gradient(left,  #353535 0%,#555555 100%);
    background: linear-gradient(left,  #353535 0%,#555555 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#353535', endColorstr='#555555',GradientType=1 );
}


Теперь создадим аккордеон с анимацией.
Демо
Для того, чтобы сделать это, отключаем действие OnClick, и применяем к шаблону HTML стили CSS3 анимации:



/* auto animation */
.css3accordion li {
    -webkit-animation-name: anim_slides;
    -webkit-animation-duration: 25.0s;
    -webkit-animation-timing-function: ease-in-out;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-direction: normal;
    -webkit-animation-delay: 0;
    -webkit-animation-play-state: running;
    -webkit-animation-fill-mode: forwards;

    -moz-animation-name: anim_slides;
    -moz-animation-duration: 25.0s;
    -moz-animation-timing-function: ease-in-out;
    -moz-animation-iteration-count: infinite;
    -moz-animation-direction: normal;
    -moz-animation-delay: 0;
    -moz-animation-play-state: running;
    -moz-animation-fill-mode: forwards;
}

.css3accordion li:nth-child(2) {
    -webkit-animation-delay: 5.0s;
    -moz-animation-delay: 5.0s;
}
.css3accordion li:nth-child(3) {
    -webkit-animation-delay: 10.0s;
    -moz-animation-delay: 10.0s;
}
.css3accordion li:nth-child(4) {
    -webkit-animation-delay: 15.0s;
    -moz-animation-delay: 15.0s;
}

.css3accordion li:nth-child(5) {
    -webkit-animation-delay: 20.0s;
    -moz-animation-delay: 20.0s;
}

@-webkit-keyframes anim_slides {
    0% {
        width: 48px;
    }
    20% {
        width: 768px;
    }
    40% {
        width: 48px;
    }
    100% {
        width: 48px;
    }
}
@-moz-keyframes anim_slides {
    0% {
        width: 48px;
    }
    20% {
        width: 768px;
    }
    40% {
        width: 48px;
    }
    100% {
        width: 48px;
    }
}



большинство скриптов js и CSS3 на странице Примеры jQuery

Статья подготовлена для вас коллективом сайта www.pixelcom.crimea.ua
Оригинал статьи: script-tutorials.com/turn-jquery-accordion-into-css3-accordion
Перевел: Виктор Клим
Правила использования материалов сайта!

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *


4 + 4 =

Можно использовать следующие HTML -теги и атрибуты: <a href= http://pixelcom.crimea.ua/"" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>