我喜欢的弹性布局
最近由于某些原因,导致我不得不把注意力从原来的JS转到CSS上,尽管我现在已经不太想搞CSS了,但现实就是这样不尽人意,没有办法。那今天我就说说我所喜欢的流体布局吧,看到网上很多关于两栏布局中要求一栏固定宽度,另一栏自适应,三栏布局,两侧固定宽度,中间栏自适应的做法都是用到一绝对定位,如:
1 2 3 4 5 | < div class="outer"> < div class="left">左侧</ div > < div class="main">中间自适应</ div > < div class="right">右侧</ div > </ div > |
CSS:
1 2 3 4 5 6 | .outer { margin : 100px auto ; position : relative ;} .outer div { height : 300px ;} . left ,. right { position : absolute ; top : 0 ;} . left { width : 100px ; left : 0 ; background : red ;} . right { width : 200px ; right : 0 ; background : green ;} .main { margin : 0 210px 0 110px ; background : blue ;} |
这样中间层就可以自适应宽度了,本身这样的布局并没有什么问题,但是总是感觉不够灵活,比如说将来想要修改两侧的宽度,或者说去掉一个或两个侧边栏,这个时候就不得不重新计算main的margin-left和margin-right了,有点麻烦,那有没有更加灵活的实现方法呢?嗯,还真的有:
HTML:
1 2 3 4 5 | < div class="outer"> < div class="left">左侧</ div > < div class="right">右侧</ div > < div class="main">中间自适应</ div > </ div > |
CSS:
1 2 3 4 5 | .outer { margin : 100px auto ;} .outer div { height : 300px ;} . left { float : left ; width : 100px ; margin-right : 10px ; _display : inline ; background : red ;} .main { display : table-cell ; width : 2000px ;* display : block ;* width : auto ; * overflow : hidden ;zoom: 1 ; background : blue ;} . right { float : right ; width : 100px ; margin-left : 10px ; _display : inline ; background : green ;} |
这样写,中间层与两侧基本上就没多大关系了,想要修改两侧的宽度,直接改它自己的宽度就可以了,想让三栏变两栏,直接去掉一栏就可以了,哪怕是想变成一样,两侧都去掉,也不用去修改样式,计算间距什么的,很方便,不是么。估计有个看到了那个overflow:hidden,担心如果里面的层需要显示到外面的时候被隐藏掉,就像做提示效果的时候,这个不用担心的,只要不给.main定位,它就不会隐藏里面的被定过位的层。不信你就试下吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?