Web 前端:布局

Web 前端:布局

学习了一些基础的 HTML 以及 CSS 的概念后就可以制作一个简单的网页了。

除了页面的结构与表现,另一个让页面变得美观的因素就是布局,此处仅做导航使用。

常用的布局

CSS 中的布局有很多,这里只列举一下我接触过的几种:

  1. 盒模型布局
  2. Position 定位(绝对定位与相对定位)
  3. 浮动布局
  4. Flex 布局
  5. Grid 布局

除此之外,HTML 中的结构,也影响布局的效果,所以想要实现目标效果,我们需要:

  1. 合理的使用 HTML 描述网页的结构;
  2. 使用 CSS 进一步的细化布局。
<div>
    <div class="first">
        I'm first.
    </div>
    <div class="second">
        I'm second.
    </div>
</div>

<div>
    <div class="first">
        I'm first.
        <div class="second">
            I'm second.
        </div>
    </div>
</div>

<style>
    .first {
        color: red;
        margin: 10px;
    }

    .second {
        color: green;
        margin: 10px;
    }
</style>

html-structure

HTML 像是在宏观上进行布局的控制,例如哪几个元素是挨着的、这个元素应该在哪个元素里面、元素之间的顺序是什么等等。
CSS 则是在更加细节的方面进行控制,例如元素的大小、元素的颜色、元素是纵向排列还是横向排列等等。

因为浮动布局本人使用较少,在此就不再提及了。

传统布局

盒模型布局

该布局主要是利用盒模型的 maring、padding 等属性进行位置的控制,使元素达到预期的显示效果。
该种布局通常会和其他布局结合使用。

在开发者工具中我们可以看到浏览器渲染的盒模型:
f12-box-model

更具体的内容不再赘述,可以查看菜鸟教程中关于和模型的介绍:
菜鸟教程 – 盒子模型

Position 定位

起初学习了 flex 布局后感觉绝对定位与相对定位就没有了太大的用处,但是随着之后的学习,发现有些功能使用绝对定位与相对定位会更加的方便。

关于如何使用 Position 定位的,可以参阅菜鸟教程:
菜鸟教程 – Position 定位

也可参阅本篇博客:
CSS的定位-子绝父相

注意,在此处需要了解文档流的概念。开启了绝对定位的元素会脱离文档流,我们也可以通过设置 z-index 来设置层级关系来产生遮盖的效果。

这里列举几个之前遇到的使用 Position 定位完成布局的例子:

  1. 网站导航栏始终位于页面上方
    • 不随着滚动条滚动而改变位置
  2. 自定义的栏目小图标
    • 一行文字+两个装饰,直接使用图片分辨率太低
  3. 使用 HTML + CSS 实现弹幕效果
    • 弹幕移动的初始位置和结束位置使用绝对定位解决

flex 布局

flex 布局又称弹性布局。这个布局可能是我用的最多的布局了,特别是青春在线转向小程序以后,对布局的要求更低了,所以偏爱 flex。

这是初学 flex 时完成的一个经典作业:
Youthol作业 – 骰子

优点很明显,上手很快,很便捷的居中、等比例排列、对齐等操作。不需要设置具体的数值再配合百分比,能够很快制作出一个观感较好的页面。
这里给出菜鸟上的一个教程:
菜鸟教程 – Flex 布局语法教程

但是缺点也比较明显,如果想要更细致的控制布局,flex 可能是做不到的(或者是不方便),例如起初想用 flex 实现对不同宽高的屏幕进行自动适配(响应式),可惜自己的技术学习的太浅,最终效果不太理想。

想要实现响应式,还是媒体查询 + grid 布局更为方便。

grid 布局

grid 布局又称网格布局、栅格布局。早前可以通过 Bootstrap 在 HTML 中为标签添加不同的 class 实现栅格布局,目前的多数浏览器都已经支持了原生的 grid 布局,不需要依赖第三方包。

原生的 grid 和 Bootstrap 中的栅格布局区别在于在哪儿控制布局:

原生 Grid Bootstrap
在哪控制布局 CSS 中 HTML 中

Bootstrap 可以戳:Bootstrap 5
原生 Grid 可以戳:菜鸟教程 – Grid 布局

使用网格布局可以配合媒体查询很便捷的设计出响应式的网页。

其他语言中的布局

在学习过 Web 后会发现很多语言中有关 GUI 或者图形布局的规则都与上面说的几个布局类似,例如 QT、Java Swing、Python等等,在以下这篇文章中有所提及(由于文章并非介绍布局,仅在创建控件部分引用了一些代码供以参考):
QT:快速了解基本概念

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇