多列布局之一列、多列定宽及一列自适应布局

命题:

<div class="parent">
     <div class="left">
          <p>left</p>
    </div>
    <div class="right">
          <p>right</p>
          <p>right</p>
    </div>
</div>

问题一:一列定宽及一列自适应

方案1:

.left{
   float:left;
   width:100 px;
}
.right{
   margin-left : 120 px;
}

缺点:1.ie6里会产生3px的bug,即right里的文字会向右缩进3px。解决方案:.left{margin-right:-100px;}

2.如right上加上了清除浮动,会掉到下一行。

改进方案:

//html<div class="parent">
     <div class="left">
          <p>left</p>
    </div>
    <div class="right-fix">
        <div class="right">
            <p>right</p>
            <p>right</p>
         </div>
    </div>
</div>//style
.left{
   float:left;
   width:100 px;   position:relative;    //提高left层级
}
.right-fix{   float:right;   width:100%;   margin-left:100px;}
.right{ margin-left : 120 px; }

优点:兼容性好

缺点:结构复杂

方案2:

.left{
   float:left;
   width:100 px;   margin-right:20px
}
.right{
   overflow:hidden;          //触发BFC模式
}

BFC:block formating contact快速格式化。与外面格式隔离

缺点:IE6不支持

方案3:

.parent{
   display:table;
   width:100%;           //table默认宽度以内容为准,每列的宽度之和为table总宽   table-layout:fixed;   //提高渲染速度,实现了布局优先
}
.left,.right{
   display:table-cell;   //设为单元格  不能设margin
}
.left{
   width: 100 px;   padding-right:20px;
}

方案4:

.parent{
    display:flex;
}
.left{
    width: 100 px;
    margin-right:20px;
}
.right{
    flex:1;                 //相当于flex:1 1 0;   剩余空间都给了right
}

缺点:1.低版本浏览器中有兼容性问题;

2.由于flex是根据内容调整宽度,因此可能性能有问题

注意:尽量只在不太复杂的地方运用flex

问题一:多列定宽及一列自适应

一般只需将定宽的列写同一格式,即用同一个style

总结:注意兼容性,及掌握元素特性。

时间: 2024-10-16 17:58:03

多列布局之一列、多列定宽及一列自适应布局的相关文章

两列布局(一列定宽,一列自适应)

用table+table-cell实现两列布局(一列定宽,一列自适应,且table是自动的两列自动登高) 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style type="text/css"> 7 .pare

两列布局,一列定宽,一列宽度自适应

方法一: body{ margin: 0;}.container{ height: 300px; overflow: hidden;}.left{ width: 200px; height: 300px; background: red; position: absolute; left:0; top: 0;}.right{ margin-left:200px; width: 100%; height: 300px; background: green;} <div class="cont

CSS基础布局--居中对齐,左侧定宽右侧自适应

CSS页面布局是web前端开发的最基本的技能,本文将介绍一些常见的布局方法,涉及到盒子布局,column布局,flex布局等内容.本文中,你可以看到一些水平垂直居中的方法,左侧固定宽度,右侧自适应的一些方法.如果你有更多关于布局方面的技巧,欢迎留言交流. 一.神奇的居中 经常看到有一些面试题问如何实现水平垂直居中,还要求用多种方法.唉唉唉!下面介绍一下我所知道的实现居中的方法. (1)父元素relative;子元素absolute,top:50%;left:50%;margin-left:-自己

【CSS】一侧定宽,另一侧自适应的布局该如何去做

一侧定宽,一侧自适应的页面布局在现在用的很多,有哪些实现方式呢? 1,通过浮动和margin取正值来实现: 定宽的元素为#sidebar 自适应的元素为#content css代码如下: 给定宽的元素设置浮动 #sidebar{ float:left; width:200px;  height:600px; background-color:red; } 自适应的元素呢?来给他设置margin-left吧,取值比上面那个元素的宽度大一些就好 #content{ width:100%; //如果是

布局-两列布局(一列定宽,一列自适应)

结构: 1 <div class="parent"> 2 <div class="left"> 3 <p>left</p> 4 </div> 5 <div class="right"> 6 <p>right</p> 7 <p>right</p> 8 </div> 9 </div> 样式: 1.解决方案一:

一列定宽,一列自适应

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> /* 一列顶宽200px,外边距10,一列自适应 */ *{margin: 0;padding: 0;} .aa{text-align: center; line-height: 200px; color: whit

巧用padding让图片宽高比固定并自适应布局

1.从上图知道原始图片大小是 800 * 250,即宽高比为 3.2: 2.html 及 css 代码如下, 可以知道就只是在一个div里面放了一张图片,那么如何让这张图片的宽高比固定呢,看了css之后就知道了原来是神奇的padding帮了我们的忙. 3.当img的宽度为100%时,那么.banner的padding-bottom(padding-top也可以)的值为 100%(图片想要设置的宽度) / 3.2(图片的原始宽高比)= 31.25%: (如果你想把 img 的宽度设为50%的话,那

两列布局中单列定宽单列自适应布局的5种思路

× 目录 [1]float [2]inline-block [3]table[4]absolute[5]flex 前面的话 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.本文将从float.inline-block.table.absolute和flex这五种思路来详细说明如何巧妙地实现布局 思路一: float 说起两列布局,最常见的就是使用float来实现.float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清除浮动.如果各浮动元素的高度不同时,可能会出犬牙交错

css 两列布局中单列定宽单列自适应布局的6种思路

前面的话 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.本文将从float.inline-block.table.absolute.flex和grid这六种思路来详细说明如何巧妙地实现布局 float [思路一]float 说起两列布局,最常见的就是使用float来实现.float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清除浮动.如果各浮动元素的高度不同时,可能会出犬牙交错的效果 [1]float + margin 将定宽的一列使用float,而自适应的一列使用计