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

news/2024/9/28 3:48:18/

一、前言

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

手风琴页面

二、HTML框架

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

整体框架如下图:

框架

html"><!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><link rel="stylesheet" href="./style.css"></head>
<body><section class="container"><div class="category_container"><div class="content"><img src="./5t51.jpg" alt="5t51" class="professio_image"><img src="./5t52.jpg" alt="5t52" class="profile_image"><div class="profile_detail"><span>五条悟</span><p>特级咒术师,术式:无下限</p></div><div class="wrapper"><div class="profile_quote"><p>"大丈夫、僕 最強だから;"</p></div></div></div><div class="content"><img src="./gjj1.jpg" alt="gjj1" class="professio_image"><img src="./gjj2.jpg" alt="gjj2" class="profile_image"><div class="profile_detail"><span>狗卷棘</span><p>准一级咒术师,术式:咒言</p></div><div class="wrapper"><div class="profile_quote"><p>"鲑鱼,鲑鱼子,木鱼花,明太子"</p></div></div></div><div class="content"><img src="./xyj1.jpg" alt="xyj1" class="professio_image"><img src="./xyj2.jpg" alt="xyj2" class="profile_image"><div class="profile_detail"><span>夏油杰</span><p>特级咒术师,术式:咒灵操术</p></div><div class="wrapper"><div class="profile_quote"><p>"悟、弱い者イジメはよくないよ"</p></div></div></div></div></section></body>
</html>

三、CSS装饰

1.全局设置

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

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

谷歌字体库

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

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

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

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.盒子设置

css">/* 定义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.图片设置

css">/* 设置背景图片,覆盖整个容器,图片根据容器尺寸裁剪,居中显示 */
.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.段内设置

css">/* 包含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.ppmy.cn/news/1531434.html

相关文章

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(二)-索引

场景 首先介绍测试的场景&#xff0c;本系列schema定义 pdm文档索引&#xff0c;包括nested&#xff0c;作为文档扩展属性字段&#xff0c;_content字段是组件保留字段&#xff0c;支持文本内容&#xff0c;字段属性还有其他属性&#xff0c;如boost&#xff0c;getter&#x…

【第十五章:Sentosa_DSML社区版-机器学习之关联规则】

目录 15.1 频繁模式增长 15.2 PrefixSpan 【第十五章&#xff1a;Sentosa_DSML社区版-机器学习之关联规则】 机器学习关联规则是一种用于发现数据集中项之间有趣关系的方法。它基于统计和概率理论&#xff0c;通过分析大量数据来识别项之间的频繁共现模式。 15.1 频繁模式增…

国产数据库盘点-亚信安慧AntDB极简模式部署

本章节主要介绍 AntDB 集中式极简模式部署的方法。 解压安装包 以 AntDB 7.2 版本的安装包 antdb-t-ee-release-7.2.generic.* 举例。 将安装包&#xff08;antdb-t-ee-release-7.2.generic.*&#xff09;拷贝到 AntDB 用户&#xff08;如&#xff1a;antdb&#xff09;的目…

AWS Network Firewall -NAT网关配置只应许白名单域名出入站

1. 创建防火墙 选择防火墙的归属子网(选择公有子网) 2. 创建规则白名单域名放行 3. 绑定相关规则

Ubuntu24.04下安装Budgie桌面的注意事项

这几天突发奇想&#xff0c;想在Ubuntu上安装Budgie桌面玩玩&#xff0c;而这个想法害我重装了几次系统T T。 直接在ubuntu下 sudo apt install --install-suggests budgie-desktop 没问题&#xff0c;就是一开始没改源&#xff0c;下的很慢。 安装完成后第一次选Budgie登录…

代码随想录冲冲冲 Day58 图论Part9

47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; 根据昨天的dijkstra进行堆优化 使用的原因是点多但边少 所以直接对于边进行操作 1.对于priority_queue来说 这是最小堆, 小于的话就是最大堆 之后由于是根据边来说的 所以新建一个Edge并且初始化一下 之后由于使用…

Python 课程14-TensorFlow

前言 TensorFlow 是由 Google 开发的一个开源深度学习框架&#xff0c;广泛应用于机器学习和人工智能领域。它具有强大的计算能力&#xff0c;能够运行在 CPU、GPU 甚至 TPU 上&#xff0c;适用于从小型模型到大规模生产系统的各种应用场景。通过 TensorFlow&#xff0c;你可以…

尊享免费博导实验指导、结果解读、一站式实验服务与论文润色,助力科研人员成就卓越

&#x1f31f; 教授团队领衔&#xff0c;全方位服务&#xff01; &#x1f680; 从实验设计到论文发表&#xff0c;一站式解决方案&#xff01; &#x1f4c8; 选择我们&#xff0c;加速您的科研进程&#xff0c;让成果不再等待&#xff01; &#x1f4dd; 专业分析 定制服…