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

news/2024/9/15 10:21:50/

大家好,我是小张

本期案例,用前端三件套实现一个简约的响应式布局网页,当屏幕分辨率自适应改变时网页布局会自动发生切换,网页布局同时兼容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.ppmy.cn/news/97123.html

相关文章

工作需要,JAVAer自学python

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

在线Excel绝配:SpreadJS 16.1.1+GcExcel 6.1.1 Crack

前端&#xff1a;SpreadJS 16.1.1 后端&#xff1a; GcExcel 6.1.1 全能 SpreadJS 16.1.1此版本的产品中包含以下功能和增强功能。 添加了各种输入掩码样式选项。 添加了在保护工作表时设置密码以及在取消保护时验证密码的支持。 增强了组合图以将其显示为仪表图。 添加了…

[acwing周赛复盘] 第 105 场周赛20230527

[acwing周赛复盘] 第 105 场周赛20230527 总结5029. 极值数量1. 题目描述2. 思路分析3. 代码实现 5030. 核心元素1. 题目描述2. 思路分析3. 代码实现 5031. 矩阵扩张1. 题目描述2. 思路分析3. 代码实现 六、参考链接 总结 又是笨比的一周&#xff0c;只做出1题。T1 模拟T2 计…

【PHP】问题已解决:宝塔面板搭建php网站无法上传图片或是文件(保姆级图文)

目录 问题情况原因和解决方法总结 『PHP』分享PHP环境配置到项目实战个人学习笔记。 欢迎关注 『PHP』 系列&#xff0c;持续更新中 欢迎关注 『PHP』 系列&#xff0c;持续更新中 问题情况 宝塔面板搭建php网站无法上传图片或是文件。 原因和解决方法 检查你的php里是否安装…

【threejs+vue2初级问题】加载纹理、去掉纹理的背景

前言 很多threejs项目都是使用原生写法的&#xff0c;如何移植到vue2中&#xff0c;下面是两个需要注意的地方 1.加载纹理的方式 原生开发&#xff1a; const a new THREE.TextureLoader().load(./mya.png vue开发&#xff1a;const texture new THREE.TextureLoader().lo…

[活动预告] Substrate 中的 IBC 跨链模块技术分享 Substrate-ibc

IBC协议是Cosmos社区设计发明的一套通用链间通信协议&#xff0c;而章鱼网络为Substrate实现了IBC协议模块&#xff0c;将Cosmos生态和Substrate生态结合起来&#xff0c;为Substrate生态项目的跨链需求&#xff0c;提供了另一种方案选择。 分享者&#xff1a;DaviRain 讲师简…

计算机网络 - 网络层的控制平面

Introduction 控制平面设计很多路由的算法, 然后计算出路由表给数据平面转发跟路由的, 传统方式的控制平面是每一个路由器都有一个控制平面, SDN方式的话通常是集中的remote管理, 一个控制平面控制多个本地代理CA - (Control Agent) 路由选择算法 路由route的概念 按照某种…

软考A计划-试题模拟含答案解析-卷六

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

tensorflow及其keras如何保存模型

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

什么?你还不知道什么是C++ 预处理器?看这一篇就够了~

目录 C 预处理器 #define 预处理 参数宏 条件编译 # 和 ## 运算符 C 中的预定义宏 最后知识点 写在最后 C 预处理器 预处理器是一些指令&#xff0c;指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是以井号&#xff08;#&#xff09;开头&#xff…

【Linux】进程信号“疑问?坤叫算信号吗?“

鸡叫当然也算信号啦~ 文章目录 前言一、认识信号量二、信号的产生 1.调用系统函数向进程发信号2.由软件条件产生信号3.硬件异常产生信号总结 前言 信号在我们生活中很常见&#xff0c;下面我们举一举生活中信号的例子&#xff1a; 你在网上买了很多件商品&#xff0c;再等待不…

使用大语言模型集成工具 LangChain 创建自己的论文汇总和查询工具

Langchain可以帮助开发人员构建由大型语言模型(llm)支持的应用程序。它提供一个框架将LLM与其他数据源(如互联网或个人文件)连接起来。这允许开发人员将多个命令链接在一起&#xff0c;以创建更复杂的应用程序。包括最近比较火爆的AutoGPT等都是使用了Langchain框架进行开发的。…

java设计模式之备忘录设计模式的前世今生

备忘录设计模式是什么&#xff1f; 备忘录模式是一种行为型设计模式&#xff0c;它可以让你在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 该模式涉及到三个角色&#xff1a; 1. Originator: 创建并管理自己的状态信息。它将创建一个Memento&#xff0c;并且还可…

我在CSDN的736个日子——两年纪念日“随想”

2021-05-21~2023-05-27&#xff0c;我在 CSDN 已有 736 个日子。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址&#xff1a;https:/…

GDB 基础使用与多进程调试

​ GDB 全称“GNU symbolic debugger”是 Linux 下常用的程序调试器&#xff0c;当下的 GDB 支持调试多种编程语言编写的程序&#xff0c;包括 C、C、Go、Objective-C、OpenCL、Ada 等。 01 GDB 基础调试 1.1 基础使用 安装工具 # 安装 gcc sudo yum install gcc # 安装 g s…

如何在华为OD机试中获得满分?Java实现【不爱施肥的小布】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1、题目描述2、输入描述3、输出描述…

如何从宏观层面构建优秀的大语言模型

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

软考A计划-试题模拟含答案解析-卷五

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

ChatGPT原理简介

承接上文GPT前2代版本简介 GPT3的基本思想 GPT2没有引起多大轰动&#xff0c;真正改变NLP格局的是第三代版本。 GPT3训练的数据包罗万象&#xff0c;上通天文下知地理&#xff0c;所以它会胡说八道,会说的贼离谱&#xff0c;比如让你穿越到唐代跟李白对诗&#xff0c;不在一…

17个新手常见的Python运行错误

当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 2)使用 = 而不是 ==(导致“Sy…