"透明"在背景上的项目边框

时间:2018-05-01 18:50:25

标签: css transparency

我认为,关于某种透明边框有几个问题,但不是我想要的。

enter image description here

它可能非常愚蠢但是:是否有可能以某种方式在背景上设置项目(那些白色方块)(黑色纹理),每个项目都有一个边界"删除" 10px(或其他)边框的背景? 所以你有一个连续的背景,每个项目都在它上面"切断"它的一部分。 一个真正的透明"边界(就像其他问题一样)显然会让你看到背景,所以这不是我的意思。

如果没有,那么实现这样的响应式设计的方法是什么?

对不起,我不知道其他任何解释方法。谢谢。

请参阅示例/小提琴:jsfiddle.net/14nn2pLy



   html, body {
    margin: 0;
    padding: 0;
    height: 100%;
    background: #fd1dfa;
}

#main_header {
    position: fixed;
    top: 0px;
    width: 100%;
    height: 200px;
    background: url() no-repeat center top;
    background-size: contain;
}

#main_footer {
    position: fixed;
    bottom: 0px;
    width: 100%;
    height: 200px;
    background: url(https://preview.ibb.co/hACMzS/background_footer.png) no-repeat center bottom;
    background-size: contain;
}

#icons {
    position: fixed;
    bottom: 0px;
    width: 900px;
    height: 75px;
    background: url(https://preview.ibb.co/mkPODn/footer_items.png) no-repeat center bottom;
    border: 10px;
    border-color: rgba( 0, 0, 0, 0);
}

<div id="main_header"></div>

<div id="main_footer">
    <div id="icons"></div>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:3)

我的思考过程

我能想到的唯一方法是使边框与背景颜色相同(在您的情况下,粉色阴影),但请注意,只有在背景颜色为实色时才可以使用。

示例:

&#13;
&#13;
.bg {
  position: relative;
  height: 250px;
  width: 500px;
  background-image: url(https://i.imgur.com/nRXO8xa.jpg);
}

.border {
  height: 20px;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 30px;
  margin: auto;
  padding: 10px;
  background: steelblue;
  border: 10px solid black;
}

.no-border {
  height: 20px;
  position: absolute;
  top: 0;
  bottom: 0;
  right: 30px;
  margin: auto;
  padding: 10px;
  background: steelblue;
  border: 10px solid #F7F2D5;
}
&#13;
<div class="bg">
  <div class="border">black border</div>
  <div class="no-border">"transparent" border</div>
</div>
&#13;
&#13;
&#13;

解决方案:

在背景上使用clip-path可以获得所需的效果。请注意,我也改变了HTML和CSS,否则它将无法正常工作。 clip-path用于基本上剪切您不想要的背景图片部分,以便它变为透明,并且它已被激活在悬停。

&#13;
&#13;
body,
html {
  height: 100%;
  margin: 0;
}

body {
  background: url(https://images.unsplash.com/photo-1473662712020-75289ee3c5de);
  background-size: cover;
}

.container {
  height: 140px;
  width: 618px;
  position: relative;
  top: 40%;
  margin: 0 auto;
}

.bg {
  height: 140px;
  width: 618px;
  position: relative;
}

.icon {
  height: 50px;
  width: 50px;
  position: absolute;
  top: 25.25%;
  left: 38.25%;
  z-index: 1;
}

.icon:hover+.bg {
  clip-path: polygon(0 0, 0 100%, 44% 78.5%, 37.5% 50%, 44% 22%, 50.5% 50%, 44% 78.5%, 0 100%, 100% 100%, 100% 0);
}
&#13;
<div class="container">

  <div class="icon">
    <img src="https://i.imgur.com/V2eI4Rm.png" alt="icon">
  </div>

  <div class="bg">
    <img src="https://i.imgur.com/D3V3ZYq.png" alt="background">
  </div>

</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以创建一个透明背景的图像,并将其用作边框图像。

.background {
position: relative;
  width: 100%;
  height: 100%;
  padding: 10px;
  background-color: #fd1dfa;
  z-index: 1 !important;
}

.background:after {
  content: "";
  display: table;
  clear: both;
}

hr {
  border: 10px solid white;
  position: relative;
  top: 100px;
  z-index: 5 !important;
}

.center {
  position: relative;
  width: 50px;
  height: 50px;
  background-color: #fd1dfa;
  color: #ffffff;
  padding: 10px;
  z-index: 10 !important;
}

.border {
  position: relative;
  z-index: 8 !important;
  margin: 30px;
  width: 70px;
  height: 70px;
  float: left;
  background: white;
  border: 10px solid transparent;
  border-image: 
  
}
<div class="background">
 <hr>
  <div class="border">
    <div class="center">
      text and words
    </div>
  </div>

  <div class="border">
    <div class="center">
      text and words
    </div>
  </div>

  <div class="border">
    <div class="center">
      text and words
    </div>
  </div>
   
  
</div>