当前位置: 首页 > news >正文

【H2O2|全栈】关于CSS(14)如何完成常规的页面布局

目录

基本布局方式

前言

准备工作

管理系统界面

APP界面

区域内的滚动条

结束语


基本布局方式

前言

通过上一次学习如何让页面适应任意屏幕的学习,我们就可以开始学习如何用代码“画”出基本的框架了。本期主要分享如何绘制基本的PC端管理系统和移动端APP的界面。

准备工作

软件:【参考版本】Visual Studio Code

插件(扩展包):Open in browser, Live Preview, Live Server

浏览器版本:Chrome

系统版本: Win10/11/其他非Windows版本

*我的电脑是Win10的版本,仅供参考*

管理系统界面

打开任意的管理系统,它通常由头部导航侧边栏主体底部组成。

由于我们需要顾及搜索引擎优化(SEO),所以我们通常使用H5的标签来完成对每个界面的划分。

一种常见的首页划分的方式如下(HTML代码)——

    <header>这里是头部</header><nav>这里是导航</nav><main><aside>这里是侧边栏</aside><article><section>这里是主要的内容</section></article></main><footer>这里是底部</footer>

来到CSS部分,先给出通用设置、头部和主体的高度吧(仅供参考)——

* {margin: 0;padding: 0;list-style: none;text-decoration: none;box-sizing: border-box;
}body {text-align: center;font-size: 24px;
}header {height: 50px;background: #f39999;
}nav {height: 50px;background: #edbe72;
}

为了便于观看效果,我为每个部分加上了一些颜色。

然后,我们来到底部,底部应当是贴着窗口最下方的,所以要使用固定定位——

footer {height: 50px;position: fixed;bottom: 0;left: 0;right: 0;background: #f3f399;
}

最后就是我们的主体部分了,由于我们的屏幕高度并不相同,而主体的内容又需要一次性完全显示,所以我们需要使用calc函数动态计算主体的高度,即窗口高度减去其余部分的高度。

而主体部分中间的内容是左右分布的,左边为侧边栏,右边为主要内容,所以主体部分需要使用flex布局。

如此一来,主体部分的CSS样式也就很清晰了——

main {height: calc(100vh - 150px);display: flex;background: #aef399;
}

接下来,进入到主体当中,首先是侧边栏的样式,我们给侧边栏设置宽度和背景色来看看效果——

aside {width: 200px;background: #99edf3;
}

最后剩下的就是我们的主要内容部分了。

主要内容按理来说应该要占满右侧的整个部分,我们可以使用calc()和屏幕宽来动态计算右侧区域的宽度。

但是,其实有一种更加简便的方式——flex:1。这是一种在左右布局中快速铺满另一侧的空白内容的最快捷的方法。

因此,内容部分的CSS基本CSS样式也就完成了——

article {flex: 1;background: #e999f3;
}

让我们整体看看运行的效果吧——

APP界面

APP的布局也就是咱们移动端布局的范畴了,需要使用到相对单位rem来避免一些缩放和屏幕尺寸自适应的问题。 

其实APP的布局和管理系统的布局几乎是完全一致的,只需要将单位换成相对单位即可。

在上一期中,我们知道相对单位的CSS设置方式如下——

html {font-size: calc(100vw / 75);
}

有时,虽设计稿的宽度为750px,我们也会将该数字写为75,即以1:10的比例制作网页

调整上述代码后,移动端APP的界面效果如下——

其中,不要忘记我们的比例是1:10,所以数值不要填太大了哈。

参考CSS代码如下——

* {margin: 0;padding: 0;list-style: none;text-decoration: none;box-sizing: border-box;
}html {font-size: calc(100vw / 75);
}body {text-align: center;font-size: 3rem;
}header {height: 10rem;background: #f39999;
}nav {height: 10rem;background: #edbe72;
}main {height: calc(100vh - 15rem);display: flex;background: #aef399;
}aside {width: 24rem;background: #99edf3;
}article {flex: 1;background: #e999f3;
}footer {height: 10rem;position: fixed;bottom: 0;left: 0;right: 0;background: #f3f399;
}

区域内的滚动条

到这里,咱们的基础界面的确是看着像一回事了,但是还有一个常见的需求,即区域内容溢出问题。

我们以导航为例,来看下面的这个生鲜APP——

显然,我们售卖的商品条目不应当只有时令水果、新鲜蔬菜、肉鱼禽蛋、粮油调味和鲜活海鲜5种,更多的内容应当被隐藏到右侧的区域中去了,需要我们手指滑动才能看到其他的溢出内容。

在学习CSS基础阶段的知识时,我们知道应该用 ul 来放置这些词条。

然后,我们可以利用 overflow:auto 来把溢出的内容隐藏,并且自动生成滚动条。

接下来,在手机上我们通常是看不见这些滚动条的,所以还需要把这些滚动条的宽高置为0,让它们不再占据窗口的空间。

来到nav中简单的实现一下吧,其中,html代码设置如下——

    <nav><section class="left"><ul class="tags"><li>标签1</li><li>标签2</li><li>标签3</li><li>标签4</li><li>标签5</li><li>标签6</li><li>标签7</li><li>标签8</li><li>标签9</li><li>标签10</li></ul></section></nav>

隐藏滚动条的CSS代码如下——

::-webkit-scrollbar {width: 0;height: 0;
}

列表超出隐藏和自动使用滚动条的CSS代码如下——

nav section.left {width: 60rem;height: 100%;display: flex;overflow: auto;
}nav section.left ul.tags {width: 100rem;height: 100%;display: flex;align-items: center;background: #c479f0;
}nav section.left ul.tags li {width: 10rem;height: 6rem;background: #f3ed99;
}

在网页中,模拟手机APP打开的效果如下——

其中,导航里的标签是可以用手滑动的(必须模拟移动端手机滑动,直接PC端鼠标滑动会因为找不到滚动条而无法实现横向滑动)。

侧边栏和内容部分的列表项过长时,也是使用相同的方式设置的,这里不再赘述。 

结束语

本期的内容到这里就结束了,主要是基本的界面布局和区域内滚动条两方面的内容,这些在之后的面试中都是非常重要的。

在全栈领域,博主也只不过是一个普通的萌新而已。本系列的博客主要是记录一下自己学习的一些经历,然后把自己领悟到的一些东西总结一下,分享给大家。

文章全篇的操作过程都是笔者亲自操作完成的,一些定义性的文字加入了笔者自己的很多理解在里面,所以仅供参考。如果有说的不对的地方,还请谅解。

==期待与你在下一期博客中再次相遇==

——浓度骤降的【H2O2】


http://www.mrgr.cn/news/54266.html

相关文章:

  • 音频分割:长语音音频 分割为 短语音音频 - python 实现
  • 《Redis实战》note-8 构建简单的社交网站
  • Synopsys工具中命令中filter选项
  • 第二章 时间服务器
  • 微信收付通中,自动分账的情况下,某一接收方分账失败了系统会自动在发起重新分账吗
  • HTML DOM 简介
  • 基于机器学习的混凝土抗压强度及利用Docker与FastAPI进行模型部署并形成API
  • 鸿蒙应用开发中,实现文件上传功能
  • 查询网站在线人数
  • Python基础09_类和对象(下)迭代器和生成器函数式编程
  • UEFI 基础教程 (四十八.2) — UEFI code style
  • org.apache.http.impl.client.CloseableHttpClient的时候如果发生异常
  • 《使用Gin框架构建分布式应用》阅读笔记:p88-p100
  • 群控系统服务端开发模式-功能整理
  • 【移动安全】OWASP MASTG 移动应用程序安全测试指南
  • 大模型~合集14
  • 理解 React 中的 ReactElement、children 和 ReactNode
  • Java 线程池获取池中所有线程列表的方法
  • 优化方法之随机梯度下降SGD优化器收敛性证明
  • 代码随想录day04
  • mysql connect -- C api编译链接问题,接口介绍(初始化和销毁,连接,执行sql语句,获取结果集的元数据和数据,设置编码格式)
  • Python Logging 模块
  • Unexpected error: java.security.InvalidAlgorithmParameterException
  • 关于office中的word文档图片替换问题
  • MySQL程序介绍<二>
  • freeswitch-esl 进行强拆控制