CSS 左边固定宽右边自适应的6种方法


Posted in HTML / CSS onMay 15, 2022

这是一道面试题,你有多少种办法呢?

这里我们假设左边名为 left,宽度为 200 px,右边名为 right。即默认

.left {
  width: 200px;
}

我的理解分四大类

  • flex 布局

    • 需设置父元素高度
  • grid 布局

    • 需设置父元素高度
  • 绝对定位

    • 双子元素 absolute

      • 不需要设置父元素高度
      • 子元素都设置高度,右边子元素 left:200px + width: 100%
    • 左元素 absolute + 右元素 margin-left

      • 不需要设置父元素高度
      • 子元素都设置高度,右边子元素 margin-left: 200px + width: 100%
  • float 浮动

    • 左元素左浮动,右元素不动

      • 无需父元素
      • 左元素需设置宽高和浮动,右元素设置高度即可
    • 左元素左浮动,右元素右浮动

      • 无需父元素
      • 左元素设置宽高和左浮动,右元素设置右浮动以及高和宽(width: calc(100% - 200px)

flex 布局

需要一个父元素做 flex 布局,且需要给它一个高度(撑开容器)

.father {
  display: flex;
  height: 200px;
}
.right {
  flex: 1;
}

grid 布局

高级的布局方式,子元素不需要设置宽度,单单设置父元素属性即可。

.grid {
  display: grid;
  grid-template-columns: 200px 100%;
  height: 200px;
}

双子元素 + absolute

需要给子元素设置宽高,不然撑不起来。右元素设置left: 200px

.father {
  position: relative;
  height: 200px;
}
.left {
  position: absolute;
  height: 200px;
}
.right {
  position: absolute;
  left: 200px;
  height: 200px;
  width: 100%;
}

左元素 absolute + 右元素 margin-left

.father {
  position: relative;
  height: 200px;
}
.left {
  position: absolute;
  width: 200px;
  height: 200px;
}
.right {
  width: 100%;
  height: 200px;
  margin-left: 200px;
}

无父元素 + 左元素左浮动,右元素不动

前两种都需要有个父元素,但浮动不需要

左边浮动,下一个元素独占位置,并排一行

同样,需要设置高度,子元素才能撑开

.left {
  float: left;
  height: 200px;
}
.right {
  height: 200px;
}

无父元素 + 左边左浮动,右边有浮动

浮动不需要父元素,浮动就区别于正常文档流

我的理解是正常文档流是二维层面,而浮动相当于成了三维,区别于 Z 轴

右边元素有浮动不够,还需要设置宽度

.left {
  float: left;
  height: 200px;
}

.right {
  float: right;
  height: 200px;
  width: calc(100% - 200px);
}

只要是 float 实现此功能的,都不需要父元素,以及自身都需要设置高度

总结

简单来说,实现布局最好的方式是 flex,简单兼容现代浏览器和机型。当然,我是因为还没有学 grid(但 grid 要记得参数比较多)。绝对定位和浮动各有优缺点

各大方法 优缺点 需要什么
flex 布局简单 需要父元素、高度。子项 flex:1
grid 布局最简单,但兼容性更现代 只需要父元素设置属性就好
绝对定位 兼容性更高 需要父元素做相对定位、高度
浮动 兼容性更高 不需要父元素,子项都需要宽高

float 区别于其他三种,不需要父元素做容器

grid 区别于其他三种,不需要设置子元素(左元素的)宽

绝对定位区别于其他三种,它的方法不仅要父元素有高,其子元素也要有高

flex 最简单

到此这篇关于左边固定宽右边自适应的6种方法的文章就介绍到这了!

 
HTML / CSS 相关文章推荐
css3绘制天猫logo实现代码
Nov 06 HTML / CSS
css3.0 图形构成实例练习一
Mar 19 HTML / CSS
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
Sep 02 HTML / CSS
css3进阶之less实现星空动画的示例代码
Sep 10 HTML / CSS
html5/css3响应式页面开发总结
Oct 16 HTML / CSS
你可能不熟练的十个前端HTML5经典面试题
Jul 03 HTML / CSS
html5需遵循的6个设计原则
Apr 27 HTML / CSS
使用Html5中的cavas画一面国旗
Sep 25 HTML / CSS
HTML5 3D旋转相册的实现示例
Dec 03 HTML / CSS
HTML通过表单实现酒店筛选功能
May 18 HTML / CSS
css height属性中的calc方法详解
Jun 03 HTML / CSS
浅析CSS在DevTools 中架构演变
Oct 05 HTML / CSS
解决flex布局中子项目尺寸不受flex-shrink限制
May 11 #HTML / CSS
css3 选择器
May 11 #HTML / CSS
六个好看实用的 HTML + CSS 后台登录入口页面
HTML CSS 一个标签实现带动画的抖音LOGO
常用的文件对应的MIME类型汇总
Apr 26 #HTML / CSS
通过feDisplacementMap和feImage实现水波特效
什么是css原子化,有什么用?
Apr 24 #HTML / CSS
You might like
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
python3实现跳一跳点击跳跃
2018/01/08 Python
Python数据结构之图的应用示例
2018/05/11 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
python中doctest库实例用法
2020/12/31 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
中医专业职业生涯规划书范文
2014/01/04 职场文书
主题婚礼策划方案
2014/02/10 职场文书
六查六看剖析材料
2014/02/15 职场文书
厨房管理计划书
2014/04/27 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
学期个人工作总结
2015/02/13 职场文书
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android