[CSS案例二]—实现一个响应式网页,兼容PC移动端,ScrollReveal 增加动画

news2024/11/26 12:32:29

大家好,我是小张

本期案例,用前端三件套实现一个简约的响应式布局网页,当屏幕分辨率自适应改变时网页布局会自动发生切换,网页布局同时兼容PC端和移动端,

在普通PC屏幕下网页布局效果

image-20230526222317223

移动端网页布局:

Snipaste_2023-05-26_22-33-07

除了基础布局外,借助 scrollreveal 插件,在网页中加入了一些动画,

例如网页首次打开时,

  • 左侧图标 由左向右 延迟 500ms 出现,透明度从 100 到 0;

  • 中间 标题和图片 由下向上延迟 400ms 出现,透明度从 100 到 0;

代码实现

本案例案例 中 html 代码部分

  • 案例中用到了连个 icon 库,以及谷歌字体,都采用在head 标签中 通过 CDN 方式加入到项目中;
  • 此外,由于案例中用到 scrollreveal 插件来实现动画,该插件也是通过 CDN 方式载入;
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Website2 Responsitive</title>

    <!-- boxicons link -->
    <link href='https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css' rel='stylesheet'>

    <!-- remixionc link -->
    <link href="https://cdn.jsdelivr.net/npm/remixicon@3.2.0/fonts/remixicon.css" rel="stylesheet">

    <link rel="stylesheet" href="style.css" />

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,500;1,800&display=swap"
        rel="stylesheet">
</head>

<body>
    <div class="head">
        <div class="logo">
            LOGO
        </div>
        <div class="menu-bar">
            <li>
                <a href="#">Menu1</a>
            </li>
            <li>
                <a href="#">Menu2</a>
            </li>
            <li>
                <a href="#">Menu3</a>
            </li>
            <li>
                <a href="#">Menu4</a>
            </li>
        </div>
        <div id="mobile-bar" class="bx bx-menu">
        </div>
    </div>
    <div class="content">
        <div class="center">
            <div class="left">

                <span class="tag"> Some Tag </span>
                <span class="title-top">Title After</span>
                <span class="title">The Website</span>
                <p class="desc"> e careful using this method in production. Without specifying a fixed version number,
                    Unpkg may delay your page load while it resolves the latest version. </p>

                <div class="btn">
                    <a class="left-btn">Button1</a>
                    <a class="right-btn"><i class='bx bx-play-circle'></i> Playing</a>
                </div>
            </div>
            <div class="right">
                <img src="./static/logo-vuejs-min.png" />

            </div>
        </div>

        <div class="left-icons">
            <a><i class='bx bxl-twitter'></i></a>
            <a><i class="ri-github-line"></i></a>
            <a><i class="ri-vuejs-line"></i></a>
        </div>
        <div class="top-down">
            <a><i class="ri-arrow-down-circle-line"></i></a>
        </div>

    </div>

    <script src="https://unpkg.com/scrollreveal"></script>
    <script src="script.js"></script>
</body>

</html>

案例 JS 部分,主要控制移动端菜单栏的出现与消失;以及一些浮动动画

// 中部
const scrollRevealOpt1 = {
    delay: 400,
    distance: '100px',
    duration: 600,
    easing: 'cubic-bezier(0.5, 0, 0, 1)',
    interval: 0,
    opacity: 0,
    origin: 'bottom'
}


const scrollRevealOpt2 = {
    delay: 400,
    distance: '100px',
    duration: 500,
    easing: 'cubic-bezier(0.5, 0, 0, 1)',
    interval: 0,
    opacity: 0,
    origin: 'bottom'
}

// 左侧图标区域 动画效果配置
const leftIconsOpt = {
    delay: 400,
    distance: '45px',
    duration: 600,
    easing: 'cubic-bezier(0.5, 0, 0, 1)',
    origin: 'left'
}

const leftcontent = document.querySelector('.content .left')
const rightcontent = document.querySelector('.content .right')
const mobileBar = document.getElementById('mobile-bar')
const leftIcons = document.querySelector('.left-icons')


ScrollReveal(scrollRevealOpt1).reveal(leftcontent);
ScrollReveal(scrollRevealOpt2).reveal(rightcontent);
ScrollReveal(leftIconsOpt).reveal(leftIcons)
const menuList = document.querySelector('.menu-bar')
mobileBar.onclick = () => {
    menuList.classList.toggle('open')
    mobileBar.classList.toggle('bx-x')
}

CSS 部分代码

body {
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    height: 100vh;
    box-sizing: border-box;
    font-weight: 400;
    font-style: normal;


    font-family: 'Open Sans', sans-serif;
    position: relative;
}


.head {
    color: white;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    padding: 1rem 5rem;

    display: flex;
    justify-content: space-between;
    align-items: center;
    z-index: 200;


}

.logo {
    font-size: 20px;
    font-family: 'Open Sans', sans-serif;

}


.menu-bar {
    display: flex;
    gap: 3rem
}

.menu-bar li {
    list-style: none;
}

.menu-bar li a {
    color: white;
    text-decoration: none;
    padding-bottom: 4px;
    font-size: 18px;
    border-bottom: 2px solid transparent;
    transition: all 0.3s ease;
}


.menu-bar li a:hover {

    border-bottom: 2px solid white;
}

#mobile-bar {
    position: fixed;
    right: 5%;
    top: 5%;
    transform: translateY(-50%);
    color: white;
    font-size: 30px;
    transition: all 0.3s ease;
    cursor: pointer;
    display: none;

}


.content {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
    width: 100%;
    min-height: 100vh;
    align-items: center;
    background: linear-gradient(245.59deg, #4d9559 0%, #38703d 28.53%, #133917 75.52%);

}

案例中涉及到的完整代码,可访问 Web2_Responsive 获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/578219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工作需要,JAVAer自学python

人生苦短&#xff0c;我用Python。 是如何学习/自学 Python 的&#xff1f; 我学习python的方式其实很简单很暴力&#xff1a;网上直接搜视频教程&#xff1b; 我之前一直做java的&#xff0c;学习python其实也是一个机缘巧合&#xff1a;当时入职一个朋友刚好有python岗位&a…

初识Unity——基本模型、场景操作、世界坐标系和局部坐标系

目录 基本模型 创建基本模型 基本模型的复制 复杂模型 场景操作 聚焦 旋转 移动 场景视野 世界坐标系 基本介绍 原点 局部坐标系 基本模型 创建基本模型 基本模型的复制 创建基本模型之后&#xff0c;会在我们视野中心生成这个模型&#xff1b;当我们需要复…

SpringAOP简介及实现(包含切面、切点、连接点和通知)

目录 1.什么是AOP、SpringAOP&#xff1f; 2.AOP的组成 3.SpringAOP的实现 4.切点的表达式 1.什么是AOP、SpringAOP&#xff1f; 在学习SpringAOP之前&#xff0c;我们得先了解一下什么是AOP。AOP是一种面向切面编程的思想。那什么是切面呢&#xff1f;它其实是对某一类事情…

软件外包开发代码管理工具

软件代码规范是为了提高代码质量、可读性和可维护性而制定的一系列编程规则和约定。代码管理工具则是用于协助团队成员共享、跟踪和合并代码的工具。今天和大家分享这方面的知识&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&a…

定制底部footer bug:切换tab时position fixed会抖动

文章目录 bug描述position:fixed是啥&#xff1f;有啥用为什么切换tab的时候会抖动如何解决自定义一个InBody组件&#xff0c;将里面所有的元素放到body里面需要放到的底部的内容都放到这个组件里面 bug描述 在element admin里面定制了footer组件&#xff0c;每个页面也可还有…

离散数学_十章-图 ( 3 ):由旧图构造新图

&#x1f4f7;10.3 由旧图构造新图 概念1. 子图2. 真子图3. 导出的子图 旧图构造新图的方法1. 删除或增加图中的边2. 边的收缩3. 删除顶点 有时解决问题只需要图的一部分。 比如我们现在只关心大型计算机网络中涉及济南&#xff0c;广州&#xff0c;深圳的计算机中心&#xff0…

学习c语言中的几道习题(小有难度)!

有兴趣的朋友可以看着题目自己做做&#xff0c;最后在和答案对比&#xff01;相信能力会有所提升的。我现在只是刚刚开始学习c语言&#xff0c;如果有什么说的不对的地方&#xff0c;网路过的大佬&#xff0c;及时予以指正。多谢&#xff01; 1、函数判断闰年 实现函数判断yea…

chatgpt赋能python:Python行太长如何处理?

Python行太长如何处理&#xff1f; 介绍 Python 是一门强大的编程语言&#xff0c;易于学习和使用。它也因其可读性和简洁性而受到广泛赞誉。然而&#xff0c;在实际编写时&#xff0c;往往遇到了行太长的情况。 当一行代码在编辑器中撑满了整个屏幕&#xff0c;或者末尾的字…

【Redis入门篇】| Redis的Java客户端

目录 一&#xff1a; Redis的Java客户端 1. Jedis快速入门 2. Jedis连接池 3. SpringDataRedis快速入门 4. RedisSerializer配置 5. StringRedisTemplate 图书推荐 一&#xff1a; Redis的Java客户端 在Redis官网中提供了各种语言的客户端&#xff0c;地址&#xff1a;…

chatgpt赋能python:Python阶乘算法——快速、高效的算法实现!

Python阶乘算法 —— 快速、高效的算法实现&#xff01; Python作为一门高级编程语言&#xff0c;在众多领域都得到了广泛应用&#xff0c;尤其在算法领域更是拥有着举足轻重的地位。阶乘算法作为计算领域中的一种经典算法&#xff0c;也是Python中不可或缺的一部分。 什么是…

尚硅谷大数据hadoop教程_HDFS

P40 hdfs产生背景和定义 p41 优缺点 p42 组成 p43 文件块大小 p 44 45 shell命令 p46 api环境准备

单链表—C语言实现数据结构

本期带大家一起用C语言实现单链表&#x1f308;&#x1f308;&#x1f308; 文章目录 一、链表的概念&#x1f30e;二、链表中数据元素的构成&#x1f30e; &#x1f30d;三、链表的结构&#x1f30e; &#x1f30d; &#x1f30f;四、 单链表的实现✅✅二、接口的实现✅✅1.单…

SAP-MM-采购申请-价值特性

采购申请审批在维护价值特性时要注意是抬头价值还是行价值&#xff0c;要确定选择哪个&#xff0c;配置时对应配置。 1、创建价值特性CT04 字段名称&#xff1a;CEBAN-GSWRT&#xff0c;和CEBAN-GFWRT 抬头总价值&#xff1a;CEBAN-GFWRT&#xff1b;如果选择的是抬头审批&am…

WPF界面设计

目录 1.设计一个优美的注册界面1.实现效果2.代码展示 2.简易登录按钮设计1.实现效果2.代码展示 3.设计一个优美的注册登录界面&#xff08;连接数据库&#xff09;1.实现效果2.代码展示 4.设计一个简单的在线教育系统界面1.实现效果2.代码展示 5. 设计一个Dashboard1.实现效果2…

linux线程创建等待及退出总结

线程操作 线程操作分线程的创建&#xff0c;退出&#xff0c;等待 3 种 1. 线程创建 #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg); // 返回&#xff1…

chatgpt赋能python:Python中的逆序数

Python中的逆序数 介绍逆序数 在数学中&#xff0c;逆序数指的是一个序列中逆序对的个数。逆序对指一个序列中的两个元素&#xff0c;其中较大的元素在前而较小的元素在后。例如&#xff0c;序列 [2, 4, 1, 3] 中逆序对的个数是 2&#xff1a;(2,1) 和 (4,1)。 逆序数常用于…

chatgpt赋能python:Python逆序遍历-解决问题的神奇方式

Python逆序遍历 - 解决问题的神奇方式 Python是一种简单易学的编程语言&#xff0c;依靠其强大的功能和可扩展性&#xff0c;已成为数据科学、人工智能和Web开发的首选语言之一。Python的核心优点之一是其非常方便的列表操作&#xff0c;而逆序遍历列表是Python的又一个实用而…

chatgpt赋能python:Python虚拟环境移植:为何以及如何

Python虚拟环境移植&#xff1a;为何以及如何 在Python项目开发过程中&#xff0c;管理项目依赖关系是一个很重要的问题。一个有效的解决方案是使用Python虚拟环境。虚拟环境是Python的一个工具&#xff0c;允许您在隔离的环境中管理Python包和依赖&#xff0c;从而避免不同开…

期末复习总结【MySQL】五种约束类型, 主键和外键的使用方式(重点)

文章目录 前言一、约束类型二、NOT NULL三、UNIQUE四、DEFAULT五、PRIMARY KEY(重点)1, 自增主键 六、FOREIGN KEY (重点)1, 插入数据2, 删除数据3, 关于外键约束下删除数据的思考 总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5;…

chatgpt赋能python:Python词法分析:理解语言的起点

Python词法分析&#xff1a;理解语言的起点 在计算机科学中&#xff0c;词法分析&#xff08;也称为词法分析器&#xff09;是解析编程语言时的重要步骤之一。词法分析器将程序代码转换为由单词组成的序列&#xff08;称为标记或词法单元&#xff09;&#xff0c;为编译器和解…