css 布局的几种方式

本文介绍了CSS中的浮动布局、Flex布局的原理和应用,以及如何处理高度塌陷问题。还探讨了响应式布局的方法,如使用meta标签、rem单位和媒体查询。作者分享了一份详细的前端学习资源,旨在帮助开发者系统学习和提升技能。
摘要由CSDN通过智能技术生成

效果如下

这里写图片描述

有时我们可能需要两边定宽,中间自适应,那么可以这样写

.left{

background-color: red;

width: 20px;

}

.middle{

background-color: yellow;

flex: 1;

}

.right{

background-color: green;

width: 20px;

}

效果如下

这里写图片描述

如果想深入了解可以看阮一峰老师的文章

Flex 布局教程:语法篇

flex布局案例

但是 flexbox 布局方式浏览器的支持不是太好,有一些兼容性的问题,但是是未来布局的趋势。

3 float 布局


float 布局应该是目前各大网站用的最多的一种布局方式了,但是也特别复杂,这里详细讲一下

首先,什么是浮动?

浮动元素是脱离文档流的,但不脱离文本流,这是什么意思呢,用过 word 的应该知道有一种图片环绕的方式是文字环绕吧,就是这种效果。

那么它有什么特点呢

  • 对自身的影响

  • float 元素可以形成块,如 span 元素。可以让行内元素也拥有宽和高,因为块级元素具有宽高

  • 浮动元素的位置尽量靠上

  • 尽量靠左(float:left)或右(float:right),如果那一行满足不了浮动元素的宽度要求,则元素会往下掉

  • 对兄弟元素的影响

  • 不影响其他块级元素的位置

  • 影响其他块级元素的文本

  • 上面贴非 float 元素

  • 旁边贴 float 元素或者边框

  • 对父级元素的影响

  • 从布局上 “消失”

  • 高度塌陷

3.1 高度塌陷

什么是高度塌陷,举个例子吧

CSS 布局

float

我是字

float

效果如下

高度塌陷

从图中可以看出,两个 float 元素虽然包含在第一个 container 中,但是却超出了第一个 container 的范围,在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。

但是当为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。

解决办法有下面几种

  • 父元素设置 overflow: auto 或者 overflow: hidden

效果如下

这里写图片描述

  • 给父元素加一个 after 伪类

.container::after{

content:‘’;

clear:both;

display:block;

visibility:hidden;

height:0;

}

效果如下

这里写图片描述

这也是目前各大网站比较主流的清除浮动的方式,还有一些其他方式这里就不详细讲了,毕竟这是一篇讲布局的文章。

3.2 两栏布局

首先我们要明白为什么可以用 float 实现布局。其实上面的例子我们大概就可以看出来了,黄红黄这不就是一个标准的三栏布局吗。其实并没有,我们看看下面的例子

CSS 布局

效果如下

这里写图片描述

上面代码中最重要的是 margin-left: 100px;,这一句将浮动元素的位置空了出来,所以右边栏里面的元素不会影响到浮动的 div。

这就是浮动布局的基本思想。

3.3 三栏布局

讲完两栏布局再讲一下三栏布局,思路主要是左边一个浮动元素,右边一个浮动元素。这里有个小问题,中间的元素要写在最后,因为中间元素假设有块级元素的话,会影响右边浮动元素的定位,这里演示一下

CSS 布局

这里写图片描述

因为浮动元素会把块级元素的位置空出来,所以这里右边的浮动元素把上面的位置空了下来,所以正确的写法应该是

效果如下

这里写图片描述

这样我们就实现了最基本的三栏布局

4 响应式布局


4.1 meta 标签

最简单的处理方式是加上一个 meta 标签

其中,width = device-width 这一句的意思是让页面的宽度等于屏幕的宽度。

4.2 使用 rem

rem 指的是 html 元素的 font-size,html 元素的 font-size 默认是 16px,所以 1 rem = 16px;然后根据 rem 来计算各个元素的宽高,然后配合 media query 就可以实现自适应。

4.3 media query

css2 允许用户根据特定的 media 类型定制样式,基本语法如下

@media screen and (max-width: 360px) {

html { font-size: 12px; }

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可免费领取!

img-hN2MjeLt-1713474322280)]

[外链图片转存中…(img-mLDb5rdW-1713474322280)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-es4rmpAV-1713474322280)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

[外链图片转存中…(img-0w24x6Rl-1713474322281)]

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可免费领取!

[外链图片转存中…(img-bcBtM0Uq-1713474322281)]

[外链图片转存中…(img-t5LM8t5J-1713474322281)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值