«Скользящая дверь» c одним изображением

sliding-doorСегодня, я собираюсь поделиться одной замечательной CSS-техникой, о которой узнала совсем недавно. Она довольно простая, как все гениальное, и немного похожа на технику верстки блоков с закругленными краями. Вообще, термин «скользящая дверь», англ. sliding door, означает простой hover-эффект, с использованием изображения. До того, как я узнала об этой технике, я всегда использовала несколько различных изображений, для каждого пункта меню. Но в сегодняшней статье, я расскажу, как можно добиться такого эффекта, используя всего лишь одно изображение. Как обычно, вы можете взглянуть на результат. Итак, давайте начнем.

Изображение

bg

Для каждой строки навигации, вам понадобится одно, длинное изображение. Я не буду рассказывать, как именно, создавать такие изображения, поскольку, это довольно просто, к тому же, вы можете использовать свои изображения. Но, вы можете скачать, представленную выше картинку, в .psd формате, и использовать по своему усмотрению. Итак, для создания меню, вам понадобится картинка, размером 493px на 24px, такое, как показано ниже.

blue

Общий смысл

concept

Идея «скользящей двери» в использовании фонового изображения для пунктов меню. Здесь используется элемент span, внутри ссылки, которому назначена часть фонового изображения. При этом ссылке, содержащей span, назначается другая часть того же фонового изображения. Что означает, что самая важная часть заключается в свойстве фонового изображения background-position.

HTML

[html]
<ul class="blue">
<li><a href="#" title="home">home</a></li>
<li><a href="#" title="products">products</a></li>
<li><a href="#" title="blog">blog</a></li>
<li><a href="#" title="contact">contact</a></li>
</ul>
[/html]

Вот так выглядит обычный код, для создания списка. Мы назначаем определенный класс списку ul, так, что мы легко сможем назначить разный стиль, одной и той же структуре.

[html]
<ul class="blue">
<li><a href="#" title="home" class="current"><span></span>home</a></li>
<li><a href="#" title="products"><span></span>products</a></li>
<li><a href="#" title="blog"><span></span>blog</a></li>
<li><a href="#" title="contact"><span></span>contact</a></li>
</ul>
[/html]

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

CSS

1. <ul> – Маркированный список

[css]
ul.blue {
padding: 5px;
margin: 10px 0;
list-style: none;
}
[/css]

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

2. <li> – Список

[css]
ul.blue li {
float: left;
}

ul.blue li a {
float: left;
text-decoration: none;
color: #ccc;
padding: 4px 15px 0 0;
margin-right: 8px;
font: 900 14px "Arial", Helvetica, sans-serif;
}
[/css]

Тут, все довольно просто. Мы назначаем float: left, всем элементам списка, для получения горизонтального меню. Кроме этого, нам понадобятся отступы и поля, чтобы сделать элементы списка, похожими на кнопки меню.

3. <span> – span внутри ссылки

[css]
ul.blue li a span {
float: left;
padding-right: 15px;
display: block;
margin-top: -4px;
height: 24px;
}
[/css]

Что касается элемента span, мы назначаем ему правый отступ, для тех же целей, что и отступы у элементов списка.

4. <hover> – эффект наведения

[css]
ul.blue li a:hover, ul.blue li a.current {
color: #0d5f83;
background: url("images/blue.png") no-repeat top right;
}

ul.blue li a:hover span, ul.blue li a.current span {
background: url("images/blue.png") no-repeat top left;
}
[/css]

Здесь, мы назначаем фоновое изображения ссылке и элементу span, находящемуся внутри этой ссылки. Так что теперь при наведении мыши, кнопка будет подсвечиваться фоновой картинкой.

Вот такая простая и довольно эффективная техника, которая заметно упростит верстку меню, с использованием только CSS и HTML.

Архив с приведенным примером.

Оригинал статьи “CSS Sliding Door using only 1 image“, автор kailoon


Posted

in

by

Comments

7 responses to “«Скользящая дверь» c одним изображением”

  1. Enlightened Avatar
    Enlightened

    У вас на картинке concept.png ошибка в разметке:)

    А техника хорошая, да.

  2. deerua Avatar

    Есть ограничение длины текста кнопки, от длины фоновой картинки, это если с цсс-спрайтами 🙂

  3. Vladislav.Mysla Avatar
    Vladislav.Mysla

    думаю, можно и без ограничений, правда тогда мы раздуем ХТМЛ…. Спасибо. Просто.

  4. Fortis Avatar
    Fortis

    Двери – раздвижные, никак не скользящие.

    PS. Пунктуация местами хромает, проверьте.

  5. Flip:Who? Avatar

    Отличная статья, буду использовать!

  6. Blackhobo Avatar
    Blackhobo

    Спасибо за материал. Но это можно сделать и без лишних span и не мусорит код:

    HTML:

    home
    about
    portfolio
    articles
    contact

    CSS:


    #menu li {
    background: url(img/bluee.png) no-repeat top right;
    display: block;
    float: left;
    margin-right: 20px;
    padding-right: 15px;
    }

    #menu li a {
    background: url(img/bluee.png) no-repeat;
    color: #666;
    display: block;
    font-size: 14px;
    float: left;
    height: 24px;
    padding: 4px 0px 0 15px;
    text-decoration: none;
    text-transform: capitalize;
    }

    1. dreamhelg Avatar
      dreamhelg

      Полностью с вами согласна, я бы сделала точно так же. А на момент публикации статьи, я еще так не умела 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *