CSS设置div高度自适应

通过CSS实现Div高度自适应:

问:

在一个DIV中有多个未知高度的子元素DIV,怎样通过CSS实现子元素div同高 或 怎样实现同行div按照内容最多的那个设置高度。

如图:

 

 

实现1:添加表格特性

方式:

父级元素添加属性  display: table;

子一级元素添加属性 display: table-cell;

        <div class="div-row">

        <style type="text/css">

            .div-row {

                width: 400px;

                border: 1px solid #23527C;

                display: table;

            }

            .div-col {

                display: table-cell;

            }

        </style>

 

            <div class="div-col" style="background-color: #28A4C9;">

                <p><span>内容1</span></p>

            </div>

            <div class="div-col"  style="background-color: #31B0D5;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

            </div>

            <div class="div-col"  style="background-color: #269ABC;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

            </div>

            <div  class="div-col" style="background-color: #5BC0DE;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

                <p><span>内容4</span></p>

                <p><span>...</span></p>

            </div>

        </div>

效果如下:

注意:

浏览器兼容问题:IE6/IE7可能存在不兼容的情况

display: table时子元素会自动左浮动,不需要再进行浮动操作

   display: table时padding会失效

display: table-cell时margin会失效,会先均分父级框,然后根据占比

 

实现2:补丁法

      方式:父级元素溢出隐藏:overflow:hidden;

      子一级元素“正内补丁”“负外补丁”结合: padding-bottom:9999px;margin-bottom:-9999px; 

       <div class="div-row">

       <style type="text/css">

           .div-row {

              width: 400px;

              border: 1px solid #23527C;

              overflow: hidden;

           }

           .div-col {

width: 25%;

              float: left;

              padding-bottom: 9999px;

              margin-bottom: -9999px;

           }

       </style>

 

           <div class="div-col" style="background-color: #28A4C9;">

              <p><span>内容1</span></p>

           </div>

           <div class="div-col"  style="background-color: #31B0D5;">

              <p><span>内容1</span></p>

              <p><span>内容2</span></p>

           </div>

           <div class="div-col"  style="background-color: #269ABC;">

              <p><span>内容1</span></p>

              <p><span>内容2</span></p>

              <p><span>内容3</span></p>

           </div>

           <div  class="div-col" style="background-color: #5BC0DE;">

              <p><span>内容1</span></p>

              <p><span>内容2</span></p>

              <p><span>内容3</span></p>

              <p><span>内容4</span></p>

              <p><span>...</span></p>

           </div>

       </div>

效果如下:

注意:

  1. 只是视觉上的“障眼法”
  2. 其他属性需要(浮动,宽度)需要自己再设置

 

实现3:填充背景

方式:通过在父级元素使用一张背景图片实现

        <div class="div-row">

        <style type="text/css">

            .div-row {

                width: 400px;

                background-image: url(../img/similarHeight.jpg);

                background-repeat: repeat-y;

                border: 1px solid #23527C;

            }

            .div-col {

                width:25%;

                float: left;

            }

            .clear {

                clear: both;

            }

        </style>

 

            <div class="div-col">

                <p><span>内容1</span></p>

            </div>

            <div class="div-col">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

            </div>

            <div class="div-col">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

            </div>

            <div  class="div-col">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

                <p><span>内容4</span></p>

                <p><span>...</span></p>

            </div>

            <div class="clear"></div>

        </div>

效果如下:

注意:

只是多加载了一张背景图,据说是目前比较流行的方式

背景图片需要视情况设计

标签最后用于清除浮动的元素等同于父元素加overflow: hidden; 让父元素高度自适应

实现4:flex布局

实现:

         父级元素设置:display: flex;

        <div class="div-row">

            <style type="text/css">

              .div-row {

                width: 400px;

                border: 1px solid #23527C;

                display: flex;

              }

              .div-col {

                width: 25%;

              }

            </style>

 

            <div class="div-col" style="background-color: #28A4C9;">

                <p><span>内容1</span></p>

            </div>

            <div class="div-col"  style="background-color: #31B0D5;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

            </div>

            <div class="div-col"  style="background-color: #269ABC;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

            </div>

            <div  class="div-col" style="background-color: #5BC0DE;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

                <p><span>内容4</span></p>

                <p><span>...</span></p>

            </div>

        </div>

效果如下:

注意:

版本兼容,IE10+

 

 

补充:指定子元素

实现:根据相对和绝对定位实现

         父级元素设置:position: relative;

         子一级元素设置:position: absolute;

 

        <div class="div-row">

        <style type="text/css">

            .div-row {

                width: 400px;

                position:relative ;

                border: 1px solid #23527C;

                overflow: hidden;

            }

            .div-col1 {

                width: 25%;

                float: left;

            }

            .div-col2 {

                width: 25%;

                left: 25%;

                top: 0;

                float: left;

                position: absolute;

            }

            .div-col3 {

                width: 25%;

                left: 50%;

                top: 0;

                float: left;

                position: absolute;

            }

            .div-col4 {

                width: 25%;

                left: 75%;

                top: 0;

                float: left;

                position: absolute;

            }

        </style>

 

            <div class="div-col1" style="background-color: #28A4C9;">

                <p><span>内容1</span></p>

            </div>

            <div class="div-col2"  style="background-color: #31B0D5;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

            </div>

            <div class="div-col3"  style="background-color: #269ABC;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

            </div>

            <div  class="div-col4" style="background-color: #5BC0DE;">

                <p><span>内容1</span></p>

                <p><span>内容2</span></p>

                <p><span>内容3</span></p>

                <p><span>内容4</span></p>

                <p><span>...</span></p>

            </div>

        </div>

效果如下:

注意:

需要指定某个子元素,用于指定的子元素不做定位操作,根据他的高度而实现同一高度。

方法实用性差,也不是实现 根据内容最高的子元素自适应高度。

补充:js实现

    <div class="div-row">

        <div class="div-col" style="background-color: #28A4C9;">

            <p><span>内容1</span></p>

        </div>

        <div class="div-col"  style="background-color: #31B0D5;">

            <p><span>内容1</span></p>

            <p><span>内容2</span></p>

        </div>

        <div class="div-col"  style="background-color: #269ABC;">

            <p><span>内容1</span></p>

            <p><span>内容2</span></p>

            <p><span>内容3</span></p>

        </div>

        <div  class="div-col" style="background-color: #5BC0DE;">

            <p><span>内容1</span></p>

            <p><span>内容2</span></p>

            <p><span>内容3</span></p>

            <p><span>内容4</span></p>

            <p><span>...</span></p>

        </div>

    </div>

    <script type="text/javascript" src="jquery.js" ></script>

    <script type="text/javascript">

        $(function(){

            var baseHeight = 0;

            $(".div-col").each(function(){

                if(baseHeight < $(this).height()){

                    baseHeight = $(this).height()

                }

            })

            $(".div-row").css({"width":"400px","border":"1px solid #111","overflow":"hidden"});

            $(".div-col").css({"width":"25%","height":baseHeight,"float":"left"});

 

        })

    </script>

效果如下:

### 回答1: 使用 CSS 居中 div 的方法有很多种,下面列举几种常用的方式: 1. 使用 flex 布局,将 div 设置为 flex 容器,再设置 align-items 和 justify-content 属性为 center。 ``` .container{ display: flex; align-items: center; justify-content: center; } ``` 2. 使用 grid 布局,将 div 设置为 grid 容器,再设置 place-items 属性为 center。 ``` .container{ display: grid; place-items: center; } ``` 3. 使用绝对定位和负外边距,将 div 设置为绝对定位,设置 left、right、top、bottom 属性为 0,再设置 margin 属性为 auto。 ``` .container{ position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; } ``` 4. 使用 table 布局,将 div 设置为 table-cell,再设置 vertical-align 和 text-align 属性为 middle。 ``` .container{ display: table-cell; vertical-align: middle; text-align: center; } ``` 这些是几种常见的方法, 可以根据具体场景选择使用. ### 回答2: 在CSS中,可以通过不同的方式来设置div居中。 一种简单的方法是使用CSS的margin属性来实现: ``` div { width: 200px; // 设置div的宽度 height: 200px; // 设置div高度 margin: 0 auto; // 设置左右外边距为auto,即自动计算使div水平居中 } ``` 另一种方法是使用CSS的position属性和transform属性来实现: ``` div { width: 200px; // 设置div的宽度 height: 200px; // 设置div高度 position: absolute; // 设置定位为绝对定位 left: 50%; // 设置左侧位置为屏幕一半的位置 top: 50%; // 设置顶部位置为屏幕一半的位置 transform: translate(-50%, -50%); // 使用transform属性将div向左上角移动自身宽高的一半,实现水平和垂直居中 } ``` 还可以使用flex布局来实现水平和垂直居中: ``` body { display: flex; // 设置容器为flex布局 justify-content: center; // 设置主轴水平居中 align-items: center; // 设置交叉轴垂直居中 } div { width: 200px; // 设置div的宽度 height: 200px; // 设置div高度 } ``` 这些方法都可以实现div的水平和垂直居中,选择使用哪种方法可以根据实际需求和布局来决定。 ### 回答3: 要使一个div元素在CSS中居中,可以使用以下方法: 1. 使用margin属性:设置div元素的左右外边距为"auto",并将其宽度设置为小于父容器宽度的值,这样div元素就会水平居中。例如: ```css div { margin-left: auto; margin-right: auto; width: 200px; } ``` 2. 使用flex布局:在父容器上应用flex布局,并使用justify-content和align-items属性将子元素居中。例如: ```css .container { display: flex; justify-content: center; align-items: center; } ``` 在这种情况下,div元素将在父容器内垂直和水平居中。 3. 使用绝对定位和transform属性:将div元素的位置设置为绝对定位,并通过将左、右、上、下属性的值设置为0,并使用transform的translate方法使其水平和垂直居中。例如: ```css div { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } ``` 请注意,父容器可能需要设置为相对定位或具有非静态定位,以使上述方法起作用。 以上是几种常用的方法,可以根据具体情况选择适合的方式来使div元素居中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值