热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【GitHub前端练手项目50天50个项目】day06图片模糊加载效果

GitHub热门前端练手项目,纯HTML、CSS、JS实现,50天50个项目,每日一个项目,打卡活动,解读项目





GitHub热门前端练手项目,纯HTML、CSS、JS实现,50天50个项目,每日一个项目,打卡活动,解读项目中的知识点
GitHub项目官网连接
50Projects in 50 Days



项目展示

实现一个模糊加载的效果,当加载到100%时,图片清晰度正常

Blurry


源码

HTML

DOCTYPE html>
<html lang&#61;"en">
<head>
<meta charset&#61;"UTF-8" />
<meta name&#61;"viewport" content&#61;"width&#61;device-width, initial-scale&#61;1.0" />
<link rel&#61;"stylesheet" href&#61;"style.css" />
<title>Blurry Loadingtitle>
head>
<body>
<section class&#61;"bg">section>
<div class&#61;"loading-text">0%div>
<script src&#61;"script.js">script>
body>
html>

CSS

&#64;import url(&#39;https://fonts.googleapis.com/css?family&#61;Ubuntu&#39;);
* {
box-sizing: border-box;
}
body {
font-family: &#39;Ubuntu&#39;, sans-serif;
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
overflow: hidden;
margin: 0;
}
.bg {
background: url(&#39;https://images.unsplash.com/photo-1576161787924-01bb08dad4a4?ixlib&#61;rb-1.2.1&ixid&#61;eyJhcHBfaWQiOjEyMDd9&auto&#61;format&fit&#61;crop&w&#61;2104&q&#61;80&#39;) no-repeat center center/cover;
position: absolute;
top: -30px;
left: -30px;
width: calc(100vw &#43; 60px);
height: calc(100vh &#43; 60px);
z-index: -1;
filter: blur(0px);
}
.loading-text {
font-size: 50px;
color: #fff;
}

JS

const loadText &#61; document.querySelector(&#39;.loading-text&#39;)
const bg &#61; document.querySelector(&#39;.bg&#39;)
let load &#61; 0
let int &#61; setInterval(blurring, 30)
function blurring() {
load&#43;&#43;
if (load > 99) {
clearInterval(int)
}
loadText.innerText &#61; &#96;${load}%&#96;
loadText.style.opacity &#61; scale(load, 0, 100, 1, 0)
bg.style.filter &#61; &#96;blur(${scale(load, 0, 100, 30, 0)}px)&#96;
}
// https://stackoverflow.com/questions/10756313/Javascript-jquery-map-a-range-of-numbers-to-another-range-of-numbers
const scale &#61; (num, in_min, in_max, out_min, out_max) &#61;> {
return ((num - in_min) * (out_max - out_min)) / (in_max - in_min) &#43; out_min
}

知识点总结

CSS部分


CSS滤镜

CSS 中实现滤镜效果需要通过 filter 属性并配合一些函数来实现

https://www.runoob.com/cssref/css3-pr-filter.html

filter属性可以为元素添加滤镜效果&#xff0c;例如图像、文字等

<img src&#61;"../background-slider/IMG_20210603_191954.jpg" alt&#61;"">
<style>
img {
width: 50%;
height: 50%;
filter: blur(10px);
}
style>

函数还有&#xff1a;


  • blur(px)设置高斯模糊&#xff0c;数值越大越模糊

  • brightness(%)调整图片亮度&#xff0c;0%&#xff0c;图像全黑&#xff0c;100%图像无变化&#xff0c;超过100%会更亮

  • contrast(%)&#xff0c;调整图像的对比度&#xff0c;值是0%&#xff0c;图像全灰&#xff0c;100%图像不变&#xff0c;超过100%&#xff0c;对比度更高

  • saturate(%)&#xff0c;转换图像饱和度&#xff0c;0%完全不饱和&#xff0c;100%图像无变化&#xff0c;超过100%饱和度增大

  • grayscale(%)&#xff0c;转换为灰度图像&#xff0c;0%图像无变化&#xff0c;100%图像完全灰色

  • drop-shadow(x,y,blur,color)&#xff0c;给图像设置一个阴影效果&#xff0c;阴影是合成在图像下面&#xff0c;指定阴影的位置(x,y)&#xff0c;阴影的模糊程度blur()&#xff0c;阴影的扩展范围spread&#xff0c;阴影的颜色color

    filter: drop-shadow(30px 10px 4px #4444dd);

滤镜是支持叠加的&#xff0c;使用多个滤镜&#xff0c;给图像带来不一样的效果

filter: drop-shadow(20px 10px 5px rgb(53, 153, 56)) contrast(150%) blur(10px)


补充&#xff1a; 如果body设置了背景图片&#xff0c;那么对于body的filter就不会生效








推荐阅读
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了解决IE678伪类不兼容问题的方法,包括少用CSS3和HTML5独有的属性,使用CSS hacker,使用last-child清除浮动、批量添加标签、去掉list item最后一个的border-right等技巧。同时还介绍了使用after清除浮动时加上IE独有属性zoom:1的处理方法。另外,本文还提到可以使用jQuery代替批量添加标签的功能,以及使用负边距和CSS2选择器element+element去掉list item最后一个的border-right的方法。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
author-avatar
我是王美慧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有