HTML和CSS做一个无脚本的手风琴页面(保姆级)

一、前言

使用HTML和CSS做一个无脚本的手风琴页面。让知识以自己喜欢的方式进入脑子,适用于很多场景,比如以下:
【注:图片源自百度】
在这里插入图片描述

手风琴页面

二、HTML框架

使用外部样式表,将CSS文件用link标签引入

整体框架如下图:

框架

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>My_First</title><!-- 将css引入 --><link rel="stylesheet" href="./style.css"></head>
<body><section class="container"><div class="category_container"><div class="content"><img src="./painter.jpg" alt="painter" class="professio_image"><img src="./painter2.jpg" alt="painter2" class="profile_image"><div class="profile_detail"><span>Painter Qi Yu</span><p>"Lemuria's greatest painter"</p></div><div class="wrapper"><div class="profile_quote"><p>"Put the love I feel on paper, trace my bodyguard lady, you are my Muse goddess."</p></div></div></div><div class="content"><img src="./photographer.jpg" alt="photographer" class="professio_image"><img src="./photographer2.jpg" alt="photographer2" class="profile_image"><div class="profile_detail"><span>Photographer Qi Yu</span><p>The bodyguard lady's own photographer</p></div><div class="wrapper"><div class="profile_quote"><p>"You promise me: I will never let Qi Yu wait for me again."</p></div></div></div><div class="content"><img src="./sculptor.jpg" alt="sculptor" class="professio_image"><img src="./scluptor2.jpg" alt="scluptor2" class="profile_image"><div class="profile_detail"><span>Sculptor Qi Yu</span><p>For you to trace, shine</p></div><div class="wrapper"><div class="profile_quote"><p>"You are the bride of the only sea god in Lemuria, and I will paint your face."</p></div></div></div></div></section>
</body>
</html>

三、CSS装饰

1.全局设置

在谷歌字体库中导入合适的字体

@import url("https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap");

谷歌字体库

使用通配符选择器,将所有元素的内边距和外边距重置为0;

指定body部分使用导入的Inter字体;

使用CSS变量定义两个颜色变量,浅色和深色

/*通配符选择器,查找页面所有标签设置相同样式*/
* {padding: 0;margin: 0;box-sizing: border-box;
}/*指定body部分使用导入的Inter字体,备用字体sans-serif*/
body {font-family: "Inter", sans-serif;
}/*使用CSS变量定义两个颜色变量,浅色和深色*/
:root {--light: #ffe6e6;--dark: #0c0c0c;
}

浅色
深色

补充:选择器

  • 标签选择器:使用标签名作为选择器,选中同名标签设置相同的样式

  • 类选择器:查找标签,差异化设置标签的显示效果,一个类选择器可以定义多个标签,一个标签允许加多个class属性

  • id选择器:查找标签,差异化设置标签的显示效果,一般与JS配合使用,很少使用CSS样式

  • 通配符选择器:查找页面所有标签,设置相同样式,注意不需要调用,浏览器自动查找页面所有标签,设置相同的格式

    使用场景:在制作网页的初期,清楚标签默认样式,便于后续个性化设置。

2.盒子设置

/* 定义container类选择器 */
.container {/* 一个径向渐变背景*/--bg-color: radial-gradient(circle at 50% 0%,rgba(50, 50, 50, 1) 0%,rgba(12, 12, 12, 1) 100%);/* 限制子元素溢出部分*/overflow: clip;position: relative;/*一个弹性盒子模型布局,子元素会居中对齐*/display: flex;justify-content: center;align-items: center;padding: 2rem 5rem;width: 100%;/* 容器的高度是设备屏幕视口的100%高度*/height: 100dvh;background-image: var(--bg-color);
}/*  定义category_container类选择器*/
.category_container {--gap: 0.5rem;display: flex;justify-content: space-between;align-items: center;flex-wrap: nowrap;/*  定义了子元素之间的间距*/gap: calc(var(--gap) * 2);width: 100%;height: 100%;
}/* 定义content类选择器*/
.content {/* 定义初始状态为非活动的变量*/--active: 0;cursor: pointer;overflow: clip;position: relative;z-index: 10;display: flex;/*  子元素垂直排列 */flex-direction: column;justify-content: flex-end;gap: 1.5rem;padding: 2.5rem;/* 宽度为容器的三分之一,设置动画效果,宽度在鼠标悬停时会变化*/width: calc((100% / 3) - var(--gap));height: 100%;border-radius: 1rem;transition: width 0.5s ease-in-out;
}/* 当鼠标悬停在.content元素上,--active变为1,content元素的宽度扩大到容器的70% */
.content:hover {--active: 1;width: calc(70% - var(--gap));
}/* content伪类选择器,用之前定义的深色覆盖整个.content区域,并设置为半透明 */
.content::before {content: "";position: absolute;z-index: -10;top: 0;left: 0;width: 100%;height: 100%;background-color: var(--dark);opacity: 0.6;
}

3.图片设置

/* 设置背景图片,覆盖整个容器,图片根据容器尺寸裁剪,居中显示 */
.content img {position: absolute;z-index: -20;top: 0;left: 0;width: 100%;height: 100%;-o-object-fit: cover;object-fit: cover;-o-object-position: center;object-position: center;
}/* profile_image的透明度随着--active状态变化,鼠标悬停时图片逐渐变成透明度为0*/
.content .profile_image {opacity: calc(1 - var(--active));transition: opacity 0.3s ease-in-out;
}

4.段内设置

/* 包含span、p标签,设置个人信息,垂直排列,子元素之间的间距,并有动画效果*/
.profile_detail {display: flex;flex-direction: column;gap: 0.5rem;width: 12rem;transition: transform 0.5s cubic-bezier(0.23, 0.93, 0.77, 1) 0.01s;
}.profile_detail span {font-size: 1.5rem;font-weight: 600;color: var(--light);text-wrap: nowrap;
}.profile_detail p {font-size: 0.75rem;font-weight: 500;color: var(--light);
}/* 个人引用处的文本块,鼠标悬停时会向上移动并显示 */
.profile_quote {width: 22rem;transform: translate(0, calc((1 - var(--active)) * (100% + 2.5rem)));
}.profile_quote p {font-size: 1.5rem;font-weight: 600;color: var(--light);transform: translate(0, calc((1 - var(--active)) * (100% + 2.5rem)));transition: transform 0.5s cubic-bezier(0.23, 0.93, 0.77, 1) 0.1s;
}/* 通过grid布局,默认grid-template-rows为0,隐藏内容,当鼠标悬停时,展开并显示内容 */
.wrapper {display: grid;grid-template-rows: 0fr;overflow: hidden;transition: grid-template-rows 0.5s cubic-bezier(0.23, 0.93, 0.77, 1) 0.01s;transition: grid-template-rows 0.5s cubic-bezier(0.23, 0.93, 0.77, 1) 0.01s, -ms-grid-rows 0.5s cubic-bezier(0.23, 0.93, 0.77, 1) 0.01s;
}.profile_quote {min-height: 0;transform: translateY(50%);opacity: 0;transition: opacity 0.8s ease-in-out, transform 0.8s cubic-bezier(0.23, 0.93, 0.77, 1) 0.01s;
}.content:hover .wrapper {grid-template-rows: 1fr;
}.content:hover .profile_quote {transform: none;opacity: 1;
}/* 作为弹窗显示,背景透明,文字颜色为白色,没有边框*/
dialog {position: absolute;z-index: 1;background: none;color: white;border: 0;font-size: 0.8rem;padding: 0.5em;
}dialog a {color: whitesmoke;
}

四、最终效果

最终效果

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

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

相关文章

20240923 每日AI必读资讯

GPT-4o能玩《黑神话》&#xff01;精英怪胜率超人类&#xff0c;无强化学习纯大模型方案 - 阿里巴巴的研究人员们提出了一个新型VARP&#xff08;视觉动作角色扮演&#xff09;智能体框架。 - 能直接将游戏截图作为输入&#xff0c;通过视觉语言模型推理&#xff0c;最终生成…

WebGL颜色与纹理

WEBGL中的着色器变量包括以下种类&#xff1a; 属性变量&#xff08;Attribute Variables&#xff09;&#xff1a;这些变量用于接收从应用程序中传递的顶点数据&#xff0c;比如顶点位置和颜色&#xff0c;是只读的不可修改。统一变量&#xff08;Uniform Variables&#xff…

STM32篇:开发环境安装

编程语言&#xff1a;C语言 需要安装的软件有两个&#xff1a;Keil5 和 STM32CubeMX 一.Keil5 的安装 使用 Keil4 写 STM32 代码其实也是可以&#xff0c;但需要很复杂的配置&#xff0c;不建议新手操作。 比较推荐 Keil5 编写 STM32 &#xff0c;只需要一些简单的设置就可…

定了,东湖高新区下半年中高级职称申报时间

2024年东湖高新区中级职称申报开始了&#xff0c;水测成绩上周已出&#xff0c;本周已经开始申报了&#xff0c;时间确实挺着急的。 报送材料起止时间及地点&#xff1a; &#xff08;一&#xff09;网上报名时间&#xff1a; 2024年9月14日至9月30日24:00 &#xff08;二&…

C++ | Leetcode C++题解之第429题N叉树的层序遍历

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> levelOrder(Node* root) {if (!root) {return {};}vector<vector<int>> ans;queue<Node*> q;q.push(root);while (!q.empty()) {int cnt q.size();vector<…

C/C++中的内存管理

文章目录 前言一、C/C中的内存分布二、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 三、C中的内存管理方式四、operator new与operator delete函数五、new和delete的实现原理 六、定位new表达式(placement-new) 七、malloc/free和new/delete的区别 总结 前…

django学习入门系列之第十点《A 案例: 员工管理系统15》

文章目录 15 认识Ajax15.4 ajax请求的返回值实例2&#xff1a;前端输入数据提交到后端实例3&#xff1a;传输多个数据 往期回顾 15 认识Ajax 15.4 ajax请求的返回值 一般数据交互整合的都是json格式 后端一般会返回一个JSON格式 返回json格式一般有以下两种写法 上面注释的…

【全网最全】2024年华为杯研究生数学建模A题成品论文

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 点击链接获取群聊【2024华为杯研赛资料汇总】&#xff1a;https://qm.qq.com/q/yB6JDUTaWAhttps://qm.qq.com/q/yB6JDUTaWAA题第一问是关于如何建立一个低复杂度模型&a…

Java--File

FIle 概述 File的构造方法 > 1. 一个File对象代表硬盘中实际存在的一个文件或者目录。 > 2. 无论该路径下是否存在文件或者目录&#xff0c;都不影响File对象的创建。 代码演示&#xff1a; // 文件路径名 String pathname "D:\\aaa.txt"; File file1 new …

一些迷你型信息系统 - 2

1 Linux内核数据结构信息查询 Linux内核的数据结构众多&#xff0c;成千上万&#xff0c;做一个程序来存储查询信息&#xff1b;自己录入数据&#xff1b; 代码字段最长可录入65535个字符&#xff1b;每个字段录入时长度超限会有红色告警&#xff1b; 其他的以后想到再做&#…

5分钟快速制作高质量、美观的Excel甘特图

你是否还在为如何制作甘特图而感到苦恼&#xff1f; 是否因为甘特图制作过程繁琐、耗时过长而影响了你的工作效率&#xff1f; 是否每当任务计划发生变更时&#xff0c;都需要反复重新绘制甘特图&#xff0c;让你感到疲惫不堪&#xff1f; 又或者&#xff0c;你是否一直渴望…

【AI算法岗面试八股面经【超全整理】——NLP】

AI算法岗面试八股面经【超全整理】 概率论【AI算法岗面试八股面经【超全整理】——概率论】信息论【AI算法岗面试八股面经【超全整理】——信息论】机器学习【AI算法岗面试八股面经【超全整理】——机器学习】深度学习【AI算法岗面试八股面经【超全整理】——深度学习】NLP【A…

cmd快速进入文件夹目录下

首先&#xff0c;将文件夹直接点击左键拖动至cmd窗口中&#xff0c;就可以得到目录路径。 还有就是&#xff0c;在命令行直接敲入D:或者C:就可以在磁盘之间进行转换&#xff0c;注意冒号不要丢。 再有&#xff0c;如果进入某磁盘中的一个文件夹&#xff0c;使用cd命令。路径获取…

新质农业——水肥一体化技术

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、埃域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

开机容易关机难?合宙Air201资产定位模组LuatOS的PWRKEY控制来实现!

关于合宙Air201&#xff0c;我们已经发布了5期基础知识啦&#xff01;你是不是已经都学会了&#xff1f; 来来来&#xff0c;我们继续高阶学习&#xff1a;合宙Air201应用示例——PWRKEY控制关机功能 PWRKEY控制关机功能 合宙Air201资产定位模组——是一个集成超低功耗4G通信…

命名管道详解

命名管道 匿名管道应用的限制就是只能在具有共同祖先的进程间通信。如果我们想要在不相关的进程之间交换数据&#xff0c;可以使用使用FIFO文件来做这项工作&#xff0c;它被称为命名管道。命名管道是一种特殊类型的文件。 mkfifo函数 命名管道可以从命名行上创建&#xff0c…

iOS V2签名网站系统源码,开源免授权(含视频教程)

这是一款iOS签名站的开源源码&#xff0c;免去了授权&#xff0c;它支持UDID获取、软件选择以及签名码功能。 同时&#xff0c;用户可以多开APP进行安装。这是一个自主可下载的版本&#xff0c;感兴趣的用户可以自行获取。 源码下载&#xff1a;https://download.csdn.net/do…

云和恩墨携手华为,发布zCloud数据库备份管理一体机并宣布共建数据保护生态...

为期三天的第九届华为全联接大会&#xff08;HUAWEI CONNECT 2024&#xff09;于9月19日在上海世博中心&展览馆盛大召开。20日下午&#xff0c;一场围绕“全场景数据保护&#xff0c;护航数智化时代”的专题论坛举办&#xff0c;云和恩墨受邀参加&#xff0c;并期待与华为合…

【Linux的进程管理】

进程管理 Linux的进程进程的管理进程的状态不同状态的进程由不同的功能的链表进行管理Linux的进程切换和进程上下文进程调度抢占和非抢占式调度调度算法先来先服务CPU密集和I/O密集 最短作业优先调度算法高响应比优先调度算法时间片轮转调度算法时间片的长度设置 最高优先级调度…

ava总结篇系列:Java泛型Java sort用法详解

一. 泛型概念的提出&#xff08;为什么需要泛型&#xff09;&#xff1f; 首先&#xff0c;我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list new ArrayList(); 5 list.add(&q…