网站首页 > 技术文章 正文
一、应用场景
左侧一个导航栏宽度固定,右侧内容根据用户浏览器窗口宽度进行自适应
二、思路
首先把这个问题分步解决,需要攻克以下两点:
1、让两个div并排到一行
2、让一个div宽度固定,另个div占据剩下宽度的空间
关于第一点,首先要明确,div属于块级元素,在文档标准流中单独占据一行。要想多个div在一行,就可以想办法让div脱离标准流,比如使用float或者absolute;
关于第二点,首先有一个宽度固定的div,另外自适应的div宽度是多少?首先这个宽度不能写“100%”,因为这里的100%是相对于第一个非静态祖先元素的,也就是说如果这样写,页面会出现整个页面宽度+左边固定列宽度的情形。那么对自适应宽度的div处理方法是不去设置它的width属性,浏览器会自动计算后让它占一行,接下来给他设置margin-left属性把左侧固定列空间空出即可。
三、实现
1、html
2、css
注:
1、fixedColumn 里注释的方法即绝对定位的实现方式,取消注释后把float那句注释掉,可以实现相同的效果
2、使用float需要注意清除浮动造成父元素塌陷的问题(这里不用清除,因为自适应列和固定列一样高,在标准流中可以撑起父元素)
四、扩展
如果把上面的问题稍微改变一下,要求展示一个左中右布局,而且左右固定,中间自适应,这要如何实现呢?
估计很多人会这样想:
css中.flexibleColumn样式添加一个属性:margin-right: 40px;
html中再追加一个固定列,在右侧浮动:
<div class="fixedColumn" style="float: right;"></div>
然后运行的效果是...左中布局,右边空白,浏览器出现滚动条,右固定列换行后右浮动了。
然后我们做一个小小的改动——把刚才添加的右浮动固定列的dom放到自适应列前面,也就是说html的dom顺序是左浮动,右浮动,自适应的顺序!html如下:
效果就“神奇”的实现了~
这里一个注意点就是:浮动元素在dom中要在非浮动元素的前面,否则非浮动元素后面的浮动元素会换行。
具体原理待研究..网上好像没查到,有谁知道的话希望告知~
总结:一定要自己实现试试,注意只有固定列脱离了文档流,自适应列还在文档流中!其他没什么要说的了,但是应该还有更好的方法,等我看到了一并总结过来~
想要学习更多的编程技术,不如选择重庆IT培训,千锋重庆100%面授式课程,拒绝视频同步授课,拒绝双元视频班教学,拒绝直播授课,教师一对一指导学员做项目,全新打造“主流技术+前沿技术+企业级联动”教学课程,重新优化和定义编程语言,采用最新版本技术开展教学,致力于为学员打造最牛的、最新的技术,助力学员拿下BAT级企业Offer。
千锋重庆IT技术开发培训,让你在同样的起跑线,跑出不一样的高度。
猜你喜欢
- 2024-10-05 「前端」HTML之结构(html前端技术)
- 2024-10-05 如何彻底搞懂 Java 数据结构?|CSDN 博文精选
- 2024-10-05 Vue实战081:多HTML标签元素如何实现并排显示详解
- 2024-10-05 织梦系统后台更新主页html选项为空的解决方法
- 2024-10-05 HTML基础的 标签(html标签及作用)
- 2024-10-05 html页面结构(html页面结构分析)
- 2024-10-05 边学边做网页篇------初识HTML(html网页在线制作)
- 2024-10-05 前端必备,20个CSS小技巧(前端css是什么意思)
- 2024-10-05 前端面试题《html和css部分》(web前端css面试题)
- 2024-10-05 前端面试题之HTML(web前端面试题2020)
- 08-03MySQL数据库的预处理详解
- 08-03《阿常·MySQL 70讲》全套教学视频
- 08-03隐式等待、显示等待和强制等待
- 08-03零基础C#上位机框架项目实例(完结篇)
- 08-03一文搞懂构建Web内容的技术
- 08-03西门子WINCC中的VBScript(VBS)常用于自动化脚本开发
- 08-03力控和sql2000之间的数据转储
- 08-03组态王|通过日历控件选择时间段查询历史报警
- 1521℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 630℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 527℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 461℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 458℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- htmlbackground-image (68)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)