«Аккордеон» для сайта без JavaScript


Продолжая тему всяких интерактивных и не очень элементов для сайта, обратим взор на «аккордеон». Это на самом деле хороший способ уместить большое количество информации на маленькой площади.

Давайте сделаем наш аккордеон без Javascript на чистом CSS. Как всегда, сначала ДЕМО.

HTML:

    <div class="wrapper clearfix">
        <ul class="accordion clearfix">
            <li>
                <input type="radio" name="accordion" checked="checked" id="id1">
                <label for="id1">Option 1</label>

                <div class="content">
                    1 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                </div>
            </li>


            <li>
                <input type="radio" name="accordion" id="id2">
                <label for="id2">Option 2</label>

                <div class="content">
                    2 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                </div>
            </li>


            <li>
                <input type="radio" name="accordion" id="id3">
                <label for="id3">Option 3</label>

                <div class="content">
                    3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                </div>
            </li>
        </ul>
    </div>

Итак, у нас список ul.accordion с тремя элементами. У каждого элемента есть input[type="radio"] для определения отображать контент или нет; label, где мы храним заголовок и div.content с нашим текстом и/или графикой.

CSS:

.wrapper {
    width: 100%;
    min-width: 320px;
}

.clearfix:before, .clearfix:after {
    display: table;
    content: ' ';
}

.accordion {
    list-style: none;
    padding: 0;
    margin: 0;
    display: block;
    position: relative;
}

.accordion li {
    display: block;
}

.accordion li label {
    padding: 10px;
    background-color: #eee;
    display: block;
    font-weight: 700;
    cursor: pointer;
}

.accordion li .content {
    display: none;
    padding: 10px;
}

.accordion li input {
    display: none;
}

.accordion li input:checked ~ label {
    background-color: #fff;
}
.accordion li input:checked ~ .content {
    display: block;
}

Наши инпуты делаем невидимыми, а с помощью input:checked ~ .content показываем только тот контент, input, для которого выбран.

И еще раз ДЕМО.

27.10.2014 20:15 | 566 просмотров