• 基于HTML5和CSS3搭建一个Web网页(二)


    倘若代码中有任何问题或疑问,欢迎留言交流~

    网页描述

    创建一个包含导航栏、主内容区域和页脚的响应式网页
    需求:

    1. 导航栏:
      在页面顶部创建一个导航栏,包含首页、关于我们、服务和联系我们等链接。
      设置导航栏样式,包括字体、颜色和背景颜色等。
      在滚动页面时,导航栏应始终固定在顶部。
    2. 主内容区域:
      包含介绍性文本和至少两张图片。
      对文本和图片应用样式,例如字体样式、对齐方式等。
    3. 页脚:
      包含版权信息和日期,并进行相应的样式设计.
    4. 响应式布局:
      当在不同大小的设备(如手机、平板电脑、笔记本电脑等)上查看时,网页应该具有很好的可读性和易用性。
      提示:
      使用HTML5的新元素,如header、footer、nav、section、article等进行布局。
      使用CSS3的新特性,如渐变、阴影、动画、Flexbox或Grid布局等提升网页的视觉效果。
      使用媒体查询(@media)来设置响应式布局的断点。

    在上一篇文字已经解决了导航栏的基本部分,基于HTML5和CSS3搭建一个Web网页(一)。下面继续完成这个网页的开发。

    项目结构

    基于上一篇得基础,我将导航栏的布局改变了一下,因为发现导航栏只有四个选项,四等分好像有点难看。所以让它们更紧凑了一点,并且改变了一下项目结构。
    根据项目要求,可以看到网页分为三个部分
    分别是导航栏、主体内容和页脚
    因此html主题结构为三个div标签。代码如下:

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Webtitle>
        <link rel="stylesheet" href="../css/style.css">
        <link rel="stylesheet" href="../css/header.css">
        <link rel="stylesheet" href="../css/main.css">
        <link rel="stylesheet" href="../css/footer.css">
    head>
    <body>
        <div class="header">div>
        <div class="main">div>
        <div class="footer">div>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    项目文件夹结构如图所示:
    在这里插入图片描述

    1. style.css为主体css样式
    2. header.css、main.css和footer.css依次为导航栏、主体内容和页脚样式

    style.css

    /* 去除所有元素默认的margin、padding和border值 */
    * {
        margin: 0;
        padding: 0;
        border: 0;
    }
    
    /* 初始化html、body宽高100%,占满整个窗口 */
    html, body {
        height: 100%;
        width: 100%;
    }
    
    /* 设置一个类来清除浮动 */
    .clearfix {
        clear: both;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    这个清除浮动类比较重要,在后边的代码过程中会经常用到。

    导航栏的响应式布局

    响应式布局里,我们将情况分为五种:

    1. 在屏幕宽度最大为575px(通常是手机设备)
    2. 当屏幕宽度在576px到767px(通常是平板设备)
    3. 当屏幕宽度在768px到991px(通常是小型电脑设备)
    4. 当屏幕宽度在992px到1199px(通常是中型电脑设备)
    5. 当屏幕宽度在1200px以上(通常是大屏电脑设备)
      并且在css文件夹中建立media.css文件,用来存放编写网页的响应式效果。
      基于这五个情况,可以列出media.css文件的框架如下:
    /* 超小屏幕(小于等于575px) */
    @media (max-width: 575px) {
    
    }
    /* 小屏幕 */
    @media (min-width: 576px) {
    
    }
    /* 中等屏幕 */
    @media (min-width: 768px) {
        
    }
    /* 大屏幕 */
    @media (min-width: 992px) {
        
    }
    /* 超大屏幕 */
    @media (min-width: 1200px) {
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    导航栏的响应式布局思路

    导航栏的响应式布局思路为,小屏幕时为了观感,用汉堡菜单按钮来代替导航栏的选项。
    汉堡菜单在我之前的文章有提过:超小屏幕下的导航栏-汉堡菜单按钮效果
    即实现下图中的效果,而其余屏幕则改变导航栏的大小即可。
    在这里插入图片描述

    index.html

    那么index.html文件为

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Webtitle>
        <link rel="stylesheet" href="../css/style.css">
        <link rel="stylesheet" href="../css/header.css">
        <link rel="stylesheet" href="../css/main.css">
        <link rel="stylesheet" href="../css/footer.css">
        <link rel="stylesheet" href="../css/media.css">
    head>
    <body>
        <div class="header">
            <div class="header-main">
                
                <input type="checkbox" id="toggle-box"> 
                
                <label for="toggle-box" class="menu">label>
                <ul>
                    <li><a href="index.html">  首页  a>li>
                    <li><a href="#">关于我们a>li>
                    <li><a href="#">  服务  a>li>
                    <li><a href="#">联系我们a>li>
                ul>
            div>
            
            <div class="clearfix">div>
        div>
        <div class="main">div>
        <div class="footer">div>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    header.css

    对应header.css文件为:

    .header {
        /* 设置导航栏的大小和颜色 */
        width: 100%;
        background-color: rgba(0,0,0,0.4);
    
        /* 固定导航栏 */
        position: fixed;
    }
    .header-main {
        width: 70%;
    }
    .header .header-main ul {
        /* Flex需要初始化ul标签的宽度 */
        width: 100%;
    
        /* 导航栏采用Flex布局方式 */
        /* 采用Flex布局的好处:1.使得代码更加简洁 2.不用考虑宽的设置,会自动占满 */
        display: flex;
    
        /* 去掉列表点 */
        list-style: none;
    }
    .header .header-main ul  li {
         /* 设置 flex-grow 为 1 保证所有的 li 元素都有相等的宽度,而不论其内容的宽度 */
         flex-grow: 1;
         height: 100%;
         /* 对齐文本到中心 */
         text-align: center;
    }
    ul li a {
        /* 设置字体大小和颜色,并去掉下划线 */
        font-size: 18px;
        color: black;
        text-decoration: none;
    
        display: block;
        margin-top: 12px;
        height: 36px;
        border-bottom: 2px rgba(0,0,0,0.4);
    }
    
    ul li a:hover {
        color: white;
        height: 34px;
        border-bottom: 2px solid white;
    } 
    /* 默认情况下隐藏汉堡菜单按钮 */
    #toggle-box, .menu {
        display: none;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    media.css文件

    /* 超小屏幕(小于等于575px) */
    @media (max-width: 575px) {
        .header-main {
            width: 94%;
            margin-left: 3%;
            margin-right: 3%;
            /* 美观 */
            min-height: 35px;
            line-height: 35px;
        }
        .header .header-main ul {
            display: none;
        }
        .header-main ul li {
            display: block;
            width: 100%;
            text-align: center;
    
        }
        .header-main .menu {
            display: block;
            text-align: center;
    
        }
        #toggle-box:checked~ul {
            display: block;
        }
    }
    /* 小屏幕 */
    @media (min-width: 576px) {
        .header-main {
            width: 80%;
            margin-left: 10%;
            margin-right: 10%;
        }
    }
    
    /* 中等屏幕 */
    @media (min-width: 768px) {
        .header-main {
            width: 70%;
            margin-left: 15%;
            margin-right: 15%;
        }
    }
    
    /* 大屏幕 */
    @media (min-width: 992px) {
        .header-main {
            width: 60%;
            margin-left: 20%;
            margin-right: 20%;
        }
    }
    
    /* 超大屏幕 */
    @media (min-width: 1200px) {
        .header-main {
            width: 50%;
            margin-left: 25%;
            margin-right: 25%;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
  • 相关阅读:
    node进程管理工具 pm2 常用操作命令
    大数据安全标准化产生得背景
    【pandas小技巧】--category类型补充
    2023CCPC重庆经验小结
    基于进化思想的聚类算法及其类簇融合算法(Matlab代码实现)
    【漏洞复现】Viessmann Vitogate远程代码执行(CVE-2023-45852)
    nacos学习笔记一:nacos做注册中心和配置中心
    LeetCode 2240. Number of Ways to Buy Pens and Pencils【数学,枚举;类欧几里得算法】1399
    货币系统(求方案数的背包)
    神经网络模型复杂度分析
  • 原文地址:https://blog.csdn.net/weixin_72939806/article/details/138903321