2017-04-20 5 views
2

ブラウザでビデオフレームを縦横に並べて表示しようとしています。ここでは、ビデオセンターではなく、縦方向、横方向にフレックスボックスが垂直にセンタリングされないのはなぜですか?

body { 
 
    height:100%; 
 
    width:100%; 
 
} 
 

 
#frame { 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
} 
 

 
.video { 
 
    width: 80%; 
 
}
<div id="frame"> 
 
    <div class="video"> 
 
    <iframe width="1200" height="675" src="https://www.youtube.com/embed/dQw4w9WgXcQ?ecver=1" frameborder="0"></iframe> 
 
    </div> 
 
</div>

...私が持っているものです。

+0

あなたはどのようなブラウザを使用していますか? – Roberrrt

+0

私はSafariを使用しています – user2898276

+0

投稿した例では、フレックス要素*は実際には親のコンテナに垂直に配置されています。何かが垂直にセンタリングされていることの効果を見るためには、その高さはパントのコンテナの高さより低くなければなりません;) – Danield

答えて

4

要素#frameは、コンテンツ(.video)のように同じ高さを取得します。

body { 
 
    height:100%; 
 
    width:100%; 
 
} 
 
#frame { 
 
    border:1px dotted red; 
 
    display:flex; 
 
    align-items:center; 
 
    justify-content:center; 
 
} 
 
.video { 
 
    border:1px dotted blue; 
 
    line-height:0; 
 
    width:80%; 
 
}
<div id="frame"> 
 
    <div class="video"> 
 
    <img src="https://placehold.it/100x75"/> 
 
    </div> 
 
</div>

ので.videoを垂直方向に中央揃えされていますが、それを見ることができません!コンテンツ(.video)よりも大きい#frameに高さを追加すると、.videoも垂直方向の中央に表示されます。これを試してみてください

body { 
 
    height:100%; 
 
    width:100%; 
 
} 
 
#frame { 
 
    border:1px dotted red; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    height:200px; 
 
} 
 
.video { 
 
    border:1px dotted blue; 
 
    line-height:0; 
 
    width: 80%; 
 
}
<div id="frame"> 
 
    <div class="video"> 
 
    <img src="https://placehold.it/100x75"/> 
 
    </div> 
 
</div>

+0

それを釘付けにしました。ありがとう。私は身体から高さを取ると思ったが、#flexは親である – user2898276

0

.videoからwidthを外し、flex:0 autoalign-self:center

body { 
 
    height:100%; 
 
    width:100%; 
 
} 
 

 
#frame { 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
} 
 

 
.video { 
 
    flex:0 auto; 
 
    /* width: 100%; */ 
 
    align-self:center; 
 
}
<div id="frame"> 
 
    <div class="video"> 
 
    <iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ?ecver=1" frameborder="0" allowfullscreen></iframe> 
 
    </div> 
 
</div>
を追加し、次の例を参照してください。 iframe内に

0

のハードコーディングの幅と高さは良い習慣ではありません。

私はこれがうまくいきたいと思います。

body { 
 
    height: 100vh; 
 
    width: 100vw; 
 
    margin: 0; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
} 
 

 
.video { 
 
    width: 80%; 
 
} 
 

 
iframe { 
 
    height: 100vh; 
 
    width: 100vw; 
 
}
<div id="frame"> 
 
    <div class="video"> 
 
    <iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ?ecver=1" frameborder="0"></iframe> 
 
    </div> 
 
</div>

関連する問題