4

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

在此处输入图像描述

这是我目前拥有的(蓝色三角形是直角三角形而不是钝角等腰线):

在此处输入图像描述

这是我的 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 的想法(减小左边框的大小),但是当我这样做时,三角形的线条并不清晰:

在此处输入图像描述

ETA使用 transform:rotate 固定边缘(谢谢@jlbruno!)...但不适用于 IE8。我尝试使用微软矩阵变换过滤器(相关的 SO 问题),但没有帮助。我如何让它在 IE8 中也能正常工作?这是我为 IE8 尝试的 CSS:

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

3 回答 3

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
}
于 2013-01-29T21:31:20.453 回答
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>
于 2013-12-13T15:42:13.683 回答
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;
}
于 2013-01-29T21:53:27.963 回答