使用顶部三角形为div添加边框

时间:2016-11-09 17:52:21

标签: html css html5 css3

我尝试使用顶部三角形为div添加边框

问题是边框未应用于三角形部分



body {
  background-color: #F3F5F6;
}
.info-panel {
  display: block;
  position: relative;
  background: #FFFFFF;
  padding: 15px;
  border: 1px solid #DDDDDD;
  margin-top: 20px;
}
.info-panel:after {
  content: '';
  display: block;
  position: absolute;
  left: 20px;
  bottom: 100%;
  width: 0;
  height: 0;
  border-bottom: 10px solid #FFFFFF;
  border-top: 10px solid transparent;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
}

<div class="info-panel">
  Testing
</div>
&#13;
&#13;
&#13;

我不想添加css框阴影。

我需要一个边框。

jsFiddle

3 个答案:

答案 0 :(得分:12)

实际上“三角形部分”本身就是边框,这就是为什么你不能对它应用CSS边框的原因,但是有一种解决方法。

使用:before伪元素创建另一个大于第一个的三角形并将边框颜色应用于它。

.info-panel {
  display: block;
  position: relative;
  background: #FFFFFF;
  padding: 15px;
  border: 1px solid #DDDDDD;
  margin-top: 20px;
}
.info-panel:before, .info-panel:after {
  content: '';
  display: block;
  position: absolute;
  bottom: 100%;
  width: 0;
  height: 0;
}
.info-panel:before {
  left: 19px;
  border: 11px solid transparent;
  border-bottom-color: #ddd;
}
.info-panel:after {
  left: 20px;
  border: 10px solid transparent;
  border-bottom-color: #fff;
}
<div class="info-panel">
  Testing
</div>

答案 1 :(得分:1)

离开这个

.info-panel:after {
    border-bottom-color: #FFFFFF;
}

它覆盖了绿色边缘。

检查此代码段

&#13;
&#13;
.info-panel {
  display: block;
  position: relative;
  background: #FFFFFF;
  padding: 15px;
  border: 1px solid #DDDDDD;
  margin-top: 20px;
}
.info-panel:before {
  border: 1px solid #DDDDDD;
}
.info-panel:after {
  content: '';
  display: block;
  position: absolute;
  left: 20px;
  bottom: 100%;
  width: 0;
  height: 0;
  border-bottom: 10px solid green;
  border-top: 10px solid transparent;
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
}
&#13;
<div class="info-panel">
  Testing
</div>
&#13;
&#13;
&#13;

希望有所帮助

答案 2 :(得分:1)

您可以使用fontAwesome实现这一目标。查看我的示例并根据需要进行调整

.info-panel {
    	display: block;
    	position: relative;
    	background: #FFFFFF;
    	padding: 15px;
    	border:1px solid #DDDDDD;
    	margin-top:20px;
    }
   
    .info-panel:after, .info-panel:before {
    	content: '\f0d8';
      font-family: fontAwesome;
    	display: block;  
    	position: absolute;
      font-size: 36px;
    	left: 20px;
    	bottom: 100%;
      top: -22px;
    	width: 0;
    	height: 0;
      color: #ccc; /* should be your desired border color */
    
    }
    
  .info-panel:before {
    color: white;
    z-index: 2;
    top: -21px;
    }
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"/>
<div class="info-panel">
    Testing
</div>

相关问题