2

私が何をしているかを示すJSfiddleをチェックしてください:http://jsfiddle.net/Amp3rsand/FPj3s/1/

HTML:

<ul id="navigation">
    <li><a href="#">BLAH</a></li>
    <li><a href="#">MORE <br /> BLAH</a></li>
    <li><a href="#">STILL <br /> MORE</a></li>
    <li><a href="#">YADDA <br /> YADDA</a></li>
    <li><a href="#">ETC ETC <br /> ETC ETC</a></li>
    <li><a href="#">FINISH</a></li>
</ul>

CSS:

body {
    font-size: 12px;}
}
#navigation {
    width: 600px;
    height: 50px;
    position: absolute;
    left: 20px;
    top: 25px;
}

#navigation li {
    list-style-type:none;
    width: 94px;
    height: 40px;
    display: block;
    float: left;
    margin: 0 5px 0 0;
    text-align: center;
    font-weight: bold;
    background: lightgrey;
}

#navigation li:first-child {
    border-top: 40px solid lightgrey;
    border-left: 25px solid transparent;
    height: 0;
    width: 70px;
    background: none;
}

#navigation li:first-child a {
    position: relative;
    top: -35px;
    right: 0px
}

#navigation li:last-child {
    border-top: 40px solid lightgrey;
    border-right: 25px solid transparent;
    height: 0;
    width: 70px;
    background: none;
}

#navigation li:last-child a {
    position: relative;
    top: -35px;
    left: 5px;
}
#navigation li:last-child a:hover {
    top: -35px;
    left: 5px;
}

#navigation li a {
    display: block;
    height: 40px;
    text-decoration: none;
    color:#000;
}

#navigation li a:hover {
    background: grey;
}

ライトグレーの形状は、ホバーをどのように見せたいかです。最初と最後の子だけが異なって見える必要がありますが、レイアウトを台無しにすることなくホバー時に境界線をいじる方法がわかりません。国境の悪ふざけのために最初と最後の「a」要素を移動する必要がありましたが、今は行き詰まっています。何を提案しますか?


編集:ホバービットの形状を変更するためにこれを行うことができることに気付きましたが、リンクの位置はまだ問題を引き起こしています

#navigation li:last-child a:hover {
    border-top: 40px solid grey;
    border-right: 25px solid transparent;
    height: 0;
    width: 70px;
    background: none;
}

こちらの JS Fiddle でライブをご覧ください

4

2 に答える 2

3

変更したいプロパティは<li>要素なので、リスト項目のホバー状態をターゲットにして、背景と境界線の色を変更します

#navigation li:hover {
    background: grey;
}

#navigation li:first-child:hover,
#navigation li:last-child:hover{
    background: none;
    border-top-color: grey;
}

更新されたフィドル

于 2013-08-12T05:31:32.970 に答える
2

基本的に、最初/最後の子の 'border-top' をグレーに設定します。

CSSで使用できます:

#navigation li:first-child:hover {
border-top: 40px solid lightgrey;
}

しかし、これは Google Chrome では機能しなかったので、jQuery を使用してホバー効果として適用してみてはいかがでしょうか。

于 2013-08-12T05:30:12.487 に答える