既存のselectタグの挙動に困っている方必見!プルダウンメニューをulタグで作成してみよう!(position編)

プログラミング

こんにちは!ぬぁるです。

以前、↓の記事で、プルダウンメニューをulタグで作成する方法を紹介しました。

その時はpaddingの調整で作成したのですが、実はその方法だと簡単な反面、
以下の画像のように、枠線が思うように設定できず、調整が難しい場合があります。

こんな感じになってしまう場合があります

この辺り、CSSのpositionプロパティを使うことで解決できますので、
そのやり方をこの記事ではご紹介したいと思います。

作り方

positionプロパティの指定

先ほどご紹介した記事の「4.幅とマージンを整える」までは同じです。
そこから、外側のul直下のliに対して、position: relative;を指定します。

さらに、プルダウンメニューとなるulに対して、position: absolute;を指定します。

  <ul style="list-style: none; padding: 0; border: solid 1px grey;">
    <li style=“position: relative;”><p>選択された値が入る箇所</p>
      <ul style="position: absolute; list-style: none; padding: 0; border-top: solid 1px grey;">
        <li>テスト項目1</li>
        <li>テスト項目2</li>
        <li>テスト項目3</li>
      </ul>
    </li>
  </ul>

height, width, top, leftプロパティを指定

position: absolute;を指定したulに対して、height, width, top, leftプロパティを指定していきます。

heightとwidthを指定してあげないと、正しく表示されませんので指定しましょう。
widthは100%と指定してあげることで、幅が揃います。

topとleftも、丁度いい位置にプルダウンメニューが表示されるように、ブラウザで確認しながら調整しましょう。

ブラウザの開発者ツールで確認・調整して、決まったらソースコードに反映、という手順を踏むと効率が良いかと思います。
開発者ツールの使い方は、個人的には以下の記事が参考になると思います。

初心者向け!Chromeの検証機能(デベロッパーツール)の使い方
Googleクロームの便利な「要素の検証」機能の使い方を分かりやすく解説します。ウェブデザインをする人が特に知っておくべき機能を中心に紹介していきます。

borderやoverflowプロパティを指定

プルダウンメニューをスクロールさせたい場合は
プルダウンメニューとなるulに対して「orverflow-y: scroll;」を指定すればOKです。

以下のように、丸っこいデザインにしたい場合も、
それぞれにborder-radiusプロパティを指定すれば簡単に実現できます。
(以下の画像では、border-raidusを5pxとしています)

paddinやmarginを調整して、余白感を調整しましょう

こんな感じでオリジナルのプルダウンメニューが作れますので、是非皆さんも試してみてください!!

タイトルとURLをコピーしました