Кнопка блеск / свечение с CSS3 - PullRequest
2 голосов
/ 17 января 2011

У меня есть меню навигации, которое я пытаюсь воссоздать, используя только CSS3 и HTML.Дизайн требует блеска / свечения на выбранной в данный момент кнопке меню в соответствии с кнопкой «домой» на прилагаемой картинке.Это возможно, используя только код, или мне нужно использовать изображение свечения ?!alt text

Обратите внимание, что белая и белая линии наиболее заметны в центре кнопки, а затем исчезают по краям.

Ответы [ 4 ]

4 голосов
/ 17 января 2011

CSS3 радиальные градиенты позволяют достичь аналогичного эффекта, хотя использование фонового изображения CSS может быть проще для точных настроек.В частности, CSS3-градиенты являются линейными, даже радиальными.

Я создал небольшой пример с использованием радиальных градиентов Firefox (для поддержки Webkit потребуется совсем другой код): http://jsfiddle.net/rxMf6/

Example of button with radial gradient

HTML:

<div class="highlighted-button">
    <div class="highlight"></div>
    Button
</div>

CSS:

.highlighted-button {
    background: #000;
    color: #fff;
    font: bold 0.8em Arial, sans-serif;
    padding-bottom: 0.9em;
    text-align: center;
    text-transform: uppercase;
    width: 8em;
}

.highlight {
    background: -moz-radial-gradient(center top, ellipse farthest-side,
                                     #fff 0%, #000 100%);
    height: 0.5em;
    margin-bottom: 0.4em;
}
0 голосов
/ 18 января 2011

Да, это сияние возможно в css3.Вы регулируете градиент в соответствии с вашими требованиями. Вы используете фильтр для IE. Я надеюсь, что этот пример поможет вам.

.menu {
    float: left;
    margin: 10px 10px 10px 0;
    background: #000;
    width: 700px;
}
.menu ul {
    margin: 15px 0 15px 5px;
}
.menu ul li {
    display: inline;
    list-style: none;
    font-size: 12px;
    font-family: arial;
    color: #fff;
    font-weight: normal;
}
.menu ul li:before {
    display: inline;
    content: "/";
}
.menu ul li:first-child:before {
    content: " ";
    height:45px;
}
.menu ul li a {
    margin: 0 15px 0 15px;
    color: #fff;
    text-decoration: none;
    padding:17px 30px 16px 30px;;
}
.menu ul li a:hover {
    border-top:1px solid rgba(255, 255, 255, 0.4);
    text-decoration: underline;
    color: #fff;
    padding:17px 30px 16px 30px;
    background: -moz-radial-gradient(center -5px 45deg, ellipse farthest-corner, rgb(255, 255, 255)0%, rgba(0, 0, 0, 0.2)70%) repeat #000;
    background: -webkit-gradient(radial, 50% 0, 0, 50% 0,50, from(rgba(255, 255, 255, 0.9)), to(#000));

}



    <nav>
                <div class="menu">
                    <ul>
                        <li><a href="#">HOME</a></li>
                        <li><a href="#">WHAT IS THIS?</a></li>
                        <li><a href="#">SWEAR DICTIONARY</a></li>
                    </ul>
                </div>
    </nav>
0 голосов
/ 17 января 2011

Вот похожий градиент CSS3.Вы можете изменить цвета и получить желаемый вид.Я не знаю, если это точно так, как вы хотели.Это не делает округлый вид просто прямой градиент.

background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.32, rgb(14,15,14)),
color-stop(0.7, rgb(0,0,0)),
color-stop(0.85, rgb(201,201,201))
);
background-image: -moz-linear-gradient(
center bottom,
rgb(14,15,14) 32%,
rgb(0,0,0) 70%,
rgb(201,201,201) 85%
);
0 голосов
/ 17 января 2011

Вам понадобится изображение.На самом деле нет никакого способа достичь этого эффекта с помощью простого кода.Хотя большинство браузеров могут обрабатываться с использованием CSS3 box-shadow или градиентов, Internet Explorer 8 и частично IE 9 будут иметь проблемы.Чтобы обеспечить надлежащую поддержку кросс-браузеров, вам придется использовать изображения для достижения желаемого эффекта.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...