前言:为熟悉HTML、CSS和JavaScript,从GitHub上选取项目代码进行解析和学习。

一、总体效果


功能:点击每一个图片会动态划过。
实现方式:新建一个文件夹,文件夹中新建三个txt,改后缀,分别命名style.css;script.js;index.html;将下面三部分代码对应放入。

二、JavaScript部分

const panels=document.querySelectorAll('.panel')
panels.forEach(panel=>{panel .addEventListener('click',()=>{removeActiveClasses()panel.classList.add('active')})
})
function removeActiveClasses(){panels.forEach(panel=>{panel.classList.remove('active')})
}

代码解析
第一行
获取文档中class=“.panel”的所有元素。

语法
elementList = document.querySelectorAll(selectors);
其中elementList 是一个静态的 NodeList 类型的对象。
selectors 是一个由逗号连接的包含一个或多个 CSS 选择器的字符串。

第二至七行
1、利用forEach()方法调用数组的每一个元素,并将元素传递给回调函数。

语法:array.forEach(function(currentValue, index, arr), thisValue)
其中function(currentValue, index, arr)必需,数组中每个元素需要调用的函数;currentValue必需,指当前元素;index可选,指当前元素的索引值;arr可选,值当前元素所属的数组对象。
2、利用箭头函数 panel=>{ }
箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。

语法

3、利用element.addEventListener()方法向指定元素添加事件句柄。

语法: element.addEventListener(event, function, useCapture)

4、利用element.classList.add(),为元素添加新的类
第八至十二行:
定义了removeActiveClasses()函数,语法同上。

小结:我理解的Js部分代码是为实现面板图像的一个动态转换,当点击一个面板,移除active,显示一个图片,点击完所有面板后再添加active,回到初始状态。

三、css部分

@import url('https://fonts.googleapis.com/css?family=Muli&display=swap'); /*import Google Fone*/*{box-sizing:border-box;/*计算元素的总宽度和总高度;content-box:表示设置的宽度中不包括padding(内边框)和border(边框);bortder-box:表示设置的宽度中包括padding(内边框)和border(边框);inherit:从父元素继承;*/
}
body{font-family: 'Muli',sans-serif;display: flex;align-items: center;justify-content: center;height: 100vh;overflow: hidden;margin: 0;
}
.container{/*用于固定宽度并支持响应式布局的容器,弹性盒子之类*/display: flex;width: 90vw;
}.panel{/*.panel表示类选择器设置面板背景大小、位置、颜色、高度、四个角的弧度等*/background-size: cover;background-position: center;background-repeat: no-repeat;height: 80vh;border-radius: 50px;color: #fff;cursor: pointer;  /*定义鼠标指针放在一个元素范围内时所用的光标形状。pointer是一只手*/flex: 0.5; /*设置让所用弹性模型对象的子元素都有相同的长度*/margin: 10px; /*设置元素的所有四个边距*/position: relative;-webkit-transition: all 700ms ease-in; /*过渡效果*/}.panel h3{font-size: 24px;position: absolute;bottom: 20px;left: 20px;margin: 0;  /*设置元素的所有四个边距*/opacity: 0; /*设置元素的透明度级别*/
}.panel.active{flex: 5;
}
.panel.active h3{opacity: 1; /*设置元素的透明度级别*/transition: opacity 0.3s ease-in 0.4s; /*设置元素过渡效果*/
}@media (max-width:480px){.container{width: 100vw;}.panel:nth-of-type(4),.pamel:nth-of-type(5){display: none;}
}

代码解析
第一块:
利用@import设置文本字体为谷歌字体

第二块:*{}
目的是设置元素总宽度和总高度
其中 *{}表示class类选择器,class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,class可以在多个元素中使用。

第三块:body{ }
目的设置body中字体、显示等属性

第四块:.container{ }
目的是用于固定宽度并支持响应式布局的容器,弹性盒子之类【这块我理解的不是很好】

第五块:.panel{ }
目的是设置每一个面板的背景、大小等属性

第六块:.panel h3{ }
目的是设置面板中标题3的样式。透明度级别

第七块:.panel.active{ }
目的设置样式

第八块:.panel.active h3{}
目的设置样式

第九块:@media (max-width:480px){ }
CSS @规则 可用于基于一个或多个 媒体查询 的结果来应用样式表的一部分。 使用它,您可以指定一个媒体查询和一个CSS块,当且仅当该媒体查询与正在使用其内容的设备匹配时,该CSS块才能应用于该文档。

nth-of-type伪类指定一个实际参数,这个参数使用一种模式来匹配哪些元素应该被选中。

小结:CSS部分设置出现在页面的每一个要素的属性。

四、HTML部分

<!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"><link rel="stylesheet" href="style.css"/><title>探索</title>
</head>
<body><div class="container"><div class="panel active" style="background-image: url('https://images.unsplash.com/photo-1558979158-65a1eaa08691?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80');"><h3>Explore The World</h3></div><div class="panel" style="background-image: url('https://images.unsplash.com/photo-1572276596237-5db2c3e16c5d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80')"><h3>Wild Forest</h3></div><div class="panel" style="background-image: url('https://images.unsplash.com/photo-1507525428034-b723cf961d3e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1353&q=80')"><h3>Sunny Beach</h3></div><div class="panel" style="background-image: url('https://images.unsplash.com/photo-1551009175-8a68da93d5f9?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1351&q=80')"><h3>City on Winter</h3></div><div class="panel" style="background-image: url('https://images.unsplash.com/photo-1549880338-65ddcdfd017b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80')"><h3>Mountains - Clouds</h3></div></div><script src="script.js"></script></body>
</html>

代码解析

head部分引入css样式
body部分设置一个大标签,大标签内有5个小标签;

后期继续进行代码解析,加油!
转载请说明出处,谢谢!

Day1—图片动态过渡相关推荐

  1. HTML5怎么让图片和文字重叠,利用HTML5实现全屏图片文字过渡切换特效

    特效描述:利用HTML5实现 全屏图片 文字过渡 切换特效.利用HTML5实现全屏图片文字过渡切换特效 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码  Masupitami Wal ...

  2. [latex]图片动态缩放的PDF动画示例

    [latex]图片动态缩放的PDF动画示例,下面的示例主要使用ctex,animate和tikz宏包实现的. % Animated beamer frame for tikz %Author: %wu ...

  3. uni-app 背景图片动态设置

    uni-app 背景图片动态设置 <view :style="{backgroundImage:`url(${background})`}"></view> ...

  4. iphone mysql壁纸,壁纸图片动态

    壁纸图片动态软件是一款拥有超多好看壁纸的动态壁纸app.壁纸图片动态汇集了各个类型的优质壁纸素材,通过壁纸图片动态软件你可以选择各种你喜欢的动态壁纸,所有壁纸全都免费! 软件介绍 壁纸图片动态是一款超 ...

  5. html中图片动态效果代码,CSS3实现的图片动态交互效果

    CSS3实现的图片动态交互效果_网页代码站(www.webdm.cn) body { background: #cde; } .view { width: 250px; height: 167px; ...

  6. OpenCV图片动态特效显示(三)-- 平移显示及拉伸显示效果

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2927字,预计阅读8分钟 前言 前两篇的特效已经实现了展开.渐显及马赛克的实现,今天来实现图像的平移效果及通过显示窗体的函数改 ...

  7. 图片动态制作,图片动态制作软件分享。

    图片动态制作是指使用计算机软件和技术将静态图片转化为动态效果的过程.通过添加动画和特效,可以让图片变得更加生动.有趣.吸引人,并增强视觉效果.这种技术被广泛应用于电影.电视.广告.游戏.网站设计等领域 ...

  8. Nuxt3遇见的坑(四):图片动态渲染之后打包路径问题以及打包css样式问题

    Nuxt3遇见的坑(四):图片动态渲染之后打包路径问题以及打包css样式问题 图片问题 我官网有个组件是非常多的图片,大概有40多张吧,那我肯定不能一张一张去写一个img,所以我用了v-for去循环渲 ...

  9. springboot整合poi读取数据库数据和图片动态导出excel

    springboot整合poi读取数据库数据和图片动态导出excel 第一次操作 话不多说就直接上代码 实现代码 需要的依赖 <dependency><groupId>org. ...

最新文章

  1. 使用NeMo快速入门NLP、实现机器翻译任务,英伟达专家实战讲解,内附代码
  2. WIDERFACE 数据集
  3. 无限网络无限连接掉网的解决
  4. loj#2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)
  5. 无线路由器的配置实例
  6. yaf 重写index.php,php框架Yaf路由重写实例代码
  7. 分享一篇关于饿了么的需求文档
  8. 敏捷开发日常跟进系列之四:跟进表
  9. rsyslog 日志管理服务
  10. dns文件传输服务器,MOOC云计算 - DNS三部曲之DNS区域传输限制
  11. 解决AXURE RP EXTENSION FOR CHROME的快捷方法
  12. SSM项目实战之十一:用户信息的添加
  13. 什么是IAST(交互式应用安全测试)?
  14. plm服务器 硬件性能,PLM 性能问题
  15. 三十.基于国民MCU 的COMP与ADC结合的实战功能模拟案例
  16. 24岁女孩与30多岁成熟有家男人的午夜对白
  17. obs多推流地址_微信小程序直播电脑端OBS推流直播教程
  18. 因特网上的英语学习资源
  19. word标尺灰色_如何在Microsoft Word中更改标尺测量单位
  20. Python模块和文件操作

热门文章

  1. Linux C语言 创建一个简单的守护进程
  2. ad stm8l 热电偶_[转载]STM8S单片机入门3(AD转换及锂电池管理)
  3. Hadoop -- hadoop介绍
  4. 助力白纸一般的你面试——宏任务微任务
  5. 灵性图书馆:好书推荐-《把好运吸过来》
  6. The 9-th BIT Campus Programming F. 狂乱(背包)
  7. Matlab(4)矩阵
  8. 解决Android应用签名和系统不一致的问题
  9. CSS 中 a 标签为什么不能继承父类的颜色?
  10. python unpacking_Python在unpacking上的一个小陷阱