CSS:两列布局

两列布局是指一列宽度固定,另一列自适应。效果如下:
在这里插入图片描述
HTML:

<div class="container clearfix"><div class="left"></div><div class="right"></div>
</div>

公共 CSS:

.container {width: 400px;height: 200px;
}.left {width: 100px;height: 200px;background-color: orange;
}.right {height: 200px;background-color: #d0e4fe;
}

一. float 浮动

方法一:float + calc()

.left {float: left;
}.right {float: left;width: calc(100% - 100px);
}/* 清除浮动 */
.clearfix::after {content: '';display: block;height: 0;clear: both;visibility: hidden;
}

注意事项:

如果父元素的高度没有设置,默认情况下,父元素的高度会被子元素撑高。如果子元素设置浮动,脱离文档流,就无法撑开父元素的高度,导致父元素高度塌陷,即父元素的高度变为 0,导致页面布局混乱。

示例如下:

<style>.container {width: 300px;border: 1px red solid;}.box1 {width: 100px;height: 100px;background-color: orange;}.box2 {width: 100px;height: 150px;background-color: #d0e4fe;}
</style><div class="container"><div class="box1"></div>
</div><div class="box2"></div>

在这里插入图片描述

此时,父元素 container 的高度被子元素 box1 的高度撑开。

box1 开启浮动后,效果如下:

.box1 {float: left;
}

在这里插入图片描述

此时 box1 脱离文档流,父元素的高度塌陷为 0,导致标准流中的 box2 位置上移,与 box1 重叠。因此,开启浮动造成的父元素高度塌陷会影响浮动元素之后元素的布局。

解决方案:

  1. 给父元素设置高度,可以避免高度塌陷,但也无法自适应子元素的高度。

  2. 将父元素的 overflow 属性设置为非 visible 的值,如 hidden 来开启 BFC。

    BFC(Block Formatting Context) 是一个 CSS 概念。BFC 是指浏览器中创建的一个独立的渲染区域,这个区域拥有自己的渲染规则,它决定了其子元素如何定位,以及与其他元素的相互关系和作用。简单来说,BFC 就是一个完全独立的空间(布局环境),让空间里的子元素不会影响到外面的布局

  3. 在高度塌陷的父元素最后增加一个空的 div,给其设置 clear: both; 清除浮动。

<div class="container"><div class="box1"></div><div style="clear: both;"></div>
</div>
  1. 给父元素添加 ::after 伪元素,再向元素添加一个空白的块元素,然后对其清除浮动,这样做和添加一个空的 div 的原理一样,可以达到相同的效果,而且不会在页面中添加多余的 div。
.clearfix {content: "";display: block;clear: both;
}

方法二: float + margin-left

.left {float: left;
}.right {margin-left: 100px;
}

二. position 定位

方法三: absolute + margin-left

.left {position: absolute;	/*开启定位脱离文档流*/
}.right {margin-left: 100px;
}

三. flex 布局

方法四:flex

.container {display: flex;
}.right {flex: 1;	/* flex-grow: 1; */
}

flex 是 flex-grow,flex-shrink,flex-basis 三个属性的简写形式。flex: 1 表示将三个属性值设置为 1 1 auto。

  • flex-grow:定义了 flex 子项如何分配多余的空间。默认值为0。值为 1 意味着该子项会等分多余的空间。
  • flex-shrink:定义了当空间不足时,flex 子项如何缩小。默认值为 1 ,意味着该子项会等比例缩小。
  • flex-basis:定义了 flex 子项的默认大小。默认值为 auto,意味着默认大小为内容大小。

.container {display: flex;
}
.left {flex: 1;
}
.right {flex: 4;
}

这种用法表示左列占容器宽度的 1/5,右列占 4/5,适用于左列不需要固定宽度值的情况。

四. grid 布局

方法五:grid

.container {dispaly: grid;grid-template-columns: 100px 1fr;
}

grid-template-columns: 100px 1fr; 表示左列宽度 100px,右列占据剩余空间。如果想要左列宽度根据内容大小自动调节,可设置为 grid-template-columns: auto 1fr;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/456825.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构体的深入了解(下)

1.修改默认对齐数 在之前我们了解到在vs中的默认对齐数为8&#xff0c;在gcc下没有默认对齐数的&#xff0c;那我们能否在vs上进行修改呢&#xff1f;我们来试一下&#xff1a;&#xff08;#pragma 这个预处理指令&#xff0c;可以改变编译器的默认对齐数&#xff09; #includ…

信号系统之滤波详解

1 过滤的基础 通常希望使用信号的幅度&#xff0c;而不是它的功率。例如&#xff0c;假设一个增益为20dB的放大器。根据定义&#xff0c;这意味着信号中的功率增加了 100 倍。由于幅度与功率的平方根成正比&#xff0c;因此输出幅度是输入幅度的 10 倍。虽然 20dB 意味着功率的…

基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的实习管理系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

基于A-Star搜索算法的迷宫小游戏的设计

这篇文章是作者人工智能导论课的大作业&#xff0c;发出来供大家学习参考&#xff08;有完整代码&#xff09;。想要论文WORD文件的可以在本文资源处下载&#xff08;可能还在审核&#xff09;。 摘要&#xff1a; 本文章聚焦于基于A-Star搜索算法的迷宫小游戏设计&#xff0c;…

时序数据库Influxdb查询多个字段_field同一时间的值,组成一条数据

Influxdb将表格数据多个字段_field从垂直列布局聚合成水平布局行字段。 问题 1、Influxdb 是一种时间序列数据库&#xff0c;在我的项目中主要用来存储换热站的测点数据的。换热站有非常多的测点&#xff0c;我们用Flux 语法去查询测点数据&#xff0c;返回的数据结构是每个测…

[C++] 如何使用Visual Studio 2022 + QT6创建桌面应用

安装Visual Studio 2022和C环境 [Visual Studio] 基础教程 - Window10下如何安装VS 2022社区版_visual studio 2022 社区版-CSDN博客 安装QT6开源版 下载开源版本QT Try Qt | 开发应用程序和嵌入式系统 | Qt Open Source Development | Open Source License | Qt 下载完成&…

Linux 分析指定JAVA服务进程所占内存CPU详情

1、获取服务进程PID [rootVM-32-26-centos ~]# service be3Service status Application is running as root (UID 0). This is considered insecure. Running [25383]2、获取进程占用详情 [rootVM-32-26-centos ~]# cat /proc/25383/status Name: java Umask: 0022 State: S…

企业邮箱是什么?企业邮箱百科

本文将为大家讲解&#xff1a;1、企业邮箱的定义&#xff1b;2、企业邮箱的主要功能特点&#xff1b;3、企业邮箱如何选择和部署&#xff1b;4、企业邮箱的运营与维护&#xff1b;5、企业邮箱在实际工作中的应用与挑战&#xff1b;6、2024年最新五大企业邮箱盘点   下面提到的…

《计算机网络简易速速上手小册》第5章:无线网络和移动通信(2024 最新版)

5.1 WLAN的工作原理 - 揭秘无线局域网络的魔法 5.1.1 基础知识 无线局域网络&#xff08;WLAN&#xff09;允许设备通过无线方式连接到一个局部区域网络&#xff0c;主要基于IEEE 802.11标准&#xff0c;俗称Wi-Fi。WLAN的核心是无线路由器&#xff0c;它不仅充当着网络中各设…

记录一次centos 使用selenium运行环境

这里写自定义目录标题 宝塔面板 安装 selenium安装google-chrome 宝塔面板 安装 selenium 安装google-chrome yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 查看chrome版本 google-chrome --version 下载对应chrome版本的chro…

宠物空气净化器哪个品牌质量好?实惠的猫用猫用净化器牌子测评

作为宠物主人&#xff0c;我们深知养宠物的乐趣和责任&#xff0c;但同时也面临着一些挑战&#xff0c;比如宠物脱毛、气味和室内空气质量等问题。正因如此&#xff0c;越来越多的家庭选择宠物空气净化器&#xff0c;为我们营造一个清新、健康的居住环境。 无论我们多么喜欢我…

C语言基础语法..

1.函数的基本语法 函数的格式为&#xff1a; 返回值类型 函数名(参数列表){ 函数体(包括返回值语句) } 利用上述的格式 我们可以自己整一个实现加法功能的函数 int add(int a, int b){return a b; } int main(){int c add(10, 20);printf("%d", c);// 30return …