web-dev-qa-db-ja.com

ナビゲーションバーのリストアイテムの領域全体をリンクとしてクリック可能にするにはどうすればよいですか?

順不同リストから作成された水平ナビゲーションバーがあり、各リストアイテムには見た目を良くするための多くのパディングがありますが、リンクとして機能する唯一の領域はテキスト自体です。ユーザーがリストアイテムの任意の場所をクリックしてリンクをアクティブにできるようにするにはどうすればよいですか?

#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>
87
Curyous

「li」項目にパディングを入れないでください。代わりに、アンカータグをdisplay:inline-block;に設定し、それにパディングを適用します。

103
Stussa

アンカータグのcssプロパティを次のように定義します。

{display:block}

アンカーはリスト領域全体を占めるため、クリックはリストの隣の空のスペースで機能します。

43
suren

アンカータグにliではなくパディングが含まれるようにします。この方法では、すべての領域を占有します。

12
Aaron Harun

以下を使用してください:

a {
  display: list-item;
  list-style-type: none;
}
9
Sabby62

このパーティーは本当にすごい遅いですが、とにかく:アンカーをフレックスアイテムとしてスタイル設定することもできます。これは、動的にサイズ設定/配置されたリスト項目に特に役立ちます。

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です。救助のための自動接頭辞!)

7
crisis.sheep

または、jQueryを使用できます。

$("li").click(function(){
   window.location=$(this).find("a").attr("href"); 
   return false;
});
6
Kieran

このCSSプロパティと値をliに使用する必要があります。

pointer-events:all;

したがって、jQueryまたはJavaScriptでリンクを処理するか、aタグを使用できますが、li内の他のすべてのタグ要素にはCSSプロパティが必要です。

pointer-events:none;
1
dnvtrn

以下のcssを適用するだけです:

<style>
  #nav ul li {
    display: inline;
  }

  #nav ul li a {
    background: #fff;// custom background
    padding: 5px 10px;
  }
</style>
0
vabi