利用float+margin

HTML代码

<body>
<div id="left">左列定宽</div>
<div id="right">右列自适应</div>
</body>

css代码

#left {
   background-color: #f00;
   float: left;
   width: 100px;
   height: 500px;
}
#right {
   background-color: #0f0;
   height: 500px;
   margin-left: 100px; /*设置间隔,大于等于#left的宽度*/
}

优点:代码简单;容易理解;兼容性好

缺点:#left的宽度和#right的margin-left需要对应且固定

利用float+margin(fix)

HTML代码

<body>
<div id="left">左列定宽</div>
<div id="right-fix">
   <div id="right">右列自适应</div>
</div>
</body>

CSS代码

#left {
   background-color: #f00;
   float: left;
   width: 100px;
   height: 500px;
}
#right-fix {
   float: right;
   width: 100%;
   margin-left: -100px; /*正值大于或等于#left的宽度,才能上移一行*/
}
#right{
   margin-left: 100px; /*大于或等于#left的宽度,才不会遮挡#left*/
   background-color: #0f0;
   height: 500px;
}

优点:代码较简单;兼容性好

缺点:相比(1)的方法,多了一个div,多写了一些代码;不容易理解;margin需要对应好

使用float+overflow

HTML代码

<body>
<div id="left">左列定宽</div>
<div id="right">右列自适应</div>
</body>

CSS代码

#left {
   background-color: #f00;
   float: left;
   width: 100px;
   height: 500px;
}
#right {
   background-color: #0f0;
   height: 500px;
   overflow: hidden; /*触发bfc达到自适应*/
}

优点:代码简单;容易理解;无需关注定宽的宽度,利用bfc达到自适应效果

缺点:#right设置margin-left需要大于#left的宽度才有效,或者直接给#left设置margin-right

使用table实现

THML代码

<div id="parent">
   <div id="left">左列定宽</div>
   <div id="right">右列自适应</div>
</div>

CSS代码

#parent{
   width: 100%;
   display: table;
   height: 500px;
}
#left {
   width: 100px;
   background-color: #f00;
}
#right {background-color: #0f0;}
/*利用单元格自动分配宽度*/
#left,#right{display: table-cell;}

优点:代码简单;容易理解;适用于宽度高度未知情况;兼容性好(ie8+)

缺点:margin失效;设置间隔比较麻烦;设置tabl-cell的元素,宽度和高度的值设置百分比无效,需要给它的父元素设置display: table; 才生效;table-cell不感知margin,在父元素上设置table-row等属性,也会使其不感知height;设置float或position会对默认布局造成破坏,可以考虑为之增加一个父div定义float等属性;内容溢出时会自动撑开父元素

使用position实现

HTML代码

<body>

<div id="parent">
   <div id="left">左列定宽</div>
   <div id="right">右列自适应</div>
</div>
</body>

CSS代码

#parent{position: relative;}  /*父相*/
#left {
   position: absolute;  /*子绝*/
   top: 0;
   left: 0;
   background-color: #f00;
   width: 100px;
   height: 500px;
}
#right {
   position: absolute;  /*子绝*/
   top: 0;
   left: 100px;  /*值大于等于#left的宽度*/
   right: 0;
   background-color: #0f0;
   height: 500px;
}

优点:容易理解;兼容性好

代码较多;脱离文档流;左边盒子的width需要对应右边盒子的left值

使用flex实现

HTML代码

<body>
<div id="parent">
   <div id="left">左列定宽</div>
   <div id="right">右列自适应</div>
</div>
</body>

CSS代码

#parent{
   width: 100%;
   height: 500px;
   display: flex;
}
#left {
   width: 100px;
   background-color: #f00;
}
#right {
   flex: 1; /*均分了父元素剩余空间*/
   background-color: #0f0;
}

优点:简单灵活;功能强大

缺点:PC端兼容性不好,移动端(Android4.0+)

使用Grid实现

HTML代码

<body>
<div id="parent">
   <div id="left">左列定宽</div>
   <div id="right">右列自适应</div>
</div>
</body>

CSS代码

#parent {
   width: 100%;
   height: 500px;
   display: grid;
   grid-template-columns: 100px auto;  /*设定2列就ok了,auto换成1fr也行*/
}
#left {background-color: #f00;}
#right {background-color: #0f0;}

优点:灵活划分网格区域;新型布局利器,适用于页面三维布局

缺点:兼容性不好,移动端(Android5.0+)


来源:https://github.com/Sweet-KK/css-layout

作者:Sweet-KK

左列定宽,右列自适应相关推荐

  1. 关于某题左列定宽右列宽度自适应布局的学习

    今天群里有人做题发了一道题,由于最近在学习flex布局,就不禁研究了起来... 题目如下: 已知HTML结构如下,以下哪些CSS可以实现左列定宽(100px)右列宽度自适应的布局? <div c ...

  2. CSS使用浮动属性和边距设计3行3列定宽的布局实例

    CSS使用浮动属性和边距设计3行3列定宽的布局 下面使用CSS的浮动属性和边距属性设计一个简单地3行3列并且是固定宽度的布局页面. 实例 设计步骤如下: 1. 制作3行3列定宽布局的XHTML部分.源 ...

  3. background背景图片自适应_一侧定宽、一侧自适应,尽量多的方案实现?「前端剑指offer」...

    # 问题 一侧定宽.一侧自适应,尽量多的方案实现. # 回答 有下面几种方案能实现一侧定宽一侧自适应. 使用flex布局,这也是目前主流方式.父容器设置display:flex,定宽字元素设置flex ...

  4. html 左边距自适应,左边定宽,右边自适应布局的几种方法

    实际的页面开发中经常会遇到左边定宽,右边自适应的需求,特别是一些管理系统,比如左边显示信息或操作列表,右边显示详情,如下所示:. 针对这种布局,首先抽象出页面结构如下: 1 2 3 4 5 Docum ...

  5. css高度已知,左右定宽,中间自适应三栏布局

    css高度已知,左右定宽,中间自适应三栏布局: <!DOCTYPE html> <html lang="en"> <head><meta ...

  6. 两边定宽,中间自适应布局的四种实现方法

    1. 浮动法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  7. 两列布局左边定宽,右边自适应

    效果图: 代码如下: <html> <head> <title>文章标题</title> <meta http-equiv="Conte ...

  8. Layout两列定宽中间自适应三列布局

    最容易理解的一种方法,以中间内容为主体,通过 margin 或者 padding 将两侧撑开,最后用 absolute 定位两侧 html: <div class="container ...

  9. 实现两边定宽,中间自适应布局(三栏布局)的七种方法

    浮动法 <style type="text/css">html,body{height: 100%;margin: 0;} div{height: 100%;}.lef ...

最新文章

  1. 介绍一个懒人创建springmvc项目的方法(二)
  2. Apache 配置的性能调优
  3. V7000存储运维使用手册
  4. Android Studio Gradle 问题 解决方案
  5. java json 解析null_解析包含null的原始json数组
  6. 为什么我要构建这个脚手架
  7. Manage Attachment feature
  8. jQuery文档就绪事件
  9. 人工智能技术专家系统
  10. matlab绘制二元一次函数图像_基于MATLAB的数学图像绘制
  11. 小结大学计算机基础课程内容报告,WORD制作新年贺卡和个人简历大学计算机基础课程设计报告书...
  12. 手把手教你PXE高效网络装机、Kickstart无人值守安装(详细版)
  13. 半监督3D医学图像分割(一):Mean Teacher
  14. MAC表、ARP缓存表、路由表以及端口映射NAT
  15. 力扣多线程练习----交替打印FooBar---打印零与奇偶数
  16. JavaSrcipt学习(学习打卡Day8)
  17. 计算机组装与维护试题汇总2013,匡子平2013年上期85《计算机组装与维护》期末试题及答案...
  18. 减法器(差分放大器)
  19. 交换机路由器的基本配置
  20. linux下查找网口_Linux服务器查看对应网卡的网口

热门文章

  1. Nutanix推出自动化功能,助力企业保证业务连续性
  2. 开发人员在编写 HTML 和 CSS 时最常犯的六大错误
  3. 为什么我选择用 C 编写游戏?
  4. 8 月社群专属福利活动开启!进群免费领取开发视频课程!
  5. 在编程中,为何说数据仍占主导地位?
  6. 996.ICU 下被过度消费的程序员,还配享受生活吗?
  7. 学 Python 没找对路到底有多惨?| 码书
  8. 微软:Mozilla,我劝你拥抱 Chromium!
  9. 谷歌终于拒绝 AI 武器化了!
  10. 苹果iOS 11.3.1正式发布,修复iPhone 8触屏bug