css布局方法的总结

常见的CSS布局方法 阅读详情

双inline-block方案
方法是通过calc(100% - 140px)动态计算右侧盒子的宽度
缺点:
需要知道左侧盒子的宽度,两个盒子的距离,还要设置各个元素的box-sizing
需要消除空格字符的影响
需要设置vertical-align: top满足顶端对齐。

.warpper-inline-block{
   box-sizing: border-box;
   font-size: 0;
}
.warpper-inline-block .left,
.warpper-inline-block .right{
   display: inline-block;
   vertical-align: top;
   font-size: 14px;
   box-sizing: border-box;
}

.warpper-inline-block .right{
   width: calc(100% - 140px);
}

双float方案
和双inline-block一样,通过calc函数计算宽度
缺点:
需要知道左侧盒子的宽度,两个盒子的距离,还要设置各个元素的box-sizing。
父元素需要清除浮动。

.wapper-double-float{
   overflow: hidden;   创建bfc,清除浮动
   box-sizing: border-box;
}
.wapper-double-float .left,
.wapper-double-float .right{
   float: left;
   box-sizing: border-box;
}
.wapper-double-float{
   width: calc(100% - 140px);
}

float + margin-left方案
运用了浮动覆盖块级元素,盒模型宽度自适应性
为了让右侧盒子和左侧盒子保持距离,需要为左侧盒子留出足够的距离。
这个距离的大小为左侧盒子的宽度以及两个盒子之间的距离之和。然后将该值设置为右侧盒子的margin-left。
缺点:
需要清除浮动
需要计算右侧盒子的margin-left

.wapper-float{
   overflow: hidden;
}
.wapper-float .left{
   float: left;
}
.wapper-float .right{
   margin-left: 150px;
}

使用absolute+margin-left方法
左侧盒子使用position:absolute,这样右侧盒子会无视绝对定位元素盒子
又因为left和top默认值为auto会计算静态位置,所以可以通过margin-left算出右侧的空间
缺点:
使用了绝对定位,若是用在某个div中,需要更改父容器的position,因为绝对定位元相对最近定位的祖先元素为包含块。
没有清除浮动的方法,若左侧盒子高于右侧盒子,就会超出父容器的高度。因此只能通过设置父容器的min-height来放置这种情况。

.wapper-absolute .left{
   position: absolute;
}
.wapper-absolute .right{
   margin-left:150px;
   min-height: 200px;
}

使用float+bfc方法
右侧盒子创建bfc,创建bfc的常规流盒子会避开浮动盒子
这种情况下,只需要为左侧的浮动盒子设置margin-right,
就可以实现两个盒子的距离了。而右侧盒子是block级别的,
所以宽度能实现自适应。
缺点:
父元素需要清除浮动

.wapper-float-bfc{
   overflow: hidden;
}
.wapper-float-bfc .left{
   float: left;
   margin-right: 20px;
}
.wapper-float-bfc .right{
   margin-left: 0;
   overflow: hidden;
}

flex方案
flex: 0 0 auto,让伸展值或收缩值为0,auto使用基础值,表示盒子不伸展不收缩保持原宽度
flex: 1 1 auto,让伸展值或收缩值为1,auto使用基础值,伸展值为1表示盒子的width加上伸展值(伸展值计算弹性容器剩余空间)
收缩值为1,表示盒子比例收缩
flex容器的一个默认属性值:align-items: stretch;。这个属性导致了列等高的效果。
为了让两个盒子高度自动,需要设置: align-items: flex-start;
无缺点

.wapper-flex{
   display: flex;
   align-items: flex-start;
}
.wapper-flex .left{
   flex: 0 0 auto;
}
.wapper-flex .right{
   flex: 1 1 auto;
}

grid方案
又一个新型的布局方式。可以满足需求,但这并不是它发挥用处的真正地方。

.wrapper-grid {
   display: grid;
   grid-template-columns: 120px 1fr;
   align-items: start;
}

.wrapper-grid .left,
.wrapper-grid .right {
   box-sizing: border-box;
}

.wrapper-grid .left {
   grid-column: 1;
}

.wrapper-grid .right {
   grid-column: 2;
}

注意:
grid布局也有列等高的默认效果。需要设置: align-items: start;。
grid布局还有一个值得注意的小地方和flex不同:在使用margin-left的时候,grid布局默认是box-sizing设置的盒宽度之间的位置。而flex则是使用两个div的border或者padding外侧之间的距离。

极限情况:

动态计算宽度的情况

两种方案: 双inline-block方案和双float方案。宽度极限小时,右侧的div宽度会非常小,由于遵循流动布局,所以右侧div会移动到下一行。

动态计算右侧margin-left的情况

两种方案: float+margin-left方案和absolute+margin-left方案。宽度极限小时,由于右侧的div忽略了文档流中左侧div的存在,所以其依旧会存在于这一行,并被隐藏。

float+BFC方案的情况

这种情况下,由于BFC与float的特殊关系,右侧div在宽度减小到最小后,也会掉落到下一行。

flex和grid的情况

这种情况下,默认两种布局方式都不会放不下的div移动到下一行。不过 flex布局可以通过 flex-flow: wrap;来设置多余的div移动到下一行。 grid布局暂不支持。

CSS Grid布局中固定位置元素的处理方法 处理 Grid 布局中的固定位置元素,就像驯服一群调皮的小动物。你需要了解它们的习性,并选择最适合你的“驯服”方法。 阅读详情

相关推荐

机械臂控制的基础知识

在现代工业中,机械臂的自动化控制已经成为智能制造的重要一环。控制机械臂涉及多个学科,包括机械设计、运动学、控制理论和编程等。本文将从以下几个方面介绍机械臂控制的核心知识点:机械臂的构成、运动学分析、动力学建模、控制方法及编程实现。

qq_45728381的博客 5470

CSS边框及常用样式

一、CSS设置样式   1.1 边框border   作用:设置标签周围的边框,方法 board:宽度 样式 颜色,一般情况下样式使用 solid实体的,和dotted虚线的 <head> <meta charset="UTF-8"> <title>css边框</title> <style> ...

weixin_30519071的博客 344

【数学基础】基于欧拉角表达的旋转顺序

欧拉角旋转顺序

FalschxMico 1385

web学习---CSS学习---笔记(二)

1. CSS的三大特性 层叠性、继承性、优先级 1.1 层叠性 如果设置相同的样式,则有一个样式会层叠另外一个样式 样式冲突原则:就近原则(覆盖),哪个样式离结构近,就执行哪个样式 1.2 继承性 子标签会继承父标签的某些样式(不是全部样式) 某些样式包括: text-、font-、line-开头的元素 <head> <meta charset="utf-8"> <title></title> <style> div{

IOSSHAN的博客 633

l0phtcrack 7(爆破管理员密码)使用教程

l0phtcrack7简称lc7,是爆破计算机管理员密码的软件,早期是网络安全管理员用来检测系统用户是否使用了不安全的密码,后被黑客用于用户口令破解 功能:该工具支持远程破解,理论上能破解所有密码,但对复杂度比较高的密码,破解时间很长 使用前提:1.登录了需要破解的计算机 2.知道需要破解的计算机的一个管理员的账户,密码 ** 也许你会疑惑,我都知道了一个管理员账户密码了,还要另外的管理员密码...

Xiongcanne的博客 2万+

半导体硅制造工艺

抛光液和硅片的反应速度很快,只要稍一停留,立刻便会腐蚀,因此取片时,不能在表面上留下抛光液,必须紧接着水抛,直至抛光液被全部冲去,再将片子取下。由于晶圆制造过程有各种各样的晶圆固定器和自动设备,需要严格的直径控制以减少晶圆翘曲和破碎,而单晶硅棒的外径表面并不平整且直径也比最终抛光晶片所规定的直径规格大,因此需要通过外径滚磨获得较为精确的直径。胶体的颗粒直径比磨料的颗粒直径小一个数量级,且硬度与硅相当,因此它比用磨料的机械抛光表面损伤更小,抛光出的硅片表面具有高度的镜面光洁。不受材料导电类型和电阻率的影响。

pgpaojiao的博客 2240

css 手写 border样式

项目要求: 模块的border 是虚线显示,且虚线长度可以控制,所以使用dotted,dashed是不能很好的实现的。 解决方法: 使用background的linear-gradient来实现线性渐变的。 html结构 <div class="topBg"> <div class="top"> <div @click="navto" style="cursor: pointer"> <i class="el-icon-plus avatar-upload

sani_x的博客 460

树莓派5安装ROS1避坑指南:从系统配置到cmake报错全解决

本文详细介绍了在树莓派5上安装ROS1的完整流程,包括系统配置、环境变量设置、cmake报错解决等关键步骤。针对树莓派5的ARM架构特性,提供了从基础安装到高级调试的系统级解决方案,帮助开发者高效部署ROS1并避免常见编译陷阱。特别针对cmake报错问题,给出了深度解析和实用修复方法。

spark7igniter的博客 235

css自定义弹出框(不使用任何框架样式)

1.效果图如下:该效果完全手写css,不引用外部框架css 2.html代码: <!-- 底部透明灰色层 --> <div class='mask' style="position:fixed;top:0;left:0;z-index:998;width:100%;height:100%;display:none;background-color:#000;opacit...

royal1235的博客 2829

基于Spring Boot + Vue 3构建高并发华为数码商城交易平台:全栈架构设计与实现

内容将涵盖系统架构、数据库设计、核心模块开发(用户、商品、订单、购物车)、安全认证、性能优化以及前后端分离部署等关键环节,并提供详尽的代码示例,旨在为开发者提供一个可落地的企业级项目实战指南。<el-button text class="button" @click.stop="addToCart(product)">加入购物车</el-button>.antMatchers("/api/user/login", "/api/user/register").permitAll() // 公开接口。

2201_76125393的博客 306

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法。

kevin1499的博客 1617

css设置带boarder的百分比布局

设置CSS的box-sizing属性值为“border-box”,这样就会把borders和padding全都包含在定义的宽高里面。这就意味着一个带有2px边框的200px的div仍然宽度是200px!!div{     width: 16%;     margin: 2% 2%;     float: left;     background:#03a8d2;     border: 2px s...

pow8368684的专栏 426

树莓派 RP2350B 开发环境搭建

本文介绍了树莓派RP2350B开发环境的搭建过程。

张一西的博客 287

CSS布局的主要方法有哪些?

在现代前端开发中,CSS布局方法各有特点,适合不同场景和需求。传统布局适合简单场景,而Float布局虽然灵活,但管理起来略显复杂。定位布局则在控制位置上表现优异,但有时候会导致重叠。Flexbox和Grid是针对现代网页设计提供的灵活且强大的布局工具,非常适合响应式和复杂布局的开发。通过上述示例代码的练习,你可以更深入地了解这些布局方法的实际应用,选用合适的布局方法能显著提升你的网页设计能力。希望本文能帮助你更好地理解CSS布局的主要方法,也期待你在实际项目中应用这些技术,创造出更加美观的网页!

WXLink的博客 747

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CSS | CSS实现两栏布局和三栏布局方法详解

CSS实现两栏布局和三栏布局方法详解

青春木鱼的博客 2069

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

css三栏布局技巧,六种css三栏布局方法示例

本文我们主要和大家分享六种css三栏布局方法示例, 谈到布局,首先就要想到定位,当别人问我,css的position定位有哪些取值,分别表示什么意思?呃.....抓头.gif,是时候回归本质,看定义了。定位position有六个属性值:static、relative、absolute、fixed、sticky和inherit。static(默认):元素框正常生成。块级元素生成一个矩形框,作为文档流...

weixin_36174245的博客 321

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

盘点css中的布局方法及注意事项

标准流是默认的布局方式。元素会自上而下,自左而右排列,行内元素在一行显示,碰到父级元素的边框换行。

TangCoffee_的博客 3695

CSS实现三列布局的3种方法及解析

CSS浮动 第一个float:left,第二个float:right,第三个设置margin-left和margin-right 绝对定位法 第一个定位到left,第二个定位到right,第三个设置margin-left和margin-right flex布局 .left{ width:200px; 或者 flex:0 0 200px; } .right{...

SpringRolls的博客 4620

CSS三栏布局的四种方法

前言 总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具体的介绍了三栏布局的四种方法,并介绍了它的使用场景。 原文地址:CSS三栏布局的四种方法 知乎专栏&amp;&amp;简书专题:前端进击者(知乎)&amp;&amp;前端进击者...

gabby____的博客 221

CSS 实现 两栏布局、三栏布局,以及常见的水平居中的方法

前端开发中使用 CSS 完成常见的页面布局,两栏布局、三栏布局,常见的水平居中的方法

Eliaukoyx 1735

纯 CSS 实现瀑布流布局的方法

这种方式兼容性不是很好,全部支持需要些时间,但是目前是可以使用 css 写出来的。

Bunny的博客 1158

CSS常用的布局方法

table表格布局 float浮动+margin inline-block布局 flexbox布局 一. table表格布局 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=...

EmotionComputer 260

div+css布局漫谈 之 CSS布局常用的方法

1.CSS布局常用的方法:float : none | left | right 取值:none :  默认值。对象不飘浮 left :  文本流向对象的右边 right :  文本流向对象的左边它是怎样工作的,看个一行两列的例子xhtml:CSS:div id="warp">   div id="column1">这里是第一列div>   div id="column2">这

Sonic 的技术博客 1229

css布局的五种方法

css布局的五种方法 1.float布局 <section class="float"> //页面样式 <style> .left-right-center > div{ height: 100px; } .left{ ...

qq_43204698的博客 510

CSS实现三栏布局的几种方法

CSS实现三栏布局的几种方法 三栏布局,顾名思义就是两边固定,中间自适应。 三栏布局在实际的开发十分常见,比如淘宝网的首页,就是个典型的三栏布局:即左边商品导航和右边导航固定宽度,中间的主要内容随浏览器宽度自适应。 我们不妨假定这样一个布局:高度已知,其中左栏、右栏宽度各为300px,中间自适应,可以通过几种方法来实现?以及各自的优缺点是什么? 一、浮动布局 <!DOCTYPE h...

Aenm的博客 399
上一篇: 移动端布局(二)关于视口
下一篇: A 文档流布局以及margin:auto的原理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值