Nawigacja to jedna z najważniejszych rzeczy na stronie. Każdy użytkownik w pierwszej chwili rozgląda się za menu, które poprowadzi go do docelowych podston.

Chciałem Wam przedstawić animowane menu dzięki stylom CSS3. Jak sami zobaczycie menu prezentuje się dosyć efektownie i zrobi wrażenie na każdym kto odwiedza waszą stronę.

Animowane Menu css3 wersja 1

menu1

Przygotowałem też menu w wersji horyzontalnej.

Animowane Menu css3 wersja 2

menu2

Na wstępie zobaczmy jak wygląda nasz kod HTML:

<ul class="ca-menu" style="clear:both;">
	<li>
        <a href="#">
            <span class="ca-icon">L</span>
            <div class="ca-content">
                <h2 class="ca-main">Information</h2>
                <h3 class="ca-sub">Personalized to your needs</h3>
            </div>
        </a>
    </li>
    <li>
        <a href="#">
            <span class="ca-icon">M</span>
            <div class="ca-content">
                <h2 class="ca-main">Movie</h2>
                <h3 class="ca-sub">Personalized to your needs</h3>
            </div>
        </a>
    </li>
    <li>
        <a href="#">
            <span class="ca-icon">d</span>
            <div class="ca-content">
                <h2 class="ca-main">Calendar</h2>
                <h3 class="ca-sub">Personalized to your needs</h3>
            </div>
        </a>
    </li>
	<li>
        <a href="#">
            <span class="ca-icon">I</span>
            <div class="ca-content">
                <h2 class="ca-main">Images</h2>
                <h3 class="ca-sub">Personalized to your needs</h3>
            </div>
        </a>
    </li>
	<li>
        <a href="#">
            <span class="ca-icon">S</span>
            <div class="ca-content">
                <h2 class="ca-main">Settings</h2>
                <h3 class="ca-sub">Personalized to your needs</h3>
            </div>
        </a>
    </li>
</ul>

Widzimy menu zbudowane na liście. Naszą uwagę mogą zwrócić w klasie “ca-icon” różne litery. Postanowiłem dodać zamiast obrazków czcionkę WebSymbolsRegular, która poprzez litery z alfabetu wyświetla nam ładne ikonki.

Niektórzy stwierdzą po co?

Po to, żeby w łatwy sposób powiększać ikonki jeśli tego potrzebujemy (font-size:30px;) oraz w banalny sposób zmieniać też kolory ikonek (color:red;) w stylach css. Prawda, że ułatwia życie. Ile musielibyście się napocić, żeby zmienić kolor ikonek w tradycyjny sposób (podmieniając grafikę) 🙂

Wszystkie pliki i czcionki znajdziecie w paczke na końcu wpisu.
Poprzez font face dodajemy style czionek:

@font-face {
    font-family: 'WebSymbolsRegular';
    src: url('websymbols/websymbols-regular-webfont.eot');
    src: url('websymbols/websymbols-regular-webfont.eot?#iefix') format('embedded-opentype'),
        url('websymbols/websymbols-regular-webfont.woff') format('woff'),
        url('websymbols/websymbols-regular-webfont.ttf') format('truetype'),
        url('websymbols/websymbols-regular-webfont.svg#WebSymbolsRegular') format('svg');
    font-weight: normal;
    font-style: normal;
}

Proszę zwrócić uwagę w jaki sposób dodałem efekty hover po najechaniu na menu.
Użyłem efektu css animation i keyframsów, żeby rozłożyć animacje w czasie:

.ca-menu{
	font-family:arial;
    padding:0;
    margin:20px auto;
    width: 500px;
}
.ca-menu li{
    width: 500px;
    height: 100px;
    overflow: hidden;
    position: relative;
    display: block;
    background: #fff;
    -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
    -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
    box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
    margin-bottom: 4px;
    -webkit-transition: all 300ms linear;
    -moz-transition: all 300ms linear;
    -o-transition: all 300ms linear;
    -ms-transition: all 300ms linear;
    transition: all 300ms linear;
}
.ca-menu li:last-child, .ca-menu2 li:last-child{
    margin-bottom: 0px;
}
.ca-menu li a, .ca-menu2 li a{
    text-align: left;
    width: 100%;
    height: 100%;
    display: block;
    color: #333;
    position: relative;
}
.ca-icon{
    font-family: 'WebSymbolsRegular', cursive;
    font-size: 20px;
    text-shadow: 0px 0px 1px #333;
    line-height: 90px;
    position: absolute;
    width: 90px;
    left: 20px;
    text-align: center;
    -webkit-transition: all 300ms linear;
    -moz-transition: all 300ms linear;
    -o-transition: all 300ms linear;
    -ms-transition: all 300ms linear;
    transition: all 300ms linear;
}
.ca-content{
    position: absolute;
    left: 120px;
    width: 370px;
    height: 60px;
    top: 20px;
}

.ca-main{
	margin:0;
    font-size: 30px;
    -webkit-transition: all 300ms linear;
    -moz-transition: all 300ms linear;
    -o-transition: all 300ms linear;
    -ms-transition: all 300ms linear;
    transition: all 300ms linear;
}
.ca-sub{
	font-weight:normal;
    font-size: 14px;
    color: #666;
    -webkit-transition: all 300ms linear;
    -moz-transition: all 300ms linear;
    -o-transition: all 300ms linear;
    -ms-transition: all 300ms linear;
    transition: all 300ms linear;
}
.ca-menu li:hover{
    background: #e1f0fa;
}
.ca-menu li:hover .ca-icon{
    font-size: 40px;
    color: #259add;
    opacity: 0.8;
    text-shadow: 0px 0px 13px #fff;
}
.ca-menu li:hover .ca-main{
    opacity: 1;
    color:#2676ac;
    -webkit-animation: moveFromTop 300ms ease-in-out;
    -moz-animation: moveFromTop 300ms ease-in-out;
    -ms-animation: moveFromTop 300ms ease-in-out;
}
.ca-menu li:hover .ca-sub{
    opacity: 1;
    -webkit-animation: moveFromBottom 300ms ease-in-out;
    -moz-animation: moveFromBottom 300ms ease-in-out;
    -ms-animation: moveFromBottom 300ms ease-in-out;
}
@-webkit-keyframes moveFromBottom {
    from {
        opacity: 0;
        -webkit-transform: translateY(200%);
    }
    to {
        opacity: 1;
        -webkit-transform: translateY(0%);
    }
}
@-moz-keyframes moveFromBottom {
    from {
        opacity: 0;
        -moz-transform: translateY(200%);
    }
    to {
        opacity: 1;
        -moz-transform: translateY(0%);
    }
}
@-ms-keyframes moveFromBottom {
    from {
        opacity: 0;
        -ms-transform: translateY(200%);
    }
    to {
        opacity: 1;
        -ms-transform: translateY(0%);
    }
}

@-webkit-keyframes moveFromTop {
    from {
        opacity: 0;
        -webkit-transform: translateY(-200%);
    }
    to {
        opacity: 1;
        -webkit-transform: translateY(0%);
    }
}
@-moz-keyframes moveFromTop {
    from {
        opacity: 0;
        -moz-transform: translateY(-200%);
    }
    to {
        opacity: 1;
        -moz-transform: translateY(0%);
    }
}
@-ms-keyframes moveFromTop {
    from {
        opacity: 0;
        -ms-transform: translateY(-200%);
    }
    to {
        opacity: 1;
        -ms-transform: translateY(0%);
    }
}

Zobacz efekt końcowy DEMO

xHej! Jeśli macie jakieś pytania, problemy bądź sugestie to komentujcie pod tematem.

Stąd możecie pobrać całą paczkę MENU: