216

div の高さを常に幅と同じになるように調整したい。幅はパーセントです。親の幅が減少すると、縦横比を維持してボックスが減少するはずです。

これを行う方法はCSSですか?

4

6 に答える 6

209

探しているものを実現するには、viewport-percentage length vwを使用できます。

jsfiddleで作成した簡単な例を次に示します。

HTML:

<div class="square">
    <h1>This is a Square</h1>
</div>

CSS:

.square {
    background: #000;
    width: 50vw;
    height: 50vw;
}
.square h1 {
    color: #fff;
}

これを行うには他にも多くの方法があると確信していますが、この方法が私には最善のように思えました。

于 2013-09-28T15:44:28.260 に答える
68

HTML

<div class='square-box'>
    <div class='square-content'>
        <h3>test</h3>
    </div>
</div>

CSS

.square-box{
    position: relative;
    width: 50%;
    overflow: hidden;
    background: #4679BD;
}
.square-box:before{
    content: "";
    display: block;
    padding-top: 100%;
}
.square-content{
    position:  absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    color: white;
    text-align: center;
}

http://jsfiddle.net/38Tnx/1425/

于 2015-03-11T11:29:32.717 に答える
32

幅と同じサイズのパディング ボトムをパーセントで指定するのと同じくらい簡単です。したがって、幅が 50% の場合は、以下の例を使用してください。

id or class{
    width: 50%;
    padding-bottom: 50%;
}

ここにjsfiddleがありますhttp://jsfiddle.net/kJL3u/2/

レスポンシブ テキスト付きの編集バージョン: http://jsfiddle.net/kJL3u/394

于 2014-05-29T01:57:17.713 に答える
8

もう 1 つの方法は、透明な 1x1.png を で使用しwidth: 100%height: autoその中divに絶対配置されたコンテンツを使用することです。

html:

<div>
    <img src="1x1px.png">
    <h1>FOO</h1>
</div>

CSS:

div {
    position: relative;
    width: 50%;
}

img {
    width: 100%;
    height: auto;
}

h1 {
    position: absolute;
    top: 10px;
    left: 10px;
}

フィドル: http://jsfiddle.net/t529bjwc/

于 2015-02-02T11:31:18.153 に答える
3

これが私が思いついたものです。ここにフィドルがあります。

まず、正方形と中央揃えのテキストの両方に 3 つのラッパー要素が必要です。

<div><div><div>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat
volutpat.</div></div></div>

これがスタイルシートです。1 つは四角形用、もう1 つは中央揃えのテキスト用の 2 つの手法を使用します。

body > div {
    position:relative;
    height:0;
    width:50%; padding-bottom:50%;
}

body > div > div {
    position:absolute; top:0;
    height:100%; width:100%;
    display:table;
    border:1px solid #000;
    margin:1em;
}

body > div > div > div{
    display:table-cell;
    vertical-align:middle; text-align:center;
    padding:1em;
}
于 2013-09-28T15:58:31.850 に答える