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

vsIE(ボタンのレイアウトが崩れる編)

$
0
0

はじめに

前回の記事同様IEに苦しめられた内容を備忘録として残していきます!

ということで今回は「ボタンのレイアウトが崩れる編」です。
ボタンの中身の文言をただただ中央に表示したいだけなのに…!

もし他にステキな解決法があれば是非教えてください!!
では!早速!

ボタンのレイアウトが崩れるんじゃ…

やりたかったことしては、文字が中央に配置されているような、シンプルにボタンを実装したかっただけです。
(こんなに詰むことになろうとは…)

そんな難しいことではないので以下のような感じで実装しました。

index.html
<divclass="contents"><buttontype="button"class="button">buttonタグ</button><ahref="#"class="button">aタグ</a></div>

(contentsについては今は特に気にしないでください。)

style.css
.button{display:block;width:100%;min-height:40px;padding:01rem;color:#FFF;text-align:center;background-color:#4682b4;box-shadow:05px5px5pxrgba(0,0,0,0.1);border-radius:20px;}

button要素に関しては特に問題なく、理想どおりに表示できます。

0_1.PNG

それにプラスして、今回はa要素もボタンのように見せたかったのでaタグにも同じようなスタイルを当てます。

1.PNG

あーa要素だとうまく中央に配置されないな…
それじゃあ…

style.css
.button{display:flex;justify-content:center;align-items:center;width:100%;min-height:40px;padding:01rem;color:#FFF;text-align:center;text-decoration:none;background-color:#4682b4;box-shadow:05px5px5pxrgba(0,0,0,0.1);border-radius:20px;}

こうしたれ…!

1_2.PNG

よし!いい感じですね。

じゃあIEで確n…

2.PNG

~END~

原因

またまた素晴らしい記事を見つけました。
IEでflex「align-items」が効かないときの対処法

まさにその通りでmin-heightを使っているのが原因のようでした。
またお前か…
高さをしっかり固定してやらないといけないってことでしょうか…

ただここで問題が。
想定されるボタンのパターンとして、ボタン内の文言が複数行になるパターンがあり、
高さを固定してしまうと、文字がボタンの枠を突き抜けてしまう可能性があります。

どうしたものか…

解決策(なのか?)

色々試行錯誤していたところ、あることに気が付きました。

「あれ?ちゃんと中央揃えになってるボタンもあるゾ…?何故?」

違いを確認してみると、親要素にdisplay:flex;flex-direction: column;が当たってる事に気が付きました。
一度試してみます。

css.style.css
.contents{/* --追加-- */display:flex;flex-direction:column;/* ------- */width:300px;height:auto;background-color:#FFF;margin:1rem;padding:1rem;}

スタイルを当ててやると、

3.PNG

IEでもうまく中央に表示してくれました。

まとめ

これといった原因がわからないのですが…
おそらく色々な要因が重なってるような気がします。
a要素をボタンのように見せたいが為に、display: flex;をあてて中央に揃えていますが、
そもそもbutton要素であれば、display: flex;をあてなくても、text-align: center;などで中央に寄ってくれます。
そして正直なところ、なぜ親要素にdisplay: flex;flex-direction: column;を当てれば中央揃えになってくれるのかは分からないです。。
もっと根本的なところを理解しないとわからないのかな~と思いつつ、めんどくsなかなか手を付けられずにいます。


Viewing all articles
Browse latest Browse all 8833

Trending Articles



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