CSS3背景加上没有图像的透明度

时间:2012-10-23 22:24:06

标签: css

我在一个按钮上有一个坚实的背景颜色,我正在寻找一些CSS(3?),它会在颜色的顶部覆盖一个半透明的白色,但仅限于它的前50%。我正在寻找一种非渐变,非基于图像的光泽效果。

如何在不使用图像的情况下实现这一目标?如果解决方案不支持旧浏览器,那就没关系。

编辑:以下书架的答案似乎有效,但字体也变得透明......

<!DOCTYPE html>
<html>
<head>
<style>
a
{
    display: inline-block;
    padding:30px;
    background: salmon;
    position: relative;
    text-align: center;
    text-decoration:none;
    color:#000;
    font-size:20pt;
    font-weight:bold;
}

a:before
{
    content: '';
    width: 100%;
    height: 50%;
    background: rgba(255,255,255,0.5);
    position: absolute;
    top: 0;
    left:0;
}
</style>
</html>
<body>

<div>
    <a href="#">Test Link</a>
</div>

</body>
</html>

谢谢,

安迪

2 个答案:

答案 0 :(得分:2)

在相对父级上使用绝对定位的伪元素。

Demo

a {display: block; width: 100px; height: 50px; background: salmon; position: relative;}
a:before {
    content: '';
    width: 100%;
    height: 50%;
    background: rgba(255,255,255,.5);
    position: absolute;
    top: 0;
    left:0;
}

答案 1 :(得分:1)

另一种完全不同的技术(提到但未在评论中解释)是使用带有硬色停止的CSS3渐变。

a {display: block; width: 100px; height: 50px; position: relative;
  background: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(50%, rgba(255, 255, 255, 0)), color-stop(50%, rgba(255, 255, 255, 0.5))), salmon;
  background: -webkit-linear-gradient(bottom, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0.5) 50%), salmon;
  background: -moz-linear-gradient(bottom, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0.5) 50%), salmon;
  background: -o-linear-gradient(bottom, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0.5) 50%), salmon;
  background: linear-gradient(bottom, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0.5) 50%), salmon;}​

Demo