前端html css js 部分,div盒子错位了

代码客栈 毕业设计 1

这三个div盒子不应该是在同一水平线上的么?为什么第三个盒子有内容就下去了?

回复

共3条回复 我来回复
  • 源码导航
    这个人很懒,什么都没有留下~
    评论

    我们把div设置为inline:

    inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。inline元素设置width,height属性无效。inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。 
    

    我们把div 设置成block

    block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。block元素可以设置margin和padding属性。
    

    我们把div设置成inline-block

    简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。 对于inline-block元素来说,他的基线取决于元素本身的特性,在该元素中没有行内子元素(DOM树的子元素,有块子元素不算但是块子元素中有行元素算)的时候或者overflow不为visible,该inline-block的基线为margin-bottom的下边界。否则,以该元素中最后一个行框子元素的基线为该元素的基线
    

    所以插入内容的div 的基线会下移动。

    所以解决方案就是 第一个办法是为div设置vertical-align为top 第二个方法是设置overflow设置为hidden 第三个方法是外面设置父节点,然后给父节点设置display:flex 第四个方法:给div设置float为left

    0条评论
  • 毕业设计货栈
    这个人很懒,什么都没有留下~
    评论

    用盒子布局吧,把这三个div再包一层:

    <div >
    <div ></div>
    <div ></div>
    <div >3</div>
    </div>
    
    .item{
            margin:1px;
            width:200px;
            height:200px;
            background-color:red;
            display:inline-box;
        }
    
    0条评论
  • 代码工坊
    这个人很懒,什么都没有留下~
    评论

    浏览器的vertical-align的默认值为baseline,有内容后会导致对齐变化,有3种解决办法 第一个方法设置vertical-align为top 第二个方法是设置overflow设置为hidden 第三个float为left布局

    具体参考:

    “设置display:block-inline的li或div中添加文字后,导致li或div排版掉落、错位”的原因及解决方法

    0条评论

发表回复

登录后才能评论