以前既存のサイトをレスポンシブ化する際のメニューについてslicknavというのを紹介した。しかしこれは適さないという向きもあるだろう。
既存の横メニューを2段や1段に表示させたいという場合があるかもしれない。
その場合の技を書いてみる。
いろんなやり方があるだろうが、ポイントはメディアクエリー内でfloatが効かないということとここでもスマホデフォルトで考えるということだ。
具体的に言おう。
普通横メニューはlistを使って、それを左からfloatさせ、メニューの数によってwidthを%で決める。
スマホデフォルトということはfloatを止めて、widthを100%近くにすれば縦にメニューが並ぶ形になる。
しかし、こうするとPC表示の時に改めてfloatさせなければならなくなる。しかし、メディアクエリー内でfloatが効かない。
どうするか。
スマホデフォルトでfloatをそのままにしておいて、widthを100%近くにすればいいのだ。そしてメディアクエリー内で%を変えてやればいい。
例えばメニューが4個だとすれば、50%に近ければ2段になり、25%に近くすれば1段になる。
これが簡単な方法だということに今更気付いたので。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
div#nav ul li{ float:left; width:98%; color:black; padding-top:5px; padding-bottom:5px; text-align:center; font-size:1.5em; border:4px solid black; font-family: 'Nova Square', cursive; background-color: rgba(128, 128, 128, 0.4); } @media only screen and (min-width:768px){ div#nav ul li{ width: 49%; } div#nav ul li:nth-child(odd){ border-right:none; } } @media only screen and (min-width:1024px){ div#container{ margin: 0 auto; width:1024px; } div#nav ul li{ width: 248px; } div#nav ul li:nth-child(2){ border-right:none; } } |