0

我正在尝试使用 CSS 创建一个按钮,该按钮将位于具有斜面或切割边缘的半透明背景上。这是 Photoshop 模型:

我可以使用纯色背景成功地做到这一点,因为我可以使用具有相同背景的伪元素并“覆盖”按钮的边缘,但它不适用于半透明背景。

这是我到目前为止所得到的,在坚实的背景下:http ://codepen.io/anon/pen/GJFpc

我开始相信仅使用 CSS 是不可能的,但仍然希望 SO 可以再次拯救我!

4

1 回答 1

3

我喜欢一个很好的 css 挑战,所以我尝试了一些东西,这就是我能想到的:http: //jsfiddle.net/QE67v/3/

css(无前缀)如下所示:

a.cta {
    position: relative;
    float: left;
    padding: 8px 10px;
    text-align: center;
    text-decoration: none;
    text-transform: uppercase;
    font-size: 15px;
    font-weight: normal;
    background-image: linear-gradient(top, #ffffff 0%, #e4e4e4 100%);
    box-shadow: inset 0 -2px 1px 2px #fff;
    line-height: 16px;
    height: 16px;
    z-index: 2;
}
a.cta:after {
    content: '';
    display: block;
    position: absolute;
    width: 32px;
    height: 32px;
    right: -16px;
    top: 0;
    background-image: linear-gradient(top, #ffffff 0%, #e4e4e4 100%);
    box-shadow: inset -3px -2px 1px 2px #fff;
    transform: skewX(-45deg);
    z-index: -1;
}

您的代码有两个主要区别:

  1. 我使用插入框阴影来实现白色“斜角”。你也可以用渐变来做到这一点,但我发现阴影更直观。
  2. 我没有让按钮变宽并用背景颜色的伪元素覆盖左下角,而是将按钮保持在正常宽度,并添加了一个伪元素,应用了 skewX 变换。这允许任何背景,正如您在我的小提琴中设置为背景的渐变所看到的那样。

我相信这就是你所追求的。随时询问您是否需要任何进一步的帮助/解释。

于 2013-04-15T21:11:26.573 回答