teratail header banner
teratail header banner
質問するログイン新規登録
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

7111閲覧

CSSで正方形のdivを作る

Rio12882

総合スコア27

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

2クリップ

投稿2017/12/27 02:49

0

2

タイトル通りですが、どのように動いて、正方形が作られてるのかわからなかったので、質問致しました。

ネットで検索すると以下のような記述がありました。

#wrapper { position: relative; width: 100%; } #wrapper:before { content:""; display: block; padding-top: 100%; } #content { position: absolute; top: 0; left: 0; bottom: 0; right: 0; }

参考URL:https://qiita.com/ryounagaoka/items/a98f59347ed758743b8d

padding-topの100%が横幅の100%を取るのは、わかったのですが、
・beforeでなぜ指定しているのか
・なぜcontent要素にもそれが影響するのか、どうやってcontent要素の縦横が決まっているのか
がわかりません。

どなたかご教授いただけるとうれしいです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

beforeでなぜ指定しているのか

padding-topの「%」指定は、親要素のwidthの大きさを基準として計算されるためです。

before疑似要素でpadding-topを%指定することで、「#wrapperの横幅の100%」をpadding-topとすることが出来まるようになり、アスペクト比固定を実現出来るわけです。

なぜcontent要素にもそれが影響するのか、どうやってcontent要素の縦横が決まっているのか
がわかりません。

#contentではheightやwidthの指定はありませんが、position : absolute; top: 0; left: 0; bottom: 0; right: 0;というスタイルが当てられています。

この記述により、親要素の上辺左辺右辺下辺まで要素が広がることとなり、結果として親要素と同じアスペクト比になるというわけです。


fiddleによるdemoを公開しておられるようなので、実際にご自身でcssのパラメータをいじって確かめられると、理解しやすいかもしれません。

http://jsfiddle.net/ryounagaoka/u7cc2wc1/

投稿2017/12/27 03:58

akai

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rio12882

2017/12/27 04:05

回答ありがとうございます。 質問した内容は理解できました。ありがとうございました。 一つ質問なのですが、 before疑似要素が親要素の最初の子要素として、padding-topを指定することで 親要素の高さが、子要素のbeforeに合わせて、変化して、 中のcontentはその親要素の高さと幅をとるからという理解で正しいでしょうか。
akai

2017/12/27 04:10

そうです。 ちなみに、#contentは#wrapperの幅/高さに影響されますが、#content自身はposition:absoluteが指定されているため、#wrapperの幅/高さには影響を与えません。
Rio12882

2017/12/28 02:01

ありがとうございました! すっきりしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問