50 Projects 50 Days - Blurry Loading 学习记录

news2024/11/27 15:49:08

项目地址

Blurry Loading

展示效果

在这里插入图片描述

Blurry Loading

实现思路

元素组成只需要有一张图片和中间的文本即可。针对动态过程分析初始和终止状态即可,初始时图片全模糊,文本显示0%;终止时,图片完全不模糊,文本会显示100%但是隐藏或者说透明了。本项目的关键在于这个变化的脚本编写。

实现细节

HTML结构

body内写入两个盒子分别存放图片和文本即可

<div class="bg"></div>
<div class="loading-text">0%</div>

CSS样式

图片方面,背景图中的属性center/coverbackground-positionbackground-size属性合并的简写,居中且缩放覆盖。
绝对定位配合z-index以方便后面的文本居中显示。
尺寸计算和定位的偏移可以让高斯模糊在边界上的显示差异不那么大,属于不那么重要的设置。

.bg {
  background: url('https://images.unsplash.com/photo-1576161787924-01bb08dad4a4?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=2104&q=80')
    no-repeat center/cover;
  width: calc(100vw + 30px);
  height: calc(100vh + 30px);
  z-index: -1;
  position: absolute;
  top: -30px;
  left: -30px;
  filter: blur(0px);
}

.loading-text {
  color: #fff;
  font-size: 50px;
}

JavaScript逻辑

脚本需要控制的样式有三:

  1. 文本内容
  2. 文本透明度
  3. 图片模糊度

全局设置一个记录进度的变量,并写好更改变量和样式的加载效果函数,同时也需要一个缩放输入输出的计算方法。缩放方法里面主要计算比例时num要减去in_min,在in_min等于0时只写in_min是没有问题的,但是如果in_min有其他值,那么比例就会不正确了。

接着就是用setInterval去定时调用这个加载效果函数了,当变量到100后,我们就在函数中将这个定时器给消除掉,完成加载过程。

const loadText = document.querySelector('.loading-text');
const bg = document.querySelector('.bg');

let process = 0;
const interval = setInterval(loadingEffect,30);

function loadingEffect () {
  process++;

  if(process > 99){
    clearInterval(interval);
  }

  loadText.innerText = `${process}%`;
  loadText.style.opacity = scale(process, 0, 100, 1, 0);
  bg.style.filter = `blur(${scale(process, 0, 100, 30, 0)}px)`
}

function scale(num, in_min, in_max, out_min, out_max){
  return out_min + (num - in_min) * (out_max - out_min)/(in_max - in_min);
}

总结

  1. 模糊度使用到的是css3的新属性filter:blur(0px)
  2. 加载的效果主要通过定时调用函数的方式实现,并且在函数中设置好定时的终止条件。

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

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

相关文章

Junit 单元测试框架(简单使用)

目录 一、注解 1. Test 2. BeforeEach 和 BeforeAll 3. AfterEach 和 AfterAll 二、断言 1. Assertions类 1.1 assertEquals 和 assertNotEquals 1.2 assertTrue 和 assertFalse 1.3 assertNull 和 assertNotNull 三、用例执行顺序 1. 方法的排序 —— Order 四、…

人工智能轨道交通行业周刊-第44期(2023.5.8-5.14)

本期关键词&#xff1a;智能列控、苏州城轨智慧大脑、智慧乘务系统、深铁智慧运维、铁路遥感、3D视觉 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通R…

【C++入门攻略】和【编程常见问题】

常见问题 vsstudio快捷键 快速注释组合键 ctrlk ctrlc 取消注释快捷键 ctrlk ctrl u 支持垃圾回收机制 大多数面向对象编程语言具有垃圾回收机制。早期的C语言不具备垃圾回收机制&#xff0c;这意味着申请的内存资源在使用完成后&#xff0c;需要程序员自己释放。直到C11标…

1066 Root of AVL Tree(51行代码+超详细注释)

分数 25 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebala…

孙鑫VC++第一章 Windows程序内部运行机制

目录 1.1 API和SDK 1.2 窗口和句柄 1.3 消息和队列 1.4 WinMain 1.4.1 WinMain函数的定义 1.4.2 窗口的创建 1.4.3 消息循环 1.4.4 窗口过程函数 1.1 API和SDK API:Windows操作系统提供给应用程序编程的接口。 SDK&#xff08;软件开发包&#xff09;:用于开发的所有资…

swing列表框_强制存储的DefaultListModel和DefaultComboBoxModel

package com.aynu.layout;import javax.swing.*; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class DefaultListModelTest {JFrame jf new JFrame("测试DefaultListModel");JTextField bookNa…

JVM学习(二)

1. JVM 运行时内存 Java 堆从 GC 的角度还可以细分为: 新生代 ( Eden 区 、 From Survivor 区 和 To Survivor 区 )和 老年 代。 1.1. 新生代 是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象&#xff0c;所以新生代会频繁触发 MinorGC 进行垃圾回收。新…

《如何评价北化面向对象江某英之我是传奇》

点进来的都是家人了&#xff0c;来&#xff0c;今天带你们一起速通江某英的面向对象。 首先&#xff0c;我们先看一下江某英的教学安排&#xff0c;所谓知己知彼&#xff0c;百战不殆。 一共是九个章节&#xff0c;但是最后一个总复习没讲&#xff0c;这不是为难我们吗&#x…

【移动端网页布局】Flex 弹性布局案例 ② ( 顶部固定定位搜索栏 | 固定定位盒子居中对齐 | 二倍精灵图设置 | CSS3 中的垂直居中对齐 )

文章目录 一、顶部固定定位搜索栏1、固定定位盒子居中对齐2、设置最大宽度和最小宽度3、使用 Flex 弹性布局管理宽度4、二倍精灵图设置5、CSS3 中的垂直居中对齐 - 行高 内容高度 ( 总高度 - 边框高度 - 内边距高度 ) 二、代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、…

Pytroch nn.Unfold() 与 nn.Fold()图码详解

文章目录 Unfold()与Fold()的用途nn.Unfold()Unfold()与Fold() 变化模式图解 nn.Fold()单通道 滑动窗口无重叠模拟图片数据&#xff08;b,3,9,9&#xff09;&#xff0c;通道数 C 为3&#xff0c;滑动窗口无重叠。单通道 滑动窗口有重叠。 卷积等价于&#xff1a;Unfold Matri…

国民技术N32G430开发笔记(20)- FreeRTOS的移植

FreeRTOS的移植 1、官网下载FreeRTOSv202212.01&#xff0c;搜索官网下载即可。 2、新建一个FreeRTOSDemo的工程&#xff0c;可以把之前的工程中的Bootloader工程复制一份。 3、打开下载的freertos代码将相应代码移植到我们的工程中。 protable文件夹&#xff0c;因为是gcc环…

ChatGPT国内镜像网站集合

ChatGPT是一个基于人工智能的聊天机器人&#xff0c;它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术&#xff0c;包括深度学习和神经网络&#xff0c;以便更好地理解用户的意图和回答用户的问题。 ChatGPT可以回答各种问题&#xff0c;包括但不限于常见问…

RabbitMQ如何避免丢失消息

目录标题 消息丢失1. 生产者生产消息到RabbitMQ Server 消息丢失场景1. 网络问题2. 代码层面&#xff0c;配置层面&#xff0c;考虑不全导致消息丢失解决方案&#xff1a;开启confirm模式 2. 队列本身可能丢失消息1. 消息未完全持久化&#xff0c;当机器重启后&#xff0c;消息…

shell脚本之“sed“命令

文章目录 1.sed编辑器概述2.sed命令常用选项3.sed命令常用操作4.sed命令演示操作部分5.总结 1.sed编辑器概述 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些…

C嘎嘎~~[类 下篇 之 日期类的实现]

类 下篇 之 日期类的实现 6.const成员6.1 const成员的引入6.2const成员的概念 7.日期类的实现 6.const成员 6.1 const成员的引入 class Date { public:// 构造函数Date(int year 2023, int month 5, int day 5){_year year;_month month;_day day;}void Print(){cout &…

【STL】vector的使用

目录 前言 默认成员函数 构造函数 拷贝构造 赋值重载 迭代器 正向迭代器 反向迭代器 容量管理 查看容量和大小 扩容 判空 访问数据 下标访问 边界访问 数据修改 尾插尾删 指定位置插入删除 迭代器失效 清空 ​编辑 交换 查找数据 vector可以代替strin…

VOACAP 软件的简单介绍

VOACAP 软件可以预测短波通信中的最高可用频率、最佳传输频率、角度、延迟、反射点高度、信噪比、收发增益等参数&#xff0c;它可以直接输出文本文件&#xff0c;或者以图表输出&#xff0c;同时&#xff0c;它也可以绘制某一参数随时间、距离的变化图表。 该软件的下载安装可…

C语言从入门到精通第18天(指针和函数的联用)

指针和函数的联用 一级指针作为函数的形参二级指针 一级指针作为函数的形参 当函数的形参为数组时&#xff0c;我们定义函数如下&#xff1a; 语法: 数据类型 函数名(数据类型 数组名) 例如 : void func(int a[],int a){ 语句; } 但是在实际使用中我们通常用指针的形式进行…

GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?

目录 01 为什么用GEE而不是传统的下载ENVIArcGIS&#xff1f; 02 操作详解 01 为什么用GEE而不是传统的下载ENVIArcGIS&#xff1f; 由于地理空间数据云中缺少2015年10月份的NDVI月合成影像&#xff0c;于是查看了地理空间数据云的NDVI数据集处理的一些介绍如下(地理空间数据…

【Linux内核】信号量semaphore机制

信号量实现方法 信号量机制是一种用于控制并发访问的同步机制&#xff0c;常用于多进程或多线程之间的协调。在Linux内核中&#xff0c;信号量机制是通过struct semaphore结构体来实现的。 每个semaphore结构体包含一个计数器和一个等待队列&#xff0c;它们用于跟踪当前可用…