1

私はすべてを試したと言いたいのですが、それが真実であるとは信じていません. div 内の画像を垂直方向に揃えようとしています。機能しているように見えましたが、画像の下よりも上にスペースがあることに気付きました。

いくつかのデバッグの後、それbox-sizing: border-boxが問題であることがわかりました。しかし、私は Bootstrap を使用しているため (そして、Bootstrap に依存しているようです)、変更できません。

以下の私のスニペットを参照してください。[ボックス サイズの切り替え] をクリックして、ボックス サイズのオンとオフを切り替えます。

var toggled = false;
$('#toggle').on('click', function() {
		if (!toggled) {
    		$('*').css('box-sizing', 'border-box');
        toggled = true;
    } else {
    		$('*').css('box-sizing', 'initial');
        toggled = false;
    }
});
.left-sidebar {
    width: 180px;
    background-color: #34495e;
}
.left-sidebar .user-menu {
    height: 80px;
    position: relative;
    padding: 0 15px;
    color: #fff;
    line-height: 80px;
    border-bottom: 2px solid #3d566e;
}
.left-sidebar .user-menu img {
    vertical-align: middle;
    border-radius: 50%;
}
.left-sidebar .user-menu .user-info {
    margin-left: 5px;
    font-size: 16px;
    font-weight: 300;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="toggle">Toggle box-sizing</button>

<nav class="left-sidebar">
    <div class="user-menu">
        <img src="https://placehold.it/50x50">
        <span class="user-info">Someone</span>
    </div>
</nav>
<!-- .left-sidebar -->

皆さんが私を助けてくれることを願っています。

4

3 に答える 3

1

フレックスボックスを使用できるかどうかはわかりませんが、中央に配置する方法は次のとおりです。

var toggled = false;
$('#toggle').on('click', function() {
		if (!toggled) {
    		$('*').css('box-sizing', 'border-box');
        toggled = true;
    } else {
    		$('*').css('box-sizing', 'initial');
        toggled = false;
    }
});
.left-sidebar {
    width: 180px;
    background-color: #34495e;
}
.left-sidebar .user-menu {
    display: flex; /* added */
    align-items: center; /* added */
    /* height: 80px; || removed */
    line-height: 80px; /* kept */
    /* position: relative; || removed */
    padding: 0 15px;
    color: #fff;
    border-bottom: 2px solid #3d566e;
    padding-top: 4px; /* added to negate border-bottom */
}
.left-sidebar .user-menu img {
    /* vertical-align: middle; || removed */
    border-radius: 50%;
}
.left-sidebar .user-menu .user-info {
    margin-left: 5px;
    font-size: 16px;
    font-weight: 300;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button id="toggle">Toggle box-sizing</button>

<nav class="left-sidebar">
    <div class="user-menu">
        <img src="https://placehold.it/50x50">
        <span class="user-info">Someone</span>
    </div>
</nav>
<!-- .left-sidebar -->

フィドル

https://jsfiddle.net/Hastig/efoyyms4/7/

于 2016-08-26T13:30:42.610 に答える
0

ボーダーボトムが問題になっています。
で置き換え border-bottom: 2px solid #3d566e; て みてくださいbox-shadow: 0 2px 0 #3d566e;

JSFiddle の例

于 2016-08-26T13:08:19.163 に答える
0

問題はあなたが設定heightしたことで80pxありborder2pxこれはあなたのline-height:80px線が意図した結果になる必要があることを意味します78px(80 - 2)

.left-sidebar {
    width: 180px;
    background-color: #34495e;
}
.left-sidebar .user-menu {
    height: 80px;
    position: relative;
    padding: 0 15px;
    color: #fff;
    line-height: 78px;
    border-bottom: 2px solid #3d566e;
}
.left-sidebar .user-menu img {
    vertical-align: middle;
    border-radius: 50%;
}
.left-sidebar .user-menu .user-info {
    margin-left: 5px;
    font-size: 16px;
    font-weight: 300;
}
<nav class="left-sidebar">
    <div class="user-menu">
        <img src="https://placehold.it/50x50">
        <span class="user-info">Someone</span>
    </div>
</nav>

于 2016-08-26T13:14:46.530 に答える