Web前端入门第 34 问:CSS 常见布局
Web 网页中,所有元素都是盒模型构成的,一个大盒子套一个或者多个小盒子,再用更大的盒子把大盒子给圈起来,这就构成了基本的 HTML 结构,再利用 CSS 把盒子装修得好看一些,最后把它放在正确位置,就是我们所看到的网页。
布局的作用就是要把元素摆放在合适的位置,让网页看起来不显得空闹闹的,也不要显得拥挤。
要摆放元素到合适的位置不是设置某一个元素能达到效果的,而是经常需要父元素和子元素配合,才能达到目标。
元素堆叠
看这么一段的代码,没有任何控制布局情况下,元素会按照出现顺序进行堆叠显示
<div class="box">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
<style>
.box {
font-size: 20px;
margin: 20px;
width: 250px;
height: 180px;
border: 2px solid #ff4757;
}
.box .item {
border: 2px solid rgba(0,255,0,1);
width: 30px;
height: 30px;
}
</style>
效果:
需求一
现要求元素控制在一行显示。
flex 弹性盒子
给外层盒子添加 display: flex;
即可将元素改为弹性盒子。
.box {
display: flex;
}
效果:
grid 网格
让外层盒子变为网格,可让元素在一行中显示。
.box {
display: grid;
grid-template-columns: repeat(auto-fit, 30px);
}
效果:
inline-block 内联块
除了 flex
,还可以控制子元素显示为内联块 inline-block
,让元素在一行中显示。
.box .item {
display: inline-block;
}
效果:
注意:inline-block
让元素变为了内联块,会像文字、图片一样排版,所以元素之间会存在空隙,其空隙其实是元素之间的换行符造成的,可设置 font-size
为 0,让元素之间没有空隙。
float 元素浮动
还可以给元素添加浮动,让元素在一行中显示。
.box .item {
float: left;
}
效果:
需求二
现要求元素在盒子中居中显示。
flex 弹性盒子
.box {
display: flex;
justify-content: center;
}
grid 网格
.box {
display: grid;
grid-template-columns: repeat(auto-fit, 30px);
justify-content: center;
}
inline-block 内联块
.box {
text-align: center;
}
.box .item {
display: inline-block;
}
效果
为什么没有 float ?float 没办法做到元素居中显示,嗯...也不是做不到,只是需要通过计算获得元素 margin
或 padding
,用边距做出出居中效果。
需求三
元素两端对齐显示。
flex 弹性盒子
.box {
display: flex;
justify-content: space-between;
}
grid 网格
.box {
display: grid;
grid-template-columns: repeat(auto-fit, 30px);
justify-content: space-between;
}
效果
可以明显看到,随着需求越来越复杂,能用的方法就越少了。
其实 float
和 inline-block
也不是做不到这种效果,还是像上面说的一样,必须要通过计算获得边距,才能做出我们想要的样子。
需求四
元素等宽间距显示。
flex 弹性盒子
.box {
display: flex;
justify-content: space-around;
}
grid 网格
.box {
display: grid;
grid-template-columns: repeat(auto-fit, 30px);
justify-content: space-around;
}
效果
需求五
如果元素大小不统一,默认显示效果是这样:
怎么让元素垂直居中显示?
flex 弹性盒子
.box {
display: flex;
justify-content: space-around;
align-items: center;
}
grid 网格
.box {
display: grid;
grid-template-columns: repeat(auto-fit, 30px);
justify-content: space-around;
align-items: center;
}
效果
需求六
第二个元素定位在盒子右上角。
这时候 flex
、grid
都不能实现,只能通过 position
来实现了。
position 元素定位
position 属性对应的值有:
static
默认值,元素在正常文档流中显示。relative
相对定位,元素在正常文档流中显示,但可以通过top
、right
、bottom
、left
属性来定位。absolute
绝对定位,元素脱离正常文档流,且不再占用文档流空间,可以通过top
、right
、bottom
、left
属性来设置位置,其位置相对于最近的非static
祖先元素,如果找不到,则相对于浏览器窗口。sticky
粘性定位,如果元素正常显示,则跟static
一样,如果元素跑到视口之外,则跟absolute
一样,但其位置相对可滚动
的祖先元素。fixed
固定定位,元素脱离正常文档流,切不再占用文档流空间,可以通过top
、right
、bottom
、left
属性来设置位置,其位置相对于浏览器窗口。
实现需求:
.box {
position: relative;
}
.box .item:nth-child(2) {
position: absolute;
right: 0;
top: 0;
}
效果
总结
本文仅介绍了常见的布局场景,开发中的需求千奇百怪,本文介绍的方法可能无法满足需求,这时候就需要发挥想象,在这些基础的布局方法上进行组合了。
Web前端入门第 34 问:CSS 常见布局的更多相关文章
- web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史
秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...
- 好程序员web前端分享18个用CSS制作出来的东西
好程序员web前端分享18个用CSS制作出来的东西,与流行的看法相反,CSS不仅仅是用来提供一个WEB页面的基本风格,以使它看起来更有吸引力.还有很多其他的事情,CSS也可以做的很好.由于它创建动画和 ...
- 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM
好程序员web前端分享值得参考的css理论:OOCSS.SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCS ...
- 进击的Python【第十三章】:Web前端基础之HTML与CSS样式
进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客 ...
- Android零基础入门第34节:Android中基于监听的事件处理
原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...
- 前端进阶系列(二):css常见布局解决方案
水平居中布局 margin+定宽 <div class="parent"> <div class="child">Demo</di ...
- css CSS常见布局解决方案
CSS常见布局解决方案说起css布局,那么一定得聊聊盒模型,清除浮动,position,display什么的,但本篇本不是讲这些基础知识的,而是给出各种布局的解决方案.水平居中布局首先我们来看看水平居 ...
- css常见布局方式
CSS常见布局方式 以下总结一下CSS中常见的布局方式.本人才疏学浅,如有错误,请留言指出. 如需转载,请注明出处:CSS常见布局方式 目录: 使用BFC隐藏属性 float + margin abs ...
- CSS常见布局问题整理
实现div的水平居中和垂直居中 多元素水平居中 实现栅格化布局 1. 实现div的水平居中和垂直居中 实现效果: 这大概是最经典的一个题目了,所以放在第一个. 方法有好多, 一一列来 主要思路其实就是 ...
- web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】
http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...
随机推荐
- Educational Codeforces Round 173 (Rated for Div. 2)
题目链接:Dashboard - Educational Codeforces Round 173 (Rated for Div. 2) - Codeforces 总结:翻译插件用不了了,B题题意一直 ...
- DeepSeek部署本地知识库
技术背景 在前面的两篇文章中,分别介绍过Ubuntu上关于DeepSeek的部署以及Windows平台关于DeepSeek的部署.其中内容包含了Ollama的下载安装和基本使用.DeepSeek模型文 ...
- linux mint安装kafka,及flume与kafka整合
需要软件 jdk1.8(jdk-8u131-linux-x64.rpm) zookeeper (zookeeper-3.4.10.tar.gz) kafka 2.11-2.0.0 flume1.8.0 ...
- Doris插入数据底层存储测试
建表语句 CREATE TABLE IF NOT EXISTS base_site_test( site_id INT DEFAULT '10', city_code INT, user_name V ...
- C#/.NET/.NET Core技术前沿周刊 | 第 25 期(2025年2.1-2.9)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 函数static的作用
限制作用域和保持状态 函数static的作用主要体现在限制作用域和保持状态两个方面.1 限制作用域 静态全局变量:在全局变量前加上static关键字,该变量就被定义成为一个静态全局变量.这种 ...
- C++基础练习案例 - 模拟时钟系统 [DOS]
大学时期初学C++,做了些案例练习,想着整理一下,供自己和网友翻阅参考,谢谢支持!有个[模拟时钟系统]做的还可以. [PS]存在一些小问题,如编写习惯等,文末有简单小结,请自行辨析.算是提供不良模板, ...
- 基于正则化的图自编码器在推荐算法中的应用 Application of graph auto-encoders based on regularization in recommendation algorithms
引言 看过的每一篇文章,都是对自己的提高.不积跬步无以至千里,不积小流无以成江海,积少成多,做更好的自己. 本文基于2023年4月6日发表于SCIPEERJ COMPUTER SCIENCE(PEER ...
- 我的公众号接入了DeepSeek-R1模型,成为了一个会深度思考的强大.NET AI智能体!
前言 前不久腾讯元器宣布接入满血版 Deepseek R1 模型,模型免费使用且不限量,为智能体开发提供更多样化的模型选择,带来更丰富的智能体功能和玩法. 今天咱们一起来把我公众号的.NET AI智能 ...
- 【前端解决方案】已有本地项目如何建立github仓库
步骤 1:在本地初始化 Git(如果还没初始化) 如果你的本地项目还没有 Git 仓库,先进入你的项目目录,并初始化 Git: cd /你的本地项目路径 git init 这样会在你的项目中创建一 ...