如何在CSS中创建带边框的倾斜标签?

时间:2013-05-29 22:36:08

标签: css html5 css3 tabs

我正在尝试创建有角度的标签以位于内容部分之上,并且遇到了这个很好的例子:

HTML:

<div class="tab">
    <div class="arrow"></div>
</div>

CSS:

body
{
    background-color: #666;    
}
.tab
{
    height: 50px;
    width: 150px;
    border-radius: 10px 10px 0px 0px;
    background-color: #FFF;
    position: relative;
}

.arrow
{
  border-color: transparent transparent #FFF #FFF;
  border-style: solid;
  border-width: 23px 23px 23px 23px;
  height:0;
  width:0;
  position:absolute;
  bottom:0px;
  right:-43px;
}

http://jsfiddle.net/P3P3Z/2/

但是,我想为这个形状设置一个不同的2px边框颜色,不幸的是这个方法不起作用,因为它使用边框来创建形状的右侧。

关于如何修改它的任何想法?

1 个答案:

答案 0 :(得分:15)

您可以尝试这种方法: jsFiddle

我没有使用边框来创建倾斜效果,而是使用:after伪元素来创建它。这允许我在它周围设置边框。然后我使用:before伪元素来隐藏我不想看到的边框。 CSS中的重复2px是从边框宽度值派生的。

<强> CSS

.tab:before {
    height: 50px;
    width: 10px;
    display: block;
    content:" ";
    background-color: #FFF;
    position: absolute;
    right: -2px;
    top: -2px;
    border-top: 2px solid blue;
    border-bottom: 2px solid blue;
}
.tab {
    height: 50px;
    width: 150px;
    border-radius: 10px 10px 0px 0px;
    background-color: #FFF;
    position: relative;
    border: 2px solid blue;
}
.tab:after {
    display: block;
    content:" ";
    width: 100px;
    height: 50px;
    top: -2px;
    background-color: #FFF;
    position: absolute;
    right: -29px;
    transform:skewX(45deg);
    -ms-transform:skewX(45deg);
    -webkit-transform:skewX(45deg);
    border: 2px solid blue;
    z-index: -1;
}