【问题标题】:Button with beveled edge on semi-transparent background半透明背景上带有斜边的按钮
【发布时间】:2013-04-15 19:43:29
【问题描述】:

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

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

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

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

【问题讨论】:

  • 尝试使用链接从此处的图像生成效果:colorzilla.com/gradient-editor 先尝试一个矩形按钮,然后使用 css 或您喜欢的方式对其进行切片
  • 对此可能没有一个好的纯 CSS 解决方案(请参阅:codepen.io/cimmanon/pen/bvneF)。您是否考虑过使用 SVG 背景?
  • 如果指定包含div没问题,可以试试这个:[stackoverflow.com/a/15255561/1926369](使用容器剪角)
  • @cimmanon - 我没有考虑过。会的。
  • @vals - 感谢您的链接。我会保留它以供将来参考。

标签: css opacity


【解决方案1】:

我喜欢一个好的 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 变换。这允许任何背景,如 您可以通过我在小提琴中设置为背景的渐变看到。

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

【讨论】:

  • 哇!伟大的工作@PeterVR。这太棒了。我从来没有用过transform: skew,所以这是一次很棒的学习体验。谢谢!
猜你喜欢
  • 2011-09-15
  • 2015-07-13
  • 2020-10-30
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 2021-10-02
相关资源
最近更新 更多