CSS之多个div一行排列

摘要:
有两种方法可以水平排列多个div。一个是浮动浮点数,另一个是布局显示。一种是使用浮动元件来浮动,它将脱离文档流(不占用页面空间,然后非浮动元素将上升到前面。缺点是,如果真的要溢出,它将无法显示d,并直接向父元素添加块级元素。缺点是有一个无法解释的额外div,这不容易维护。

  使多个div横着排的两种方法,一种是浮动float,一种是布局display

  一、使用float

  元素一旦浮动,脱离文档流(不占页面空间,后面未浮动元素会上前补位。

  1、代码示例

CSS之多个div一行排列第1张CSS之多个div一行排列第2张
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
</head>
<body>
  <div class="box">
    <div class="child-1"></div>
    <div class="child-2"></div>
    <div class="child-3"></div>
  </div>
</body>
<style>
    .box {
        width: 800px;
        height: 200px;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
        background-color: skyblue;
    }

    .child-1 {
        width: 50px;
        height: 50px;
        background-color: green;
        float: left;
    }
    .child-2 {
        width: 50px;
        height: 50px;
        background-color: yellow;
        float: left;
    }
    .child-3 {
        width: 50px;
        height: 50px;
        background-color: red;
        float: left;
    }
</style>
</html>
View Code

CSS之多个div一行排列第3张

  2、float引发问题

    2.1)父元素高度坍塌:

    父元素不写高,靠子元素撑起高度,所有子元素都浮动,那么所有子元素都脱离文档流,父元素认为自己内部没有元素了,所以父元素就没有高度了。

    解决方法:

    a、父元素也浮动。缺点是影响父元素后的非浮动元素

    b、给父元素写高度。缺点是有时我们并不知道父元素的高度

    c、overflow:hidden。 缺点是会让真正要溢出不能显示

    d、直接在父元素里面增加一个块级元素。没有内容、没有高度。缺点是莫名多了一个div,不好维护。

<div class="box">
    <div class="child float-left"></div>
    <div class="child float-left"></div>
    <div class="clear"></div>
<div>
.clear { clear: both }
.float-left {
  float: left
}

  e、父元素利用伪元素:after,并且清除浮动(推荐)

<div class="box">
    <div class="child float-left"></div>
    <div class="child float-left"></div>
<div>

.box::after {
    display: block;
    content: '';
    clear: both
}

    2.2)子元素高度不一致时,浮动位置错乱

    如图黑色div本应该在绿色div的下面,解决方法是使用display布局

CSS之多个div一行排列第4张CSS之多个div一行排列第5张
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
</head>
<body>
  <div class="box">
    <div class="child-1"></div>
    <div class="child-2"></div>
    <div class="child-3"></div>
    <div class="child-4"></div>
  </div>
</body>
<style>
    .box {
        width: 180px;
        height: 200px;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
        background-color: skyblue;
    }

    .child-1 {
        width: 50px;
        height: 50px;
        background-color: green;
        float: left;
    }
    .child-2 {
        width: 50px;
        height: 80px;
        background-color: yellow;
        float: left;
    }
    .child-3 {
        width: 50px;
        height: 50px;
        background-color: red;
        float: left;
    }
    .child-4 {
        width: 50px;
        height: 50px;
        background-color: black;
        float: left;
    }
</style>
</html>
View Code

CSS之多个div一行排列第6张

  二、使用display

  display常用属性:

  a、inline,使元素变成行内元素,行内元素共享一行,没有宽高属性

  b、block,使元素变成块级元素,独占一行

  c、inline-block,理解为不独占一行的块级元素

  1、代码示例

CSS之多个div一行排列第7张CSS之多个div一行排列第8张
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
</head>
<body>
  <div class="box">
    <div class="child-1"></div>
    <div class="child-2"></div>
    <div class="child-3"></div>
  </div>
</body>
<style>
    .box {
        width: 800px;
        height: 200px;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
        background-color: skyblue;
    }

    .child-1 {
        width: 50px;
        height: 50px;
        background-color: green;
        display: inline-block;
    }
    .child-2 {
        width: 50px;
        height: 50px;
        background-color: yellow;
        display: inline-block;
    }
    .child-3 {
        width: 50px;
        height: 50px;
        background-color: red;
        display: inline-block;
    }
</style>
</html>
View Code

CSS之多个div一行排列第9张

  可以看到三个子元素之间有缝隙,这是由于换行引起的,去除方法是在父元素添加 font-size:0

  演示去除缝隙,并且子元素高度不一致不会引起布局错乱

CSS之多个div一行排列第10张CSS之多个div一行排列第11张
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
</head>
<body>
  <div class="box">
    <div class="child-1"></div>
    <div class="child-2"></div>
    <div class="child-3"></div>
    <div class="child-4"></div>
  </div>
</body>
<style>
    .box {
        width: 180px;
        height: 200px;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
        background-color: skyblue;
        font-size: 0;
    }

    .child-1 {
        width: 50px;
        height: 50px;
        background-color: green;
        display: inline-block;
    }
    .child-2 {
        width: 50px;
        height: 80px;
        background-color: yellow;
        display: inline-block;
    }
    .child-3 {
        width: 50px;
        height: 50px;
        background-color: red;
        display: inline-block;
    }
    .child-4 {
        width: 50px;
        height: 50px;
        background-color: black;
        display: inline-block;
    }
</style>
</html>
View Code

CSS之多个div一行排列第12张

免责声明:文章转载自《CSS之多个div一行排列》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇将 Shiro 作为一个许可为基础的应用程序 五:password加密/解密Spring应用转:Log Explorer使用说明恢复被误删除的数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSS 实现隐藏滚动条同时又可以滚动

移动端页面为了更接近原生的体验,是否可以隐藏滚动条,同时又保证页面可以滚动? 使用overflow:hidden隐藏滚动条,但存在的问题是:页面或元素失去了滚动的特性。由于只需要兼容移动浏览器(Chrome 和 Safari),于是想到了自定义滚动条的伪对象选择器::-webkit-scrollbar。 应用如下 CSS 可以隐藏滚动条: .elemen...

CSS 外边距

CSS 外边距围绕在元素边框的空白区域是外边距。设置外边距会在元素外创建额外的“空白”。设置外边距的最简单的方法就是使用 margin 属性,这个属性接受任何长度单位、百分数值甚至负值。################CSS 外边距属性属性 描述margin 简写属性。在一个声明中设置所有外边距属性。margin-bottom 设置元素的下外边距。mar...

Document节点

概述 document节点对象代表整个文档,每张网页都有自己的document对象。window.document属性就指向这个对象。只要浏览器开始载入 HTML 文档,该对象就存在了,可以直接使用。 document对象有不同的办法可以获取。 正常的网页,直接使用document或window.document。 iframe框架里面的网页,使用ifr...

Android开发之玩转FlexboxLayout布局

在这之前,我曾认真的研究过鸿洋大神的Android 自定义ViewGroup 实战篇 -> 实现FlowLayout,按照大神的思路写出了一个流式布局,所有的东西都是难者不会会者不难,当自己能自定义流式布局的时候就会觉得这东西原来很简单了。如果各位小伙伴也看过那篇文章的话,应该知道自定义流式布局还是非常麻烦的,不过Google今年开源了新的容器,就是...

css选择符的渲染效率

  CSS选择符由一些初始化参数组成,这些参数指明了要应用这个CSS规则的页面元素。作为一个网站的前端开发工程师,应该避免编写一些常见的开销很大的CSS选择符模式,尽量编写高效的CSS选择符,从而加快页面的渲染速度,缩短页面呈现时间。   我们先来看一下safari和webkit的架构师David Hyatt的两段话: 样式系统从最右边的选择符开始向左...

Html添加百度地图

方法/步骤 1、打开“百度地图生成器”的网址:http://api.map.baidu.com/lbsapi/creatmap/index.html 如下图: 2、在“1.定位中心点”中,切换城市,并查找具体位置,如下图: 3、在“2.设置地图”中,可以按照自己的喜好修改地图的外观: a、地图的宽和高 b、地图上显示的按钮(缩放、缩略图、比例尺) c...