css对齐的问题?

使用floatwidth对齐,但是发现并不在同一行?

<div class="friends">
            <div class="friends-item">
                <div class="item-logo">
                    <img src="images/999pic_5281c33cbc368.jpg" alt="" style="height: 50px;"/>
                </div>
                <div class="item">
                    <div class="item-user">
                        <a href="#">哈哈哈</a>
                    </div>
                    <p>不是吧,今天居然要上课!?</p>
                    <div class="item-url">
                        <div class="item-url-image">
                            <img src="images/cbd.jpg" alt="" />
                        </div>
                        <div class="item-url-detail">
                            <p style="margin-bottom: 0;">大润发购物广场11月7日(星期一</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        .item-logo {
            float: left;
            display: inline-block;
            width: 20%;
            border: 1px solid red;
        }
        .item {
            float: left;
            display: inline-block;
            width: 80%;
            border: 1px solid red;
        }

图片描述

求解?

阅读 2.5k
4 个回答

其实问题的关键出在boder:1px 或者更明确一点:出在题主对于标准盒模型的的理解上,标准盒模型中,width是不包含border的,然而,你先是设置了 .item-logo.item 的宽分别是20% 和80%,题主的愿意本来是想让这两个占满这一行,但是因为加了border,所以.item-logo.item 的实际宽度应该是20%+2px(左右border各1px) 和80%+2px(左右border各1px) 所以一行是放不下的,因为两个元素都设置了浮动,所以在这种情况下,.item元素实际上会移到下一行,题主可以通过设置.item为70% 或者设置border:0来验证一下

float就不用display了,inlineblock本来就是显示在一行的。或者给父元素加display:flex,两个子标签分别加flex:20%和flex:80%。

不需要 float 吧,对齐用 vertical-align

推荐问题
宣传栏