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

【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.kler.cn/news/356874.html

相关文章:

  • 简单实现通过电脑操作手机
  • 【优选算法】探索双指针之美(一):双指针与单调性的完美邂逅
  • MySQL 异常: “Host ‘xxx‘ is not allowed to connect to this MySQL server“
  • IMX6UL的RGB的显示实验
  • 一起搭WPF架构之LiveCharts.Wpf的简单了解与安装
  • 微信小程序-封装通用模块
  • Mac 远程 Windows 等桌面操作系统工具 Microsoft Remote Desktop for Mac 下载安装详细使用教程
  • 《仓库猎手模拟》风灵月影游戏辅助使用教程
  • 数据库原理与应用(基于MySQL):实验六数据查询
  • 【Golang】Go语言http编程底层逻辑实现原理与实战
  • 大数据治理:技术挑战与解决方案
  • 免杀对抗—内存加载UUID标识IPV4地址MAC地址
  • webpack自定义插件 ChangeScriptSrcPlugin
  • 结合seata和2PC,简单聊聊seata源码
  • 暴雨讲堂:AI已成为交叉学科科研工具
  • 监督学习、无监督学习、半监督学习、强化学习、迁移学习、集成学习分别是什么对应什么应用场景
  • Facebook Marketplace无法使用的原因
  • 【Bootstrap】bootstrap-table 的打印按钮功能正常但缺失图标
  • python爬虫加解密分析及实现
  • OSI参考模型与TCP/IP模型