您现在的位置是:网站首页> 编程资料编程资料
CSS两列布局实现方式总结一文汇总 CSS 两列布局和三列布局的具体使用CSS实现页面两列布局与三列布局的方法示例横向两列布局(左列固定,右列自适应)的4种CSS实现方式学习DIV+CSS网页布局之两列布局CSS三列布局两端固定宽度中间自适应CSS布局实例代码 两列布局实例CSS实现两列布局的N种方法
2021-09-05
748人已围观
简介 这篇文章主要介绍了CSS两列布局实现方式总结,讨论了包括absolute + margin和float + margin方式的一些实践和问题,需要的朋友可以参考下
两列布局大概是最经典的一种网页布局方式了,本博客就是采用的这种布局。两列布局中,以主列(main)是自适应宽度,子列(sidebar)是固定宽度的情形最为常见。
今天就来好好探讨一下如何实现这种定宽+自适应的两列布局。
1. absolute + margin 方式
首先想到的是利用 absolute + margin 的方式实现。先看看代码:
- <div class="container">
- <div class="sidebar">子列div>
- <div class="main">主列div>
- div>
- .container {
- position: relative;
- }
- .sidebar {
- position: absolute;
- top: 0;
- left: 0;
- width: 200px;
- height: 300px;
- background-color: rgba(255, 0, 0, .5);
- }
- .main {
- height: 300px;
- margin-left: 210px;
- background-color: rgba(0, 255, 0, .5);
- }
该方式利用 position 让 sidebar 列脱离文档流,然后通过 main 列的 margin-left 移除被 sidebar 列覆盖的部分。如此,我们就实现了定宽 + 自适应的两列布局。
(1)列顺序调整
在不修改 HTML 的情况下,只需简单修改 CSS,我们可以让左右两列顺序互换,来看代码:
- .sidebar {
- position: absolute;
- top: 0;
- rightright: 0;
- }
- .main {
- margin-right: 210px;
- }
(2)主内容列优先显示
让我们考虑的更完美一点,可不可以把 main 列放 sidebar 列 的前面,使主要内容优先加载渲染? Let us try!
- <div class="container">
- <div class="main">主列div>
- <div class="sidebar">子列div>
- div>
做上面的简单调整即可,CSS不需要任何修改!
(3)问题所在
虽然这种方式的优点很多,但是却存在一个致命缺点。因为 sidebar 列脱离了文档流,当 sidebar 列比 main 列高时会覆盖后面的布局:问题demo。
如果在 container 容器上 添加 overflow:hidden 就会使 sidebar 溢出部分被裁减。在这种布局方式下,这个问题确实没有有效的解决办法。
2. float + margin 方式
然后想到的就是 float + margin 来实现两列布局,首先实现左栏定宽,主内容自适应的两栏布局。代码如下:
- <div class="sidebar">子列div>
- <div class="main">主列div>
- .sidebar {
- float: left;
- width: 200px;
- height: 300px;
- background-color: rgba(255, 0, 0, .5);
- }
- .main {
- height: 300px;
- margin-left: 210px;
- background-color: rgba(0, 255, 0, .5);
- }
这种实现方式比较简单,首先把子列浮动到左边,然后在主列上设置 margin-left 为子列留出显示空间即可。
那么,这种方式支不支持调换列的位置呢?当然可以。CSS代码如下:
- .sidebar {
- float: rightright;
- width: 200px;
- height: 300px;
- background-color: rgba(255, 0, 0, .5);
- }
- .main {
- height: 300px;
- margin-right: 210px;
- background-color: rgba(0, 255, 0, .5);
- }
问题所在:
看起来 float + margin 方式是个好办法,然而我们前面提到过的主列在前优先显示的优化却不能实现。
3. float + 负margin 方式
废话不多说,直接上代码:
- <div class="main-wrapper">
- <div class="main">主列div>
- div>
- <div class="sidebar">子列div>
- .main-wrapper {
- float: left;
- width: 100%;
- }
- .main {
- height: 100px;
- margin-left: 210px;
- background-color: rgba(255, 0, 0, .5);
- }
- .sidebar {
- float: left;
- width: 200px;
- height: 100px;
- margin-left: -100%;
- background-color: rgba(0, 255, 0, .5);
- }
大家应该都看出来了,这就是双飞翼布局,主列优先显示。实现的过程如下:
首先浮动 main 列和 sidebar 列,然后通过 负margin 正确定位 sidebar 列。
把 main 列嵌套在一个 div 里,该 div 的宽度值设为100%。
最后通过设置 main 列的 margin-left 消除被 sidebar 覆盖的部分即可。
相关内容
- css全屏背景图片设置,django加载图片路径详解css里面图片路径问题(同包/不同包)探讨完美解决webpack打包css背景图片路径问题
- 深入理解DIV和SPAN的区别关于div中img,span垂直居中的问题浅谈Span和Div的区别div与span的区别和使用示例DIV和SPAN垂直居中对齐的实现方法div与span之间有什么区别HTML中div与span的区别(共同点与不同点)html的基本使用包括链接、样式表、span和div等等区别div和span、relative和absolute、display和visibilityHTML中div和span比较_动力节点Java学院整理
- 设置层的漂移的简单实现方法CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 浅谈CSS块级元素与行内元素(内联元素)的区别和联系 CSS块级元素与行级元素详解 如何理解 CSS 布局和块级格式上下文
- CSS 实现垂直居中的几种方法(必看)CSS水平垂直居中的几种方法总结css让容器水平垂直居中的7种方式利用CSS3的flexbox实现水平垂直居中与三列等高布局CSS设置文字图片垂直居中的方法总结深入理解CSS行高line-height与文本垂直居中的原理Flexbox制作CSS布局实现水平垂直居中的简单实例CSS设置DIV垂直居中的N种方法 兼容IE浏览器 CSS文本和div垂直居中方法总结 CSS在固定宽高的div内实现垂直居中的实例详解CSS实现垂直居中的几种方法小结
- CSS3实现翘边的阴影效果的代码示例css3实现渐变、阴影、超出指定文本省略号显示等一些效果实例CSS3文本阴影text-shadow属性详解CSS3圆角边框和边界图片效果实例 详解CSS3的图层阴影和文字阴影效果使用详解CSS3的box-shadow属性制作边框阴影效果的方法CSS3实现曲线阴影和翘边阴影CSS3实现千变万化的文字阴影text-shadow效果设计CSS3中文字镂空、透明值、阴影效果设置示例小结5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
- CSS的background属性及CSS3的背景图片设置总结CSS3 background-image颜色渐变的实现代码CSS3混合模式mix-blend-mode/background-blend-mode简介css3实现一个div设置多张背景图片及background-image属性实例演示使用CSS3来实现滚动视差效果的教程CSS3属性background-size使用指南css3中背景尺寸background-size详解详解background属性的8个属性值(面试题)
- CSS3中的常用选择器使用示例整理css3之UI元素状态伪类选择器实例演示总结30个CSS3选择器 css3类选择器之结合元素选择器和多类选择器用法IE8下CSS3选择器nth-child() 不兼容问题的解决方法对CSS3选择器的研究(详解)详解CSS3中属性选择器新增加的特性CSS3 新增选择器的实例
- CSS3中的@keyframes关键帧动画的选择器绑定详解CSS动画属性关键帧keyframes全解析CSS3 @keyframes简单动画实现 @keyframes规则实现多重背景的CSS动画CSS3 中的@keyframes介绍快速解决css使用@keyframes加载图片首次循环时出现白色间隙问题(闪屏)
- CSS属性text-overflow的使用问题css 设置overflow:scroll 滚动条的样式 CSS中overflow-y: visible;不起作用的原因分析及解决方法深入理解CSS overflow:hidden——溢出,坍塌,清除浮动css中text-overflow属性与文本截断详解详解CSS中zoom属性或overflow:auto属性清除浮动的作用使用CSS的overflow属性防止float撑开div的方法使用CSS隐藏元素滚动条的示例代码css 给div添加滚动并隐藏滚动条