更改三角形的形状

时间:2013-01-29 21:28:00

标签: css shapes css-shapes

我正在尝试使活动列表项看起来像这样:

enter image description here

这就是我现在所拥有的(蓝色三角形是直角三角形而不是钝角等腰):

enter image description here

这是我的HTML:

<ul class="guideList">
    <li><a>Consulting</a></li>
    <li class="active">Law<span class="activePointer"></span></li>
    <li><a>Finance</a></li>
    <li><a>Technology</a></li>
</ul>

这是我的CSS:

.guideList{
    font-size: 12px;
    line-height: 12px;
    font-weight: bold;
    list-style-type: none;
    margin-top: 10px;
    width: 125px;
}

.guideList li{
    padding: 5px 0px 5px 10px;
}

.guideList .active{
    background-color: #0390d1;
    color: white;
}

.guideList .activePointer{
    margin-top: -5px;
    margin-bottom: -5px;
    float: right;
    display: inline-block;
    width: 0px;
    height: 0px;
    border-top: 11px solid white;
    border-left: 11px solid transparent;
    border-bottom: 11px solid white;
}

jsFiddle

我该如何解决这个问题?

ETA 我尝试了@ jlbruno的想法(减小左边框的大小),但是当我这样做时,三角形的线条并不清晰:

enter image description here

ETA 使用转换:旋转固定边缘(谢谢@jlbruno!)...但不适用于IE8。我尝试使用微软矩阵变换过滤器(related SO question),但它没有帮助。我如何在IE8中使用它? 这是我为IE8尝试的CSS:

 -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.9999996192282494, M12=-0.0008726645152362283, M21=0.0008726645152362283, M22=0.9999996192282494, SizingMethod='auto expand')";

3 个答案:

答案 0 :(得分:6)

.guideList .activePointer上的边框左侧更改为7px而不是11 ... ...删除该值越多,角度就越宽。

.guideList .activePointer{
    margin-top: -5px;
    margin-bottom: -5px;
    float: right;
    display: inline-block;
    width: 0px;
    height: 0px;
    border-top: 11px solid white;
    border-left: 7px solid transparent;
    border-bottom: 11px solid white;
    -webkit-transform: rotate(0.05deg); // added to smooth edges in Chrome
}

答案 1 :(得分:0)

由于CSS没有为您提供所需的结果,因此您可能需要为此对象执行右对齐的背景图像。

<强> HTML

<ul class="guideList">
    <li><a>Consulting</a></li>
    <li class="active">Law</li>
    <li><a>Finance</a></li>
    <li><a>Technology</a></li>
</ul>

<强> CSS

.guideList .active{
    background: url('images/right-arrow.png') #0390d1 center right no-repeat;
    color: white;
}

答案 2 :(得分:0)

你可以使用这个html和Css:

<强>的CSS:

    .Rectangular{
    width: 100px; 
    height: 30px; 
    text-align: left; 
    position: relative; 
    background-color: #0390D1; 
    color: #fff; 
    padding-left: 10px; 
    font: 12px/30px tahoma; 
    margin-right: 100px;}
.Rectangular>span{ 
    display: inline-block;
    border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #0390D1;
    border-left: 30px solid #0390D1;
    border-right: 30px solid rgba(0, 0, 0, 0);
    border-style: solid;
    border-width: 15px;
    position: absolute;
    right: -29px;
    top: 0;
}

HTML:

<div class="Rectangular">Law <span></span></div>