Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9008

mediaを使ってNavigation SideMenuを実現する

$
0
0

はじめに

事故マップというサービスを個人開発しています。

このWebアプリでは、画面サイズが小さい場合は自動的にSideMenuを閉じるという動きを入れてレスポンシブなUIを実現しています。

Dec-13-2019 23-58-04.gif

これはCSSのmediaクエリを使えば簡単に実現できるのでその方法を紹介します。

mediaとは

CSS の media を指定すると、一つまたは複数のメディアクエリの結果に基づいて、適用するスタイルシートを変えることができます。

例えば、スクリーンのサイズが 600px 以下の場合に背景の色を変えたい時は次のように指定をします。

@mediascreenand(max-width:600px){body{background-color:#99cc00;}}

Navigation SideMenuの作り方

まずは、HTML全体を3つに分けます。

  • main : コンテンツを配置するエリア
  • topnav : ナビゲーションバー
  • sidenav : サイドメニュー

スクリーンショット 2019-12-14 9.36.54.png

ポイントは、topnavはmainの子要素として配置し、mainはsidenavのwidthの分だけleft-marginを取るようにします。

<html><head><style>.main{margin-left:160px;}.sidenav{width:160px;}</style></head><body><divclass="sidenav"></div><divclass="main"><divclass="topnav"id="myTopnav"></div></div></body></html>

次はmediaをを指定します。

やりたいことは、画面サイズが600px以下になったときにsidenavを非表示にしてmainをsidenavの分大きくすることです。

具体的には次のCSSの指定を行います。

  • 非表示 → display: none;

  • サイズ変更 → margin-left: 0px

@mediascreenand(max-width:600px){.sidenav{display:none;}.main{margin-left:0px;}}

最終的なコード例

<!DOCTYPE html><html><head><metaname="viewport"content="width=device-width, initial-scale=1"><linkrel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><style>body{margin:0;font-family:Arial,Helvetica,sans-serif;}.topnav{overflow:hidden;background-color:#333;}.topnava{float:left;display:block;color:#f2f2f2;text-align:center;padding:14px16px;text-decoration:none;font-size:17px;}.topnava:hover{background-color:#ddd;color:black;}.topnava.active{background-color:#4CAF50;color:white;}.topnav.icon{display:none;}.main{margin-left:160px;/* Same as the width of the sidenav */font-size:28px;/* Increased text to enable scrolling */padding:0px;}.sidenav{height:100%;width:160px;position:fixed;z-index:1;top:0;left:0;background-color:#111;overflow-x:hidden;padding-top:20px;}.sidenava{padding:6px8px6px16px;text-decoration:none;font-size:25px;color:#818181;display:block;}.sidenava:hover{color:#f1f1f1;}@mediascreenand(max-width:600px){.topnava.icon{float:right;display:block;}.sidenav{display:none;}.main{margin-left:0px;}}</style></head><body><divclass="sidenav"><ahref="#about">About</a><ahref="#services">Services</a><ahref="#clients">Clients</a><ahref="#contact">Contact</a></div><divclass="main"><divclass="topnav"id="myTopnav"><ahref="#home"class="active">Home</a><ahref="javascript:void(0);"class="icon"onclick="myFunction()"><iclass="fa fa-bars"></i></a></div><divstyle="padding-left:16px"><h2>Responsive Topnav Example</h2><p>Resize the browser window to see how it works.</p></div></div></body></html>

上記のコードはここですぐに試す事ができます。


Viewing all articles
Browse latest Browse all 9008

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>