【HTML】模拟消息折叠效果【附源代码】

news2024/9/27 6:47:20
文件结构

在这里插入图片描述

收起效果

在这里插入图片描述

展开效果

在这里插入图片描述

HTML部分

HTML部分定义了网页的结构和内容。

  • <!DOCTYPE html> 声明了文档类型和HTML版本。
  • <html> 元素是所有其他HTML元素的父元素。
  • <head> 元素包含了文档的元数据,如字符集、视口设置、标题和链接的样式表。
  • <body> 元素包含了可见的页面内容。
  • <ul><li> 元素创建了一个无序列表,用于显示消息。
  • <div> 元素用于分组内容,如消息的标题和时间。
  • <i> 元素用于显示图标字体。
  • <h4><div> 元素分别用于显示消息的发送者和消息内容。

CSS部分

CSS部分定义了网页的外观和样式。

  • * 选择器设置所有元素的默认边距、填充和盒模型。
  • body 选择器设置了页面的整体布局和背景。
  • ul 选择器设置了列表的宽度、3D变换样式和光标样式。
  • ul li 选择器设置了列表项的定位、外观和过渡效果。
  • ul li .title 选择器设置了消息标题的布局。
  • ul li .title iul li .title .time 选择器分别设置了图标和时间的样式。
  • ul li:nth-child() 选择器通过使用:nth-child伪类选择器,为不同的列表项设置不同的层叠上下文、透明度、变换和背景透明度,以创建3D堆叠效果。
  • ul.active liul.active li:nth-child() 选择器通过添加.active类到<ul>元素上,改变列表项的颜色、背景和位置,以实现折叠和展开效果。

JavaScript部分

JavaScript部分负责页面的交互性。

  • const ul = document.querySelector("ul") 通过document.querySelector方法获取页面中的<ul>元素。
  • ul.addEventListener('click', () => { ... })<ul>元素添加一个点击事件监听器,当<ul>被点击时,会执行一个匿名函数。
  • ul.classList.toggle('active') 在点击事件发生时,通过classList.toggle方法切换<ul>元素的active类。如果<ul>元素已经有active类,它会移除这个类;如果没有,它会添加这个类。这个操作会触发CSS中定义的折叠和展开效果。

Html 部分

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>模拟消息折叠效果</title>
    <link rel="stylesheet" href="./fonts/iconfont.css">
    <link rel="stylesheet" href="./style.css">
</head>

<body>
    <ul>
        <li>
            <div class="title">
                <div>
                    <i class="iconfont icon-weixin"></i> 微信
                </div>
                <div class="time">30分钟前</div>
            </div>
            <h4>D</h4>
            <div>Hello</div>
        </li>
        <li>
            <div class="title">
                <div>
                    <i class="iconfont icon-weixin"></i> 微信
                </div>
                <div class="time">50分钟前</div>
            </div>
            <h4>C</h4>
            <div>Hello</div>
        </li>
        <li>
            <div class="title">
                <div>
                    <i class="iconfont icon-weixin"></i> 微信
                </div>
                <div class="time">1小时前</div>
            </div>
            <h4>B</h4>
            <div>Hello</div>
        </li>
        <li>
            <div class="title">
                <div>
                    <i class="iconfont icon-weixin"></i> 微信
                </div>
                <div class="time">2小时前</div>
            </div>
            <h4>A</h4>
            <div>Hello</div>
        </li>
    </ul>

    <script src="./style.js"></script>

</body>

</html>

CSS 部分

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

ul {
    list-style: none;
}

body {
    display: flex;
    height: 100vh;
    justify-content: center;
    padding-top: 80px;
    background-size: cover;
    perspective: 1000px;
}

ul {
    position: relative;
    width: 400px;
    transform-style: preserve-3d;
    cursor: pointer;
}

ul li {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    padding: 12px;
    background: rgba(255, 255, 255, .7);
    border-radius: 15px;
    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .05);
    backdrop-filter: blur(20px);
    transition: .6s;
}

ul li .title {
    display: flex;
    justify-content: space-between;
}

ul li .title i {
    font-size: 18px;
    color: #4acfae;
}

ul li .title .time {
    color: #666;
}

ul li:nth-child(2) {
    z-index: -1;
    color: transparent;
    transform: translateY(8px) translateZ(-24px);
    background: rgba(255, 255, 255, .6);
}

ul li:nth-child(3) {
    z-index: -2;
    color: transparent;
    transform: translateY(16px) translateZ(-48px);
    background: rgba(255, 255, 255, .5);
}

ul li:nth-child(4) {
    z-index: -3;
    color: transparent;
    transform: translateY(24px) translateZ(-72px);
}

ul.active li {
    color: #000;
    background: rgba(255, 255, 255, .7);
}

ul.active li:nth-child(2) {
    transform: translateY(calc(100% + 8px));
}

ul.active li:nth-child(3) {
    transform: translateY(calc(200% + 16px));
}

ul.active li:nth-child(4) {
    transform: translateY(calc(300% + 24px));
}

JavaScript 部分

const ul = document.querySelector("ul")
ul.addEventListener('click', () => {
    ul.classList.toggle('active')
})

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

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

相关文章

高效又经济,乔拓云助力,快速上线功能全面的小程序解决方案

乔拓云模板化小程序开发费用 在当今数字化时代&#xff0c;小程序成为企业拓展市场的新利器。乔拓云平台提供模板化开发方案&#xff0c;让您的小程序能同时覆盖微信与百度&#xff0c;迅速触达更多用户。 选择乔拓云模板&#xff0c;无需从零开始设计&#xff0c;直接复用精美…

ssrf+redis未授权访问漏洞复现

目录 靶场搭建 报错问题解决 组合利用 使用goherus生成payload 靶场搭建 首先我们进入ubutuo拉取靶场 docker run -d -p 8765:80 8023/pikachu-expect:latest 报错问题解决 如果出现docker报错&#xff0c;靶场一直拉取不下来 解决办法&#xff1a;配置镜像加速器 vim /et…

二叉树中查找值为x的节点(递归查找)

一&#xff1a;前提 本文紧接此篇博客&#xff1a; 递归实现 前/中/后序 遍历二叉树 的详细讲解-CSDN博客 模型依旧为&#xff1a; 二&#xff1a;代码 三&#xff1a;递归展开 假设找3&#xff1a; 假设找 7,7不存在&#xff0c;最后返回NULL 左&#xff1a; 右&#xff1…

机器学习 第5章 神经网络

这里写目录标题 5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 其他常见神经网络5.4.1 RBF网络5.4.2 ART网络5.4.3 SOM网络5.4.4 级联相关网络 5.5 深度学习 5.1 神经元模型 神经网络是一种由神经元构成的计算模型&#xff0c;模拟了生物神经系统的工作原理。神经…

【MySQL】优化 - 深分页

深分页 问题优化方法子查询延迟关联游标 问题 就是查询偏移量过大的场景&#xff0c;会导致查询性能较低&#xff0c;例如 # MySQL 在无法利用索引的情况下跳过1000000条记录后&#xff0c;再获取10条记录 SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10首先&#xff…

嵌入式:用J-Link Commander和J-Flash进行Flash编程的区别

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 J-Link Commander和J-Flash都是用于Flash编程的工具&#xff0c;但它们的功能和应用场景有所不同。以下是两者的区别&#xff1a; J-Link Commander: 类型: 命令行工…

.NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强

DevExpress XAF是一款强大的现代应用程序框架&#xff0c;允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计&#xff0c;开发人员可以选择内建模块&#xff0c;也可以自行创建&#xff0c;从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 在DevEx…

为什么说中医的本质是医“中”

日前&#xff0c;与一位懂中医的朋友朋友聊天&#xff0c;他言简意赅地指出“中医的本质就是医‘中’”。反思后总结如下&#xff0c;以飨读者&#xff0c;同时欢迎批评指正&#xff01; “中医的本质是医‘中’”强调了中医的核心在于其整体观和辩证方法。中医“中”的本质在于…

【OAuth2】为什么授权码模式更安全?为什么使用授权码比直接返回token更安全?

OAuth2 什么是OAuth2OAuth2的主要角色OAuth2的工作原理OAuth2的授权模式为什么授权码模式更安全&#xff1f; 什么是OAuth2 简而言之&#xff1a;安全的用你的其他账号登陆一个新网站&#xff08;甚至访问你在其他网站上存储的私密资源&#xff08;如头像、照片等&#xff09;…

金融大模型:数据治理与AI应用创新的新时代

金融大模型&#xff1a;数据治理与AI应用创新的新时代 前言金融数据治理与应用创新的新时代 前言 在当今数字化飞速发展的时代&#xff0c;金融行业也在经历着深刻的变革。金融大模型作为一种新兴的技术力量&#xff0c;正在逐渐改变着金融数据的治理和应用方式。它不仅为金融…

利用机器学习推动 vSOC 检测

我们讨论了汽车 API 如何成为智能移动生态系统的主要攻击媒介之一。与此相关的风险是显而易见的。如果威胁行为者能够大规模远程利用 API,他们将有能力损害品牌或提出赎金请求。当然,Splunk 平台的强大之处在于能够从任何数据大规模创建任何用例。在本博客中,我们将深入研究…

使用python基于fastapi发布接口(二)-连接mysql数据库查询数据

上一章在这里 操作 MySQL 数据库使用 mysql-connector-python 库 安装mysql-connector-python pip install mysql-connector-python 代码编写在原来代码基础上添加数据库连接配置 from typing import Union from fastapi import FastAPIapp = FastAPI(

【Qt】常见控件 —— QPushButton | QRadioButton

文章目录 QPushButtonQPushButton 的基本功能介绍QPushButton 添加快捷键通过图片实现 上下左右实现方向键的槽函数设置快捷键连发功能 QRadioButtonQRadioButton 的基本功能介绍通过 QRadioButton 选择性别具有排他效果禁用 选项 槽函数的使用情况基于 QRadioButton 实现一个简…

用AppleScript做macOS UI自动化

用AppleScript做macOS UI自动化 一、定位到System Setting → General → Login Items& Extensions 页面1. 获取页面锚点&#xff0c;以便直接滑动到锚点区域2. 滑动到Extensions 区域 二、根据名称找到元素&#xff0c;再点击元素的按钮三、获取元素位置并点击 一、定位到…

人工智能边缘计算应用教学解决方案

一、引言 随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;数据生成量呈爆炸式增长&#xff0c;对数据处理速度、实时性和隐私保护的需求日益迫切。在此背景下&#xff0c;人工智能&#xff08;AI&#xff09;与边缘计算的结合成为了解决这一挑战的关键技术路…

牛客周赛 Round 57 解题报告 | 珂学家

前言 题解 难度比较适宜&#xff0c;这场周赛出的不错。 A. 小红喜欢1 题型: 签到语法 arr list(map(int, input().split()))print (arr.index(1) 1)B. 小红的树切割 思路&#xff1a;思维 统计边两端为同一颜色的边数即可 n int(input())s input()res 0 for i in r…

python爬虫,使用pyppeteer异步,爬取,获得指定标签内容

获得指定 #pip install pyppeteer,使用 Pyppeteer&#xff08;异步方案&#xff09; import asyncio from pyppeteer import launch async def main():browser await launch()page await browser.newPage()await page.goto(http://xxx/#/login)# 等待页面加载完成await page…

企业本地部署大型语言模型(LLMs)构建本地垂直领域知识库的策略|空天防御

0 引言 在数字化转型的浪潮中&#xff0c;传统企业面临着前所未有的机遇与挑战。随着大数据、云计算和人工智能技术的发展&#xff0c;企业积累的私有数据成为了潜在的金矿&#xff0c;等待着被挖掘和利用。大型语言模型&#xff08;LLMs&#xff09;作为当前人工智能领域的前…

基于深度学习的手势识别系统

基于深度学习网络的手势识别系统 完整源码数据集报告PPT全套信息 【python设计开发】基于深度学习的手势图像识别处理系统 【包括】代码 PPT 报告 2 需求分析 2.1要求 &#xff08;1&#xff09;用Python语言实现程序设计&#xff1b; &#xff08;2&#xff09;初识深度学习…

个人网站无缝切换图片格式到 webp 或 avif

当你点进来&#xff0c;恭喜你来对地方了&#xff0c;我写的东西从来都是小白向的&#xff08;把自己当小白&#xff09;&#xff0c;不会故作厉害写的云里雾里让人看不懂&#xff0c;既然发出来就会有人看到&#xff0c;不是每个人都是程序员懂技术的。 项目 为什么图片格式要…