CSSで、高さを基準にした正方形を描画したいです。
高さが固定ではないので、
height:200px;width:200px;
のような手法は使えません。
一体どのようにしたら高さを基準にした正方形を描画できるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
html
1<div>hoge</div>
css
1 div{ 2 width: 100vh; 3 height: 100vh; 4 background: #f00; 5 }
じゃダメですか?
vhを理解する環境でないと使えませんが。
(※vhはviewportの高さを基準とする相対単位)
投稿2015/12/27 14:02
総合スコア3763
0
ベストアンサー
高さがウィンドウ全体に対しての割合だと、すでに出てるビューポートがいいと思いますが、ウィンドウは関係なくて親要素に対して%指定だと難しいと思います。
CSSだけでなくなりますが、JavaScriptで操作したくないという意味なら、imgタグに 1px × 1px の透過GIFをつけて、そのimgタグにheight:10%;などやれば楽にできます。
色や模様をを付けたいならimgタグのbackgroundをいろいろ。
imgタグ作りたくないとなれば JavaScript つかうことになるんじゃないでしょうか。
投稿2015/12/28 13:14
総合スコア604
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんな感じでどうですか?
html
1<div class="wrap"> 2 <div class="box ratio-1_1"> 3 <div class="inner"> 4 <p>1 : 1</p> 5 </div> 6 </div> 7</div>
css
1.box { 2 position: relative; 3 width: 50%; 4 height: auto; 5 background: #A53860; 6} 7.ratio-1_1:before { 8 content: ""; 9 display: block; 10 padding-top: 100%; /* 1:1 */ 11} 12.inner { 13 position: absolute; 14 top: 0; 15 left: 0; 16 width: 100%; 17 height: 100%; 18} 19.inner p{ 20 color: #fff; 21}
投稿2015/12/26 03:01

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
css
1.soto { 2 width:0px; 3 height:0px; 4 margin:0; 5 padding:0; 6} 7.naka { 8 margin:0; 9 padding:100px; 10 background-color:red; 11}
HTML
1<div class="soto"><div class="naka"></div></div>
正方形は縦も横も同じ大きさなので、縦を基準にというより一つのパラメータだけでといった形です。
他にも次のような問題があります。
・正方形を書く以外のことを一切考慮していない。
・指定値の倍の大きさになる。padding:100pxで200pxの正方形に
(chromeではpadding:100.5pxで201pxの正方形が描画されましたが、他のブラウザでは不明)
・divが空なのでブラウザによっては消えるかも
(chromeで動作確認。200pxの正方形が表示されました)
投稿2015/12/25 10:42
編集2015/12/25 10:45総合スコア2068
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2015/12/25 11:32

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。