这是我试图用CSS渐变构建的按钮渐变:
这通常很容易做到,但正如你所看到的,顶部的渐变看起来更像是一个大的剪切径向渐变,因为它在中间向下倾斜并且不会一直延伸到边缘。
那么,任何想法如何用CSS来解决这个问题?
答案 0 :(得分:6)
在css中,径向背景中心不能位于其容器之外,但您可以通过使用渐变定位子元素来偏移径向背景。基本上你正在寻找这样的事情:
接近simshaun的优秀解决方案。但是,既然我喜欢挑战,我想尝试零额外加价的东西,我想出了这个:
这与你的解决方案非常接近,没有额外的标记。它只是一个带有插入阴影的线性渐变,可以衰减按钮的左右边缘。
答案 1 :(得分:4)
这肯定需要一些调整才能让它在不同的浏览器中看起来正确(我还没有真正做过):
CSS
.upgrade {
background: #FF3397;
color: #FFF;
float: left;
height: 30px;
line-height: 30px;
position: relative;
text-align: center;
width: 160px;
-webkit-box-shadow: 0px 0px 3px #999;
-moz-box-shadow: 0px 0px 3px #999;
box-shadow: 0px 0px 3px #999;
-moz-border-radius: 5px;
border-radius: 5px;
text-shadow: 1px -1px 3px #E60071;
filter: dropshadow(color=#666, offx=2, offy=-2);
font-family: Verdana, Sans-Serif;
font-size: 12px;
font-weight: bold;
}
.upgrade span {
background-image: -moz-radial-gradient(50% 50% 90deg,ellipse contain, #FFFFFF, rgba(255, 255, 255, 0));
background-image: -webkit-gradient(radial, 50% -50%, 51, 50% 0, 110, from(#FFFFFF), to(rgba(255, 255, 255, 0)));
display: block;
height: 100px;
left: -50px;
position: absolute;
top: -70px;
width: 260px;
z-index: 1;
}
.upgrade div {
z-index 2;
}
HTML 的
<div class="upgrade"><span></span><div>Upgrade for more</div></div>
答案 2 :(得分:1)
不是完整的答案,但这可能有用。
http://css-tricks.com/css3-gradients/
克里斯在这里有一个例子:
http://css-tricks.com/examples/CSS3Gradient/
具有径向渐变。这是使用CSS3和浏览器特定的实现,旧浏览器可能不支持。
否则,我不知道如何在不使用图像的情况下将其关闭。
希望这有帮助。
鲍勃
答案 3 :(得分:1)
只是为了踢,我把它扔在一起,但是谁知道它会在chrome之外做什么。我之前从未玩过径向渐变,但这很有趣 - 我想也许我的(可怕的)css可以为你的项目提供一些启示。
CSS:
#button {
display: table;
-moz-border-radius: 5px;
border-radius: 5px;
margin: 50px auto;
padding: 10px;
background:
-webkit-gradient(radial, 50% -200%, 180, 50% -110%, 35, from(#f81499), to(#fff), color-stop(.7,#f81499));
color: #fff;
text-shadow: 0px -1px 0 rgba(0,0,0,.25);
font-family: "droid sans", sans-serif;
font-size: 13px;
-webkit-box-shadow: 0px 1px 0px rgba(0,0,0,0.25);
}
HTML:
<html>
<head>
<title></title>
<link type="text/css" href="test.css" rel="stylesheet" />
</head>
<body>
<div id="button">Upgrade for more</div>
</body>
</html>