2017-01-31 8 views
0

私はウェブサイト上で作業しており、イメージを含むdivに関して、h2とサブ見出しをどのように垂直に配置できるかを見たいと思っていました。垂直中心h2とサブ見出し

基本的には、display: flexflex-direction: columnのコンテナがあります。私には3つのコラムがあります。

最初の列には、プロファイルイメージとヘッダーおよびサブヘッダーが含まれています。 .title divを垂直に配置するにはどうすればよいですか?ここで

は-50%変換して、位置、絶対に使用してみてくださいjsfiddle

+0

[** SOガイドライン**](http://stackoverflow.com/help/mcve)には、質問自体にコードを掲載する必要があります。そうしないと、外部デモが失敗した場合でも、ポストはずっと役に立たなくなります。 –

+0

ああ、私はこれを知らなかった。私は私の質問を更新します。そのおかげでありがとう! –

答えて

1

はその後、あなたはそれが以下のように中央を縦にするために、子プロフィール画像とタイトルクラスだ揃えることができ、クラスprofile-containerdisplay: flexを与える:

.profile-container{ 
display : flex; 
align-items : center; 
height : 200px; //provide wrapper height 
} 

これはあなたの要件を達成するはずです。

+0

私はこれを私の最初のアプローチとして試みましたが、イメージは完全に伸びていました。もう一度やり直してみましょう。 –

0

へのリンクです。参照用

@import url('https://fonts.googleapis.com/css?family=Lato'); 
 
html { 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 

 
body { 
 
    background-color: #fafafa; 
 
    display: flex; 
 
    justify-content: center; 
 
    align-items: center; 
 
    height: 100%; 
 
} 
 

 
.container { 
 
    background: white; 
 
    width: 1000px; 
 
    height: 600px; 
 
    border: 1px solid rgba(0, 0, 0, .09); 
 
    box-shadow: 0 1px 4px rgba(0, 0, 0, .04); 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 

 

 
/*set up vertical column layouts for the three containers*/ 
 

 
.profile-container, 
 
.work-container, 
 
.social-media-container { 
 
    flex: 1; 
 
    padding: 1.5rem; 
 
} 
 

 
.profile-container { 
 
    align-self: center; 
 
    position: relative; 
 
    width: 100%; 
 
} 
 

 
.profile-image { 
 
    display: inline-block; 
 
    background-image: url('https://organicthemes.com/demo/profile/files/2012/12/profile_img.png'); 
 
    background-repeat: no-repeat; 
 
    background-position: 0px 0px; 
 
    background-size: 100%; 
 
    height: 200px; 
 
    width: 200px; 
 
    border-radius: 50%; 
 
} 
 

 
.title { 
 
    display: inline-block; 
 
    position: absolute; 
 
    top: 50%; 
 
    transform: translateY(-50%); 
 
    padding-left: 25px; 
 
} 
 

 
.header-name { 
 
    font-family: 'Lato', sans-serif; 
 
    display: inline-block; 
 
    margin: 0px; 
 
}
 <div class="container"> 
 

 
     <div class="profile-container"> 
 
      <div class="profile-image"></div> 
 
      <div class="title"> 
 
      <h2>Tarang Hirani</h2> 
 
      <h6>Software Engineer</h6> 
 
      </div> 
 
     </div> 
 

 
     <div class="work-container"> 
 
      These are my projects 
 
     </div> 
 

 
     <div class="social-media-container"> 
 
      Social media link 
 
     </div> 
 
     </div>

リンク:https://jsfiddle.net/kzj4omo8/3/

+0

これはうまくいくようです!これはこれを行う最善の方法ですか?私は可能な限りクリーンな解決策を模索しています。また、 'display:inline-block'は' divs'を整列させる正しい方法でしょうか? –

+0

これを垂直に整列させるのはきれいで正確な方法です。 flexを使用することもできますが、このクロスブラウザを古いバージョンのIEと互換性を持たせようとしている場合、flexはサポートされない可能性があります。 – carlosp120

関連する問題