2017-11-21 4 views
-2

コンテナの残りのサイズを占める正方形のdivを作成します。私はCSSでこれをどうやって行うことができますか?コンテナの残りのスペースを占めるCSSの正方形を作成します。

具体:

  1. DIVを行う1を有する:(正方形別名)1のアスペクト比を
  2. は少ないスペース
を有する寸法に&高さ= div要素の幅作ります

ここで、それは明らかに絵だ:

enter image description here

注: 私はpadding-bottom: 100%;とコンテナコンポーネントを使用して答え&方法を知っています。これは#2で失敗するため許容できる解決策ではありません(どの次元が四角形を制約するかによって切り替わりません)。フレックス&アスペクト比の容器を使用してhttps://codepen.io/donpinkus/pen/RjMQEQ

  • :ちょうどフレックス使用して

  • +1

    パディングが失敗した場合、あなたはこれまでに使用してみました、あなたのHTMLの構造とCSSを共有することができます。スクリーンショットは役に立ちませんが、仕事をするためです。 –

    +1

    ....私はCSSの答えを持っています...それは動作しますが、あなたがどこで失敗したのかわからず、どこで助けてくれるのでしょうか? –

    +0

    G-Cyr、なぜ私の質問で詰めが失敗するのか説明します。 1つの次元(幅または高さ)に基づいて縦横比を設定することのみが可能です。 –

    答えて

    1

    あなたがcalc()vh/vwに中継することができます(max-width/height

    header { 
     
        background: pink; 
     
        height: 150px; 
     
    } 
     
    header, .squarred {/* use flex for centering, optionnal */ 
     
        display: flex; 
     
        align-items: center; 
     
        justify-content: center; 
     
        flex-direction: ; 
     
    } 
     
    .squarred { 
     
        width:calc(100vh - 150px);/* luck: header has a fixed height , remove it */ 
     
        max-width:100vw;/* stay within the window */ 
     
        max-height:100vw;/* stay within the window */ 
     
        margin:0 auto; 
     
        flex:1; 
     
        overflow:auto;/* can be usefull */ 
     
        background:turquoise; 
     
    } 
     
    html,body {/* set the frame */ 
     
        margin:0; 
     
        height:100vh; 
     
        display:flex; 
     
        flex-direction:column; 
     
    }
    <header><h1>header</h1></header> 
     
    <main class="squarred"> 
     
        <div class="buffer"> 
     
        <h2>I am a square</h2> 
     
        <p>I occupy the remaining space</p> 
     
        </div>

    https://codepen.io/gc-nomade/full/MOVQWZ/

    +0

    興味深い - それを受け入れた。そこに魔法の150px(ヘッダーサイズ)を持っていなくても、あなたは方法を考えることができますか? –

    +0

    正方形の高さを更新するために、ヘッダーの高さを即座に取得するにはjavascriptが必要ですが、これはとにかくもっと良いと思います;)ヘッダーのコンテンツは150ピクセルを超えないようにしてください。それは小さなデバイスでラップしオーバーフローする可能性があります。 –

    関連する問題