2016-11-02 4 views
3

私はdiv/icon(#user-initials)を他の2つのdiv:.employee-nameと.statusの左側に浮かべています。浮動小数点の下に折り畳まれたときにdivの垂直方向の間隔を維持する

.employee-name行が2行で構成されている場合、.status divは#user-initialsの下の左側にプッシュされます。これは正常に動作します。

私がしようとしているのは、.employee-name(11px)の元の.statusの上に元の間隔を維持することです。しかし、浮動小数点数を下回ると、そのマージンは約6ピクセルに削減されます。良いアイデアについては、以下のスクリーンショットを参照してください。

Margins are correct on top image example, not on bottom

フィドル:https://jsfiddle.net/kfjtnk9r/1/

.container { 
 
    width: 220px; 
 
    background-color: #fff; 
 
} 
 
.user_img_color, 
 
.user_img_color_large { 
 
    background: #8aa943; 
 
    border-radius: 40px; 
 
    color: #fff; 
 
    float: left; 
 
    font-size: 15px; 
 
    height: 40px; 
 
    line-height: 40px; 
 
    text-align: center; 
 
    width: 40px; 
 
    z-index: 1; 
 
    margin-right: 10px; 
 
} 
 
.employee-name { 
 
    word-wrap: break-word; 
 
} 
 
.status { 
 
    margin-top: 4px; 
 
} 
 
.welcome-message { 
 
    margin-top: 10px; 
 
    font-size: 11px; 
 
    line-height: 15px; 
 
} 
 
div.status-indicator { 
 
    display: inline-block; 
 
    height: 8px; 
 
    width: 8px; 
 
    content: " "; 
 
    line-height: 14px; 
 
    background: #f5c002; 
 
    border-radius: 8px; 
 
    margin: 0 2px 0 0; 
 
    vertical-align: middle; 
 
} 
 
div.status-message { 
 
    display: inline-block; 
 
    font-size: 11px; 
 
    line-height: 14px; 
 
    white-space: nowrap; 
 
    vertical-align: middle; 
 
}
<div class="container"> 
 

 
    <div class="clearfix"> 
 
    <div id="user-initials" class="inline-block"> 
 
     <div class="user_img_color user_img_color-pending">TH</div> 
 
    </div> 
 
    </div> 
 

 

 
    <div class="employee-name">Name Namington</div> 
 

 
    <div class="status"> 
 
    <div class="status-indicator status-indicator-complete"></div> 
 
    <div class="status-message">Status Message</div> 
 
    </div> 
 

 

 
    <div class="welcome-message"> 
 
    Welcome message Welcome message 
 
    <br>Welcome message Welcome message 
 
    </div> 
 

 
</div>

すべてのヘルプは非常に私はすべてを試してみた...いただければ幸いです。

編集:追加より良いスクリーンショットの画像

+1

https://jsfiddle.net/wk79s3qf/1/は**サイモンKnittelによって行わ最適なソリューションです**いますが、必要サポートされているブラウザを確認します。 –

+0

[マージンコラプスを無効にする方法](0120-18753)をご覧ください。 –

+0

ここでは、認識以外のエラーはありません –

答えて

3

ソリューション
あなたはこのhttps://jsfiddle.net/wk79s3qf/1/

のように(フレキシボックスと呼ばれる)display: flex;で容器にアイコン、名前とステータスメッセージをラップすることができますフレキシボックス
フレックスボックスは、CSS3の新機能で、簡単にgrid-lを作成することができますikeのレイアウトはmarginfloatのようなものは必要ありません。

チートシート
https://css-tricks.com/snippets/css/a-guide-to-flexbox/

ブラウザのサポート
http://caniuse.com/flexbox

+0

本当にありがとうございます。しかし、私は状態メッセージをアイコンの下に置いておくと、そのメッセージを一番左に維持しようとしています。それがFlexで可能かどうか知っていますか?私はそれと一緒に遊んでいます。 – Tim

+0

あなたはそれを言い換えることができますか?私は本当にあなたが望むものを手に入れません。 –

+0

「ステータスメッセージ」の行 - 「TH」の緑色の円の下に一列に並べるようにしようとしています。 – Tim

0

あなた.statusルールは、実際にmargin: 4pxを持っています。 10pxのにそれを変更する(またはあなたが好きな)、それが動作します:

https://jsfiddle.net/c036a3mg/1/

+0

残念ながら、同じ問題が続く - 名前が1行だけ余分なスペースがある場合 – Tim

+0

でも、それは "本当の"スペーシング(spacing) - j、y、gなどのような文字のディセンダのためのスペースを含む、上のテキストの行の高さのために、テキストの下のほうが(イメージの下とは反対に)そのような余分な底部空間を持っています。 – Johannes

関連する問題