0

我只知道圆形边框方式。无法弄清楚如何创建这种无图像的ul li标签。如您所见,它不完全是三角形:它的顶部和底部有点圆润。是否可以使用 css3 创建与下图最相似的东西?如果是,如何?

先感谢您!

在此处输入图像描述

4

3 回答 3

8

标记:

首先你必须定义你的妆容如下:

<menu type=list>
    <li>home</li> 
    <li>work</li>  
</menu>

然后使用 skew、rotate、box-shadow、border-radius 和 CSS 伪元素,如下所示:

来源:http ://www.w3schools.com/css3/css3_2dtransforms.asp http://www.w3schools.com/cssref/css3_pr_box-shadow.asp http://www.w3schools.com/cssref/css3_pr_border-radius。 asp http://www.w3schools.com/css/css_pseudo_elements.asp

演示1:http : //jsfiddle.net/kougiland/mVu2z/5/ 在此处输入图像描述

menu{
   position:relative;
   width:320px;
   height:40px;
}

li{
    float:left;
    width:50%;
    background-color:red;
    list-style:none;
    position:relative;
    height:54px;
    text-align:center;
    line-height:50px;
    color:white;
}

li:before,li:after{
    position: absolute;
    content: "";
    height: 32px;
    width: 32px;
    border-radius: 4px;
    background-color: red;
    top: 11px;
    -webkit-transform: rotate(45deg) skew(16deg,16deg);
    -moz-transform: rotate(45deg) skew(16deg,16deg);
    transform: rotate(45deg) skew(16deg,16deg);
}
li:before{
    left:-15px;
}
li:after{
    right:-15px;
}
li:nth-child(2):before{
    box-shadow: 0px 0 0 black,-4px 4px 0 black;
}

演示2:http : //jsfiddle.net/kougiland/mVu2z/4/ 在此处输入图像描述

样式:

menu{
   position:relative;
   width:320px;
   height:40px;
}

li{
    float:left;
    width:50%;
    background-color:red;
    list-style:none;
    position:relative;
    height:54px;
    text-align:center;
    line-height:50px;
    color:white;
}

li:before,li:after{
    position: absolute;
    content: "";
    height: 26px;
    width: 26px;
    border-radius: 4px;
    background-color: red;
    top: 14px;
    -webkit-transform: rotate(45deg) skew(30deg,30deg);
    -moz-transform: rotate(45deg) skew(30deg,30deg);
    transform: rotate(45deg) skew(30deg,30deg);
}
li:before{
    left:-13px;
}
li:after{
    right:-13px;
}
li:nth-child(2):before{
    box-shadow: 0px 0 0 black,-4px 4px 0 black;
}

演示3:http : //jsfiddle.net/kougiland/mVu2z/在此处输入图像描述

menu{
   position:relative;
   width:320px;
   height:40px;
}

li{
    float:left;
    width:50%;
    background-color:red;
    list-style:none;
    position:relative;
    height:54px;
    text-align:center;
    line-height:50px;
    color:white;
}

li:before,li:after{
    position:absolute;
    content:"";
    height:40px;
    width:40px;
    border-radius:4px;
    background-color:red;
    top: 7px;
    -webkit-transform:rotate(45deg);
    -moz-transform:rotate(45deg);
    transform:rotate(45deg);
}
li:before{
    left:-20px;
}
li:after{
    right:-20px;
}
li:nth-child(2):before{
    box-shadow: 0px 0 0 black,-4px 4px 0 black;
}
于 2013-09-14T08:46:30.007 回答
2

您可以将CSS transform rotate属性与 一起使用border-radius,在这里,我旋转了一个:after伪元素,它相对于容器元素绝对定位。而不是border-radius用于曲线。

演示

div {
    height: 30px;
    width: 100px;
    background: #f00;
    position: relative;
    margin: 100px;
}

div:after {
    background-color: #f00;
    content: "";
    display: block;
    height: 22px;
    width: 22px;
    transform: rotate(45deg);
    border-radius: 0 10px 0 0;
    right: -11px;
    top: 4px;
    position: absolute;
}
于 2013-09-14T08:18:37.487 回答
0

当然!Chris Coyier 为此编写了一个很酷的代码:

http://css-tricks.com/triangle-breadcrumbs

于 2013-09-14T08:11:30.540 回答