html - 在背景图像上创建透明的 CSS 三 Angular 形

标签 html css css-shapes

我正在背景图像上制作一个分隔线,其中有一条线,中间有一个指针,表示要在其下方查看。这只是一根线,所以分隔线不是实心的。当我制作分隔线时,父级的边框穿过三 Angular 形,因为背景是透明的。

看看我想解释的内容:

enter image description here

我希望三 Angular 形隐藏中间的那条线。这就是我创建分隔线的方式:

<div class="splash">
    <div class="splash-divider">
    </div>
</div>

.splash {
    background: url("https://unsplash.imgix.net/photo-1416339442236-8ceb164046f8?q=75&fm=jpg&s=8eb83df8a744544977722717b1ea4d09");
    height: 200px;

}

.splash-divider {
    position: relative;
    margin: 20px auto 0 auto;
    width: 50%;
    height: 30px;
    border-bottom: 1px solid #ffffff;
    box-shadow: 0px 2px 0px rgba(0, 0, 0, 0.15);
}

.splash-divider:after {
    content: "";
    position: absolute;
    top: 15px;
    left: 50%;
    width: 30px;
    height: 30px;
    border-left: 1px solid #ffffff;
    border-bottom: 1px solid #ffffff;
    box-shadow: -2px 2px 0 rgba(0, 0, 0, 0.15);
    transform: rotate(-45deg) translate(-50%, -50%);
    -webkit-transform: rotate(-45deg) translate(-50%, -50%);
    -ms-transform: rotate(-45deg) translate(-50%, -50%);
    -moz-transform: rotate(-45deg) translate(-50%, -50%);
    -o-transform: rotate(-45deg) translate(-50%, -50%);
}

如您所见,父级包含背景图像。如果它只是一种颜色,那就 super 简单了。

这是fiddle .

编辑

解决了!这是工作 fiddle :http://jsfiddle.net/a9fkh0tp/1/

最佳答案

这是可能的,请参阅现场演示:http://jsfiddle.net/a9fkh0tp/1/

.splash {
  background: url("https://unsplash.imgix.net/photo-1416339442236-8ceb164046f8?q=75&fm=jpg&s=8eb83df8a744544977722717b1ea4d09");
  height: 200px;
}
.splash-divider {
  position: relative;
  margin: 20px auto 0 auto;
  width: 50%;
  height: 30px;
  border-bottom: 1px solid transparent;
}
.splash-divider:after {
  content: "";
  position: absolute;
  top: 15px;
  left: 50%;
  width: 30px;
  height: 30px;
  border-left: 1px solid #ffffff;
  border-bottom: 1px solid #ffffff;
  box-shadow: -2px 2px 0 rgba(0, 0, 0, 0.15);
  transform: rotate(-45deg) translate(-50%, -50%);
}
.splash-divider span:before,
.splash-divider span:after {
  position: absolute;
  top: 0;
  display: inline-block;
  content: "";
  width: 50%;
  height: 30px;
  border-bottom: 1px solid #fff;
  box-shadow: 0px 2px 0px rgba(0, 0, 0, 0.15);
}
.splash-divider span:before {
  left: -28px;
}
.splash-divider span:after {
  right: -16px;
}
<div class="splash">
  <div class="splash-divider"><span></span></div>
</div>

这个想法是将单行分成两部分(左+右)。为此,请添加 <span>进入<div> ,所以<div class="splash-divider"><span></span></div>然后我们可以用它玩更多。

关于html - 在背景图像上创建透明的 CSS 三 Angular 形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376141/

相关文章:

html - 导航图标未显示在移动版本上?

javascript - 如何在 JQuery 中通过属性查找元素?

当样式表通过 fxml 链接时,JavaFX tooltop 样式类将不适用

css - 如何使用 CSS 创建多色边框?

CSS形状像茶滴

html - CSS 进度圈

javascript - 如何使用 Jquery 在 Javascript 中加载页面时调用函数

javascript - 对现有 jQuery 幻灯片的小改动

html - CSS - 如何避免每个段落都使用 class=?

javascript - 选择除所选迭代之外的所有 NG-Repeat 迭代