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

border-leftを11ではなくの.guideList .activePointerようなものに変更し7pxます...その値をドロップすればするほど、角度は広くなります。

.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

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 に答える
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 に答える