Стильная страница FAQ с использованием только CSS3

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

Идея

Help Center Facebook использует отличный эффект для предварительного показа ответа на вопрос. Там выводится отрывок маленьким шрифтом и с затемнением. А когда посетитель нажимает на вопрос, текст ответа увеличивается и выводится полностью.

В нашем уроке мы создадим подобный эффект, используя только CSS3.

 

HTML

Начнем с разметки структуры документа:

<section class="faq-section">
    <input type="checkbox" id="q1">
    <label for="q1">Вопрос?</label>
    <p>... Вводный абзац, который будет обрезаться ...</p>
    <p>... Дополнительная информация ...</p>
</section>

  • На выше приведенном рисунке видно, что метка будет заголовком раздела. Но вы можете поместить label в h1, если хочется соблюдать правила семантики.
  • С помощью label::before создадим треугольник справа.
  • Первый абзац каждой секции будет конвертироваться в описательный отрывок ответа на вопрос.

Принцип действия

Никаких ракетных технологий здесь не используется. Здесь задействован трюк с чекбоксом для связки элементов  <input type="checkbox" id="abc"> и <label for="abc">. А сам чекбок скрывается от глаз читателя страницы.

 

CSS

Ниже приводится код с комментариями:

/*Добавляем поля*/
.faq-section{
        margin: 40px 0;
}

/*Скрываем чекбоксы и абзацы*/
.faq-section input,
.faq-section p{
        display: none;
}

/*Показываем только обрезанное введение */
.faq-section label+p{
        display: block;
        color: #999;
        font-size: .85em;
        transition: all .15s ease-out;
        /* Clipping text */
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
}

/*Если чекбокс отмечен, показываем все абазацы*/
.faq-section input[type=checkbox]:checked~p{
        display: block;
        color: #444;
        font-size: 1em;
        /* Восстанавливаем обрезание по умолчаниюы */
        text-overflow: clip;
        white-space: normal;
        overflow: visible;
}

/*Стили для метки*/
.faq-section label{
        font-size: 1.2em;
        cursor: pointer;
        background: #eee;
        display: block;
        position: relative;
        padding: 7px 10px;
        font-weight: bold;
        border: 1px solid #ddd;
        border-left: 3px solid #888;
        text-shadow: 0 1px 0 rgba(255,255,255,.5);
        transition: all .15s ease-out;
}

/*Удаляем выделение текста при переключении*/
.faq-section label::selection{
        background: none;
}

.faq-section label:hover{
        background: #f5f5f5;
}

/*Если чекбокс отмечен, устанавливаем стили соответственно*/
.faq-section input[type=checkbox]:checked~label{
        border-color: #ff7f50;
        background: #f5deb4;
        background-image: linear-gradient(to bottom, #fff, #f5deb4);
        box-shadow: 0 0 1px rgba(0,0,0,.4);
}

/*Стрелка метки - состояние по умолчанию*/
.faq-section label::before{
        content: '';
        position: absolute;
        right: 4px;
        top: 50%;
        margin-top: -6px;
        border: 6px solid transparent;
        border-left-color: inherit;
}

/*Обновляем стрелку справа*/
.faq-section input[type=checkbox]:checked~label::before{
        border: 6px solid transparent;
        border-top-color: inherit;
        margin-top: -3px;
        right: 10px;
}

 

Поддержка браузерами

Как насчет вывода нашей страницы в старых браузерах? Отличный вопрос. И ответом является приемлемая деградация внешнего вида:

С помощью следующего кода мы заботимся о браузерах IE8 и старше, чтобы сохранить содержание нашей страницы для посетителей, использующих старые  инструменты.

<!--[if lt IE 9]>
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <style>
                .faq-section label,
                .faq-section label:hover{
                        cursor: default;
                        background: #eee;
                }
                body .faq-section p{ /* Increase specificity */
                        display: block;
                        color: #444;
                        font-size: 1em;
                        text-overflow: clip;
                        white-space: normal;
                        overflow: visible;
                }
    </style>
<![endif]-->

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/aYVfcXCY1k0/lessons.php

Читать комменты и комментировать

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



Защитный код
Обновить

Стильная страница FAQ с использованием только CSS3 | | 2012-06-19 11:59:44 | | Статьи Web-мастеру | | Обычно страница FAQ представляет собой длинный текст с большим количеством вопросов и ответов на них. Данную страницу ищут тогда, когда нужна дополнительная информация по работе сайта. В данном уроке | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: