前端简单案例——扩展卡

news2025/2/1 2:59:43

效果展示

 色块可以替换成图片,改变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) {
      // 循环遍历子元素,给子元素移除类名active
      Array.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.coloradmin.cn/o/104540.html

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

相关文章

图片加载引入的内存溢出问题分析

Android ImageView进行图片加载时&#xff0c;经常会遇到内存溢出的问题&#xff0c;本文针对于这一问题出现的定义、原理、过程、解决方案做统一总结。 1.一些定义 在分析具体问题之前&#xff0c;我们先了解一些基本概念&#xff0c;这样可以帮助理解后面的原理部分。当然了…

实时通讯技术Ajax,WebSocket,SSE

实时通讯技术是一项基于web开发的重要技术&#xff0c;网站是需要前后端通讯的&#xff0c;因此数据刷新的时间就是获取信息的时间&#xff0c;为了能准确而有快速的获取信息需要尽可能的提高信息的刷新效率。 常见的实时通讯技术&#xff1a; 通讯方式AjaxCometWebSocketSSE…

从0到1学会开发前端脚手架

【课程简介】 在前端开发中经常会用到create-vue, create-react-app这类脚手架&#xff0c;它可以帮助我们快速生成一个配置化的项目&#xff0c;提高开发效率。现在很多大厂都有自己研发的脚手架&#xff0c;掌握脚手架的使用&#xff0c;并且自己能开发脚手架&#xff0c;能…

涵盖全场景构建方方面面!魅族2023-2025年产品矩阵曝光

在万物互联的时代大背景下&#xff0c;一众以智能手机闻名的科技厂商们开始了全场景概念上的推进构建&#xff0c;形如早前作为国产智能手机「领头羊」的老牌手机厂商魅族&#xff0c;就在近日公布了2023-2025年全场景多终端沉浸式的全方位产品矩阵。 从中可以看到&#xff0c…

解读最佳实践:倚天 710 ARM 芯片的 Python+AI 算力优化 | 龙蜥技术

编者按&#xff1a;在刚刚结束的 PyCon China 2022 大会上&#xff0c;龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲&#xff0c;作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作&#xff0c;以及在 ARM 云平台…

SCI 论文插图格式一般要求

插图是反映 SCI 文章品质的核心指标之一&#xff01;&#xff01;&#xff01; 图片格式要求:图片一般可以保存为TIFF、JPEG、EPS这三种常见格式,并存为独立文件。 二、图片色彩要求:一般要求为CMYK或RGB色彩。 1.尺寸符合杂志社的要求(宽度8.3~17.6厘米,高度一般不超过20厘米…

云服务下半场,企业增长的超级入口在哪?

随着数字技术的加速突破以及相关鼓励政策的出台&#xff0c;云服务市场正在进入爆发性增长阶段。 在市场、政策的双轮驱动下IT架构转型已是大势所向&#xff0c;而作为时代命题&#xff0c;传统厂商们如果还无法让市场看到转型的成果和信心&#xff0c;或将逐渐在市场端失去选…

专访实在智能孙林君:颠覆传统RPA的实在IPA模式,如何做到真正人人可用?

文/王吉伟 “RPA人人可用”这个愿景&#xff0c;在一线大厂提出后立即得到广大厂商的认同与推崇&#xff0c;之后它几乎成了所有厂商的“口头禅”。 如果RPA能够消除使用门槛实现真正人人可用&#xff0c;意味着每个组织都能通过引入RPA快速通过流程自动化快速实现增效降本。…

正大周二数据 产品介绍 主账户怎么拿到留4的条件?

《今日关注数据》 09:15 中国至12月20日一年期贷款市场报价利率 17:00 欧元区10月季调后经常帐(亿欧元) 21:30 加拿大10月零售销售月率 21:30 美国11月新屋开工总数年化(万户) 21:30 美国11月营建许可总数(万户) 美国银行在报告中指出&#xff0c;儘管美联准会 (Fed) 最近…

OLAP系统林林总总

大数据需求通常可分为三大类&#xff1a;离线数据统计&#xff0c;实时数据计算&#xff0c;即席查询。 离线数据统计&#xff0c;通常是T1出数&#xff0c;是最典型的数据仓库解决的问题。计算复杂性最高&#xff0c;所以是时间就不能要求太高&#xff0c;否则对资源的要求将…

【OpenFeign】【源码+图解】【三】FeignClient的配置信息

【OpenFeign】【源码图解】【二】注册OpenFeign接口的实例 目录4. FeignClient的配置信息4.1 FeignClientFactoryBean4.2 FeignClientFactoryBean.getObject()4.2.1 FeignContext4.2.2 Feign.Builder4.2.2.1 Bean的配置方式YMLFeignClient.configurationEnableFeignClients.def…

5.Node中的模块

目录 1 模块化 2 加载模块 3 模块作用域 4 module对象 4.1 初识module对象 4.2 module.exports 4.2.1 module.exports与require() 4.2.2 添加变量与方法 5 exports对象 5.1 初识exports对象 5.2 添加变量与方法 1 模块化 向我们之前引入的 fs,path,htt…

Baklib|为什么说企业需要重视客户体验?

数十年来&#xff0c;人们都在寻求使自己的品牌获得成功的秘密&#xff0c;企业和品牌也在不断地想着怎样在竞争中胜出&#xff0c;从而获得顾客的青睐。 有些公司已经竭尽全力争取顾客的信赖&#xff0c;并竭力争取更多的市场份额。 但是&#xff0c;即便那些著名的公司不会…

5G无线技术基础自学系列 | RF优化原理

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 RF优化主要是依据各种收集到的数据&…

C++ Primer 第五章 Statements

C Primer 第五章 Statements5.3. Conditional Statements5.3.2. The switch Statement5.4. Iterative Statements5.4.3. Range for Statement5.6. try Blocks and Exception Handling5.6.1. A throw Expression5.6.2. The try Block5.6.3. Standard Exceptions5.3. Conditional…

【传递窗】洁净区与非洁净室之间的传递

广州特耐苏净化设备有限公司详细介绍&#xff1a;传递窗分类及安装与使用方法 传递窗是一种洁净室的辅助设备&#xff0c;用于不同的洁净区之间&#xff0c;洁净区与非洁净区之间小物件的传递&#xff0c;具有气闸的作用&#xff0c;防止非洁净的空气进入洁净室。同时&#xf…

git cherry-pick 同步修改到另一个分支

我们在开发中有时会遇到&#xff0c;需要将另一个分支部分修改同步到当前分支。 如下图&#xff0c;想把 devA 分支中 commit E 和 F&#xff0c;同步到下面绿色的 devB 分支中。 这时候就可以使用 git cherry-pick 来完成这项任务。 &#xff08;cherry-pick 有筛选、精选的…

音视频开发——H265码流解析

概述 H.265技术的应用 编码技术主要运用于视频播放设备、软件应用以及拍摄、录制视频的设备。人们最熟悉的莫过于PPS网络视频播放器。在PC屏客户端产品上面&#xff0c;PPS已经于2013年初推出了基于H.265标准的高清视频&#xff0c;并命名“臻高清”为自己的高清品牌。同时 P…

极限一个月,突破Java高频面试题和核心技术,跳槽涨薪6K

前言 先说一下我的情况&#xff0c;双非本科毕业后就在几家小公司工作了3年&#xff0c;5月份的时候有去大厂面试过&#xff0c;结果都是凉凉&#xff0c;下面会跟大家分享一下我的经验以及建议。 有的朋友可能会认为学历是自己的问题&#xff0c;面试官连简历都不会看。其实…

Java Stream 编程

Java Stream 编程 教程&#xff1a;https://www.bilibili.com/video/BV1te411w722 1. 不可变集合 1.1 不可变集合应用场景 元数据&#xff0c;只允许查询的数据集合 1.2 创建不可变集合 List、Set、Map 接口中的静态方法 of() List<String> list List.of("张…