2016-12-14 3 views
1

私は多くのリスト項目を持つ順序のないリストを持っています。いくつかのリスト項目はリンクであり、いくつかはリンクではありません。私はリストアイテムにパディングを追加して、リンクかどうかにかかわらず外観が一貫しているようにします。つまり、アンカーにパディングを追加するのではなく、リストをアンカーに追加し、リンクを囲むようにします。パディング詰め物付きのリールにつながるリンク

ホバーでdisplay:blockを使用していますが、背景色はリンク内のテキストの周囲にのみあります。パディングは無視されます。リンクにパディングを入れないようにする方法はありますか?

ul li { 
 
    float: left; 
 
    line-height: 5em; 
 
    padding: 0 2em; 
 
} 
 
a:link { 
 
    display: block; 
 
} 
 
a:visited { 
 
    display: block; 
 
} 
 
a:hover { 
 
    display: block; 
 
    background-color: rgb(245, 245, 245); 
 
} 
 
a:active { 
 
    display: block; 
 
    background-color: rgb(245, 245, 245); 
 
}
<ul> 
 
    <li><a href="1.html">Item 1</a> 
 
    </li> 
 
    <li><a href="2.html">Item 2</a> 
 
    </li> 
 
    <li>Item 3</li> 
 
    <li>Item 4</li> 
 
    <li><a href="5.html">Item 5</a> 
 
    </li> 
 
</ul>

+0

私はコピーして貼り付けコードをバイオリンで、これは私がhttps://jsfiddle.net/Lkughrna/本当に私たちに問題が何であるかについて多くの情報を与えていないことを得たものです。私たちのために働くフィドルを作成することを検討してください。 –

+1

@ uom-pgregorio 'line-height:5em'の後ろにセミコロンがないのを見てください... https://jsfiddle.net/jagwfb11/(' hover'色はjsfiddleの背景に一致します!) – kukkuz

+0

色が不自然ですJS Fiddleのバックグラウンドとまったく同じです! – Markeee

答えて

2

あなたは使用してhoverに適用さbackground-colorを修正するためにhoverに代わりaliを使用することができます。

li:hover a { 
    display: block; 
} 
li:hover { 
    background-color: rgb(245, 245, 245); 
} 

の代わり:

a:hover { 
    display:block; 
    background-color:rgb(245,245,245); 
} 

デモは、以下を参照してください:

ここ

ul li { 
 
    float: left; 
 
    line-height: 5em; 
 
    padding: 0 2em; 
 
} 
 
a:link { 
 
    display: block; 
 
} 
 
a:visited { 
 
    display: block; 
 
} 
 
li:hover a { 
 
    display: block; 
 
} 
 
li:hover { 
 
    background-color: rgb(245, 245, 245); 
 
} 
 
a:active { 
 
    display: block; 
 
    background-color: rgb(245, 245, 245); 
 
}
<ul> 
 
    <li><a href="1.html">Item 1</a> 
 
    </li> 
 
    <li><a href="2.html">Item 2</a> 
 
    </li> 
 
    <li>Item 3</li> 
 
    <li>Item 4</li> 
 
    <li><a href="5.html">Item 5</a> 
 
    </li> 
 
</ul>

+1

素晴らしいです。私はそれを理解していないが、それは動作します! – Markeee

0

あなたが行く、私のコメントは、すべてを説明が、お気軽にすべきです。

<ul> 
    <li><a href="1.html">Item 1</a></li> 
    <li><a href="2.html">Item 2</a></li> 
    <li>Item 3</li> 
    <li>Item 4</li> 
    <li><a href="5.html">Item 5</a></li> 
</ul> 

ul{ 
    list-style-type: none; /* Feel free to remove this, just easier without bullets */ 
} 

ul li { 
    float: left;  
    line-height: 5em;  /* Should be the same as height */ 
    padding: 0 2em; 
    position: relative;  /* Make sure a & a:before can stay contained */ 
    height: 5em;   /* Should be same as line-height */ 
    white-space: nowrap; /* Ensure that your items don't wrap and mess up width */ 
    z-index: -1;   /* So that a:before is able to trigger with :hover */ 
} 

a{ 
    position: relative;  /* Make sure a:before can stay contained */ 
    display: block;   /* Ensures that a can expand to full size of container */ 
} 

a:before{ 
    content: "";   /* Necessary for :before element to be created */ 
    position: absolute;  /* Vital - allows positioning */ 
    top: 0; 
    right: -2em;  /* Minus same padding as li has */ 
    bottom: 0; 
    left: -2em;   /* Minus same padding as li has */ 
    z-index: -1;   /* Makes sure :before doesn't go above anchor text */ 
} 

a:hover:before, 
a:active:before { 
    background-color:rgb(245,245,245); 
} 
+0

あなたのコメントは何を説明していますか? – Markeee

+0

申し訳ありません投稿したときにコードの半分を捨てました。コメントはコード内のcssの隣にあります。 – CoffeeZombie

関連する問題