【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.rhkb.cn/news/452155.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新颖的 setTimeout() 替代方案

在前端开发中&#xff0c;长时间运行的JavaScript任务一直是一个棘手的问题。它们会导致页面无响应&#xff0c;影响用户体验。传统上&#xff0c;开发者使用setTimeout()来分割长任务&#xff0c;但这种方法存在明显的缺陷。最近&#xff0c;Chrome 129引入了一种新的、更高效…

机器学习面试笔试知识点-线性回归、逻辑回归(Logistics Regression)和支持向量机(SVM)

机器学习面试笔试知识点-线性回归、逻辑回归Logistics Regression和支持向量机SVM 一、线性回归1.线性回归的假设函数2.线性回归的损失函数(Loss Function)两者区别3.简述岭回归与Lasso回归以及使用场景4.什么场景下用L1、L2正则化5.什么是ElasticNet回归6.ElasticNet回归的使…

视频云存储/音视频流媒体视频平台EasyCVR视频汇聚平台在欧拉系统中启动失败是什么原因?

视频监控/视频集中存储/磁盘阵列EasyCVR视频汇聚平台具备强大的拓展性和灵活性&#xff0c;支持多种视频流的外部分发&#xff0c;如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、fmp4等&#xff0c;这为其在各种复杂环境下的部署提供了便利。 安防监控EasyCVR视频汇聚平…

分布式数据库安全可靠测评名录之平凯数据库(TiDB企业版)

作者&#xff1a; 数据源的TiDB学习之路 原文来源&#xff1a; https://tidb.net/blog/d052ee0b 2024 年 9 月 30 日&#xff0c;中国信息安全测评中心公布安全可靠测评结果公告&#xff08;2024年第2号&#xff09;&#xff0c;其中包含 6 款集中式数据库和 11 款分布式数据…

鸿蒙网络编程系列30-断点续传下载文件示例

1. 断点续传简介 在文件的下载中&#xff0c;特别是大文件的下载中&#xff0c;可能会出现各种原因导致的下载暂停情况&#xff0c;如果不做特殊处理&#xff0c;下次还需要从头开始下载&#xff0c;既浪费了时间&#xff0c;又浪费了流量。不过&#xff0c;HTTP协议通过Range…

信息安全工程师(58)网络安全漏洞处置技术与应用

前言 网络安全漏洞处置技术与应用是一个复杂而关键的领域&#xff0c;它涉及漏洞的发现、评估、修补以及后续的监控与防范等多个环节。 一、网络安全漏洞发现技术 网络安全漏洞发现技术是漏洞处置的首要步骤&#xff0c;它旨在通过各种手段识别出网络系统中存在的潜在漏洞。这些…

jupyter notebook远程连接服务器

jupyter notebook远程连接服务器 文章目录 jupyter notebook远程连接服务器jupyter是什么配置步骤安装jupyter生成jupyter配置文件编辑jupyter配置文件设置密码ssh隧道 启动顺序jupyter添加kernel下载ipykernel包添加kernel 测试遇到的问题 jupyter是什么 Jupyter Notebook是一…

数据结构之队列(python)

华子目录 1.队列存储结构1.1队列基本介绍1.2队列的实现方式 2.顺序队列2.1顺序队列的介绍2.2顺序队列的简单实现2.3代码实现 3.链式队列和基本操作3.1链式队列数据入队3.2链式队列数据出队3.3队列的链式表示和实现 1.队列存储结构 1.1队列基本介绍 队列的两端都"开口&qu…

FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。

一&#xff0c;安装QT&#xff0c; 重点&#xff1a;在安装QT的时候要安装msvc201x版本的组件&#xff0c; 二 &#xff0c; 安装 qt-vs-tools Index of /development_releases/vsaddin/2.8.1 三&#xff0c;需要安装过 windows10 SDK&#xff0c;一般我们在安装vs2019的时候就…

餐饮店怎么标注地图位置信息?

随着市场竞争的日益激烈&#xff0c;商家若想在竞争中脱颖而出&#xff0c;就必须想方设法去提高自身的曝光度和知名度&#xff0c;为店铺带来更多的客流量。其中&#xff0c;地图标注便是一种简单却极为有效的方法。通过在地图平台上添加店铺位置信息&#xff0c;不仅可以方便…

电子级异丙醇溶液除硼树脂

电子级异丙醇溶液的净化除杂是一个精细的过程&#xff0c;旨在去除溶液中的杂质&#xff0c;以满足电子行业对高纯度化学品的严格要求。以下是电子级异丙醇溶液净化除杂的相关信息&#xff1a; 净化除杂方法 ● 精馏工序&#xff1a;通过精馏塔进行初步分离&#xff0c;去除大部…

(44)MATLAB读取语音信号进行频谱分析

文章目录 前言一、MATLAB代码二、仿真结果画图三、频谱分析 前言 语音信号是我们最常见的一种信号&#xff0c;本文使用MATLAB读取一段语音信号画出其波形&#xff0c;然后使用FFT变换给出其频谱&#xff0c;对其频谱进行分析。 一、MATLAB代码 读取语音数据并得出频谱的代码…

JMeter如何设置HTTP代理服务器?

1、 2、添加线程组 3、设置HTTP代理服务器&#xff0c;目标控制器选择“测试计划>线程组” 过滤掉不需要的信息 4、设置电脑手动代理 5、点击启动&#xff0c;在浏览器操作就可以了

Halcon实战——基于NCC模板匹配的芯片检测(附源码)

Halcon实战——基于NCC模板匹配的芯片检测&#xff08;附源码&#xff09; 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0c;目标检测&#xff0c;图像分类&am…

OpenCV高级图形用户界面(10)创建一个新的窗口函数namedWindow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 创建一个窗口。 函数 namedWindow 创建一个可以作为图像和跟踪条占位符的窗口。创建的窗口通过它们的名字来引用。 如果已经存在同名的窗口&am…

应用层协议 序列化

自定义应用层协议 例子&#xff1a;网络版本计算器 序列化反序列化 序列化&#xff1a;将消息&#xff0c;昵称&#xff0c;日期整合成消息-昵称-日期 反序列化&#xff1a;消息-昵称-日期->消息&#xff0c;昵称&#xff0c;日期 在序列化中&#xff0c;定义一个结构体…

第8篇:网络安全基础

目录 引言 8.1 网络安全的基本概念 8.2 网络威胁与攻击类型 8.3 密码学的基本思想与加密算法 8.4 消息认证与数字签名 8.5 网络安全技术与协议 8.6 总结 第8篇&#xff1a;网络安全基础 引言 在现代信息社会中&#xff0c;计算机网络无处不在&#xff0c;从互联网到局…

C语言_指针_进阶

引言&#xff1a;在前面的c语言_指针初阶上&#xff0c;我们了解了简单的指针类型以及使用&#xff0c;下面我们将进入更深层次的指针学习&#xff0c;对指针的理解会有一个极大的提升。从此以后&#xff0c;指针将不再是难点&#xff0c;而是学习底层语言的一把利器。 本章重点…

Mysql(2)—SQL语法详解(通俗易懂)

一、关于SQL 1.1 简介 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种用于管理关系型数据库的标准编程语言。它主要用于数据的查询、插入、更新和删除等操作。SQL最初在1970年代由IBM的研究人员开发&#xff0c;旨在处理关系数据模型…

API的力量:解决编程技术问题的利器

在软件开发的世界里&#xff0c;编程技术问题无处不在。从数据获取到用户认证&#xff0c;从支付处理到地图服务&#xff0c;这些问题的解决方案往往需要深厚的专业知识和大量的开发时间。然而&#xff0c;应用程序编程接口&#xff08;API&#xff09;的出现&#xff0c;为开发…