前端简单案例——扩展卡

news/2025/1/19 9:53:13/

效果展示

 色块可以替换成图片,改变background-color为background-image即可。

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"><title>扩展卡</title>
</head>
<style>.container {display: flex;justify-content: center;margin: 80px auto;width: 90vw;}.panel {background-size: cover;background-position: center;background-repeat: no-repeat;height: 80vh;border-radius: 30px;color: #fff;cursor: pointer;flex: 1;margin: 10px;/* 子绝父相 */position: relative;filter: brightness(0.5);transition: all 700ms ease-in-out, filter 300ms;}.panel h3 {opacity: 0;position: absolute;bottom: 15px;left: 20px;font-size: 30px;transition: opacity 500ms;}.panel.active {flex: 5;filter: brightness(1);}.panel.active h3 {opacity: 1;}/* 划过效果 */.panel:hover {filter: brightness(1);}
</style>
<body><div class="container"><div class="panel" style="background-color: pink;"><h3>Pink</h3></div><div class="panel" style="background-color: red;"><h3>Red</h3></div><div class="panel" style="background-color: green;"><h3>Green</h3></div><div class="panel" style="background-color: skyblue;"><h3>Skyblue</h3></div><div class="panel" style="background-color: yellow;"><h3>Yellow</h3></div></div>
</body>
<script>const ctnEl = document.querySelector('.container')// 添加事件ctnEl.addEventListener('click', function (event) {// 循环遍历子元素,给子元素移除类名activeArray.prototype.forEach.call(this.children, (el) => {   el.classList.remove('active') })// 给点击的元素添加class名 'active'event.target.classList.add('active')})
</script>
</html>

代码相关知识点

1、transition过渡

【语法】

transiton: 过渡属性 过渡所需要时间 过渡动画函数 过渡开始出现的延迟时间;

(1)过渡属性

  • 所有数值属性都可以参与过度,比如width,height,left,top,border-radius

  • 背景颜色和文字颜色都可以过渡

  • 所有变形(包括2D和3D变换)都可以过渡

(2)过度时间

指定从一个属性到另一个属性过渡所要花费的时间。默认值为0,为0时,表示变化是瞬时的,看不到过渡效果。

(3)过度动画函数

函数描述
liner匀速
ease-in减速
ease-out加速
ease-in-out先加速再减速
cubic-bezier三次贝塞尔曲线

(4)触发过渡的方式有:

:hoever、:focus、:checked、媒体查询触发、JavaScript触发

(5)局限性

transition的优点在于简单易用,但是它有几个很大的局限。

  • transition需要事件触发,所以没法在网页加载时自动发生。

  • transition是一次性的,不能重复发生,除非再次触发。

  • transition只有两个状态,开始状态和结束状态,不能定义中间状态。

  • 一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

2、event.target

指向事件发生的元素对象。event.target返回的是触发事件的对象,this返回的是绑定事件的对象。

e.target的值并不是恒定的,他可以是事件绑定的对象,也可能是事件绑定对象的子元素。

我们还可以直接获取事件dom目标的classstyleid等属性

        container.addEventListener('click', (e) => {// 给点击的元素添加class名 ’button‘e.target.classList.add('button')// 改变点击的元素的文字颜色e.target.style.color = 'red'// 获取点击的元素的id值console.log(e.target.id)})

3、Array.prototype.forEach.call(...)

继承数组的foreach方法,遍历所有的Dom节点


http://www.ppmy.cn/news/5106.html

相关文章

插入类排序

问题引入 【问题描述】 实现直接插入排序、希尔排序。 【输入形式】 输入2组待排序序列。 【输出形式】 输出分别使用插入排序、希尔排序的排序结果。 【样例输入】 5 7 3 5 0 -9 6 2 4 6 3 4 2 【样例输出】 insertSort: -9 0 3 5 7 shellSort: 2 2 3 4 4 6 程序设计 #inclu…

35-Vue之ECharts高级-样式及自适应

ECharts高级-样式及自适应前言样式直接样式高亮样式自适应前言 本篇来学习下样式及自适应的使用 样式 直接样式 这些样式一般都可以设置颜色或者背景或者字体等样式, 他们会覆盖主题中的样式 itemStyletextStylelineStyleareaStylelabel <!DOCTYPE html> <html …

【Linux】必须掌握的Linux常见指令分类讲解

目录一.Linux下的文件树二.工作目录切换命令1.ls——显示当前路径下的文件和目录2.pwd——显示当前目录的绝对值路径3.cd——切换至指定目录三.文件目录管理命令1.touch——创建空文件2.tree——树状打印目录3.mkdir——创建目录4.rmdir 和 rm ——删除目录5.cp——拷贝文件或目…

Linux基本搭建和操作

Linux基本搭建和操作1、创建三台虚拟机2、创建使用SSH远程连接3、实现IP地址与主机名的映射4、关闭和禁用防火墙5、创建目录结构6、压缩打包7、安装软件包安装jdk安装mysql8、创建脚本文件9、运行脚本文件10、免密登录配置11、远程拷贝文件1、创建三台虚拟机 序号虚拟机名称静…

手把手刷算法项目fucking-algorithm,干翻算法

今天给大家分享一个开源项目&#xff0c;在 GitHub 排行榜上今天特别火&#xff0c;都爬到了日排行榜的第二名。 大家想知道&#xff0c;面试互联网大厂&#xff0c;必面的是什么吗&#xff1f;当然是算法。作为程序员&#xff0c;互联网大厂的面试&#xff0c;算法是最重要的…

C++ Primer 第三章 Strings, Vectors, and Arrays

C Primer 第三章 Strings, Vectors, and Arrays3.1. Namespace using Declarations3.2. Library string Type3.2.1. Defining and Initializing stringsDirect and Copy Forms of Initialization3.2.2. Operations on stringsReading and Writing stringsUsing getline to Read…

关于安科瑞电气安全产品在医药工业洁净厂房的电气工程设计与应用

摘要&#xff1a; 近年来&#xff0c;医药工业洁净厂房的电气工程设计得到了快速发展和广泛关注&#xff0c;研究其相关课题有着重要意义。首先介绍了供电系统与配电设备的设置&#xff0c;分析了洁净厂房的电气照明设计&#xff0c;并结合相关实践经验&#xff0c;从探测器选…

doris入门后遇到的几个问题总结

文章目录1. Access denied for user anonymnull (using password: NO)2. timeout when waiting for send fragments RPC. Wait(sec): 5, host: xxx(ip)3. Failed to initialize JNI: Failed to find the library libjvm.so.4. 从mysql库导出的json文件大于100M时报错5. csv格式…