順不同リストから作成された水平ナビゲーションバーがあり、各リストアイテムには見た目を良くするための多くのパディングがありますが、リンクとして機能する唯一の領域はテキスト自体です。ユーザーがリストアイテムの任意の場所をクリックしてリンクをアクティブにできるようにするにはどうすればよいですか?
#nav {
background-color: #181818;
margin: 0px;
overflow: hidden;
}
#nav img {
float: left;
padding: 5px 10px;
margin-top: auto;
margin-bottom: auto;
vertical-align: bottom;
}
#nav ul {
list-style-type: none;
margin: 0px;
background-color: #181818;
float: left;
}
#nav li {
display: block;
float: left;
padding: 25px 10px;
}
#nav li:hover {
background-color: #785442;
}
#nav a {
color: white;
font-family: Helvetica, Arial, sans-serif;
text-decoration: none;
}
<div id="nav">
<img src="/images/renderedicon.png" alt="Icon" height="57" width="57" />
<ul>
<li><a href="#">One1</a></li>
<li><a href="#">Two</a></li>
<li><a href="#">Three</a></li>
<li><a href="#">Four</a></li>
</ul>
</div>
<div>
<h2>Heading</h2>
</div>
「li」項目にパディングを入れないでください。代わりに、アンカータグをdisplay:inline-block;
に設定し、それにパディングを適用します。
アンカータグのcssプロパティを次のように定義します。
{display:block}
アンカーはリスト領域全体を占めるため、クリックはリストの隣の空のスペースで機能します。
アンカータグにli
ではなくパディングが含まれるようにします。この方法では、すべての領域を占有します。
以下を使用してください:
a {
display: list-item;
list-style-type: none;
}
このパーティーは本当にすごい遅いですが、とにかく:アンカーをフレックスアイテムとしてスタイル設定することもできます。これは、動的にサイズ設定/配置されたリスト項目に特に役立ちます。
a {
/* This flexbox code stretches the link's clickable
* area to fit its parent block. */
display: flex;
flex-grow: 1;
flex-shrink: 1;
justify-content: center;
}
(警告:フレックスボックスはまだサポートされていないobvです。救助のための自動接頭辞!)
または、jQueryを使用できます。
$("li").click(function(){
window.location=$(this).find("a").attr("href");
return false;
});
このCSSプロパティと値をli
に使用する必要があります。
pointer-events:all;
したがって、jQueryまたはJavaScriptでリンクを処理するか、a
タグを使用できますが、li
内の他のすべてのタグ要素にはCSSプロパティが必要です。
pointer-events:none;
以下のcssを適用するだけです:
<style>
#nav ul li {
display: inline;
}
#nav ul li a {
background: #fff;// custom background
padding: 5px 10px;
}
</style>