我有一个导航菜单,我试图仅使用CSS3和HTML重新创建。该设计要求根据附加图片上的“主页”按钮在当前所选菜单按钮上发光/发光。只使用代码可以实现这种效果还是需要使用发光图像?!
请注意,在按钮中心最明显的是光线和白线,然后向边缘逐渐消失。
答案 0 :(得分:4)
CSS3的radial gradients可以让您获得类似的效果,尽管使用CSS背景图像可能更容易进行像素完美调整。具体来说,CSS3的渐变是线性的,甚至是径向渐变。
我使用Firefox的径向渐变构建了一个小例子(对Webkit的支持需要完全不同的代码):http://jsfiddle.net/rxMf6/
<强> 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;
}
答案 1 :(得分:0)
您需要一张图片。只有代码才能实现这种效果。虽然大多数浏览器都可以使用CSS3 box-shadow
或渐变来处理,但Internet Explorer 8和部分IE 9会有问题。要提供适当的跨浏览器支持,您必须使用图像来实现所需的效果。
我说你需要一张图片的原因非常好,可能需要包含额外的标记和hacky变通方法才能达到效果。这是不可取的,并且在尝试实现CSS3版本时可能会引起冲突。
答案 2 :(得分:0)
.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>
答案 3 :(得分:-1)
这是一个类似的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%
);