分享一个可交互的卡片

news2024/11/28 4:53:02

五一放假了,寻思着来一个应景的玩意,所以它诞生了。
先上效果图:
在这里插入图片描述
再上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        @import url("https://fonts.googleapis.com/css?family=Cardo:400i|Rubik:400,700&display=swap");
        :root {
            --d: 700ms;
            --e: cubic-bezier(0.19, 1, 0.22, 1);
            --font-sans: "Rubik", sans-serif;
            --font-serif: "Cardo", serif;
        }

        * {
            box-sizing: border-box;
        }

        html, body {
            height: 100%;
        }

        body {
            display: grid;
            place-items: center;
        }

        .page-content {
            display: grid;
            grid-gap: 1rem;
            padding: 1rem;
            max-width: 1024px;
            margin: 0 auto;
            font-family: var(--font-sans);
        }
        @media (min-width: 600px) {
            .page-content {
                grid-template-columns: repeat(2, 1fr);
            }
        }
        @media (min-width: 800px) {
            .page-content {
                grid-template-columns: repeat(4, 1fr);
            }
        }

        .card {
            position: relative;
            display: flex;
            align-items: flex-end;
            overflow: hidden;
            padding: 1rem;
            width: 100%;
            text-align: center;
            color: whitesmoke;
            background-color: whitesmoke;
            box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1), 0 2px 2px rgba(0, 0, 0, 0.1), 0 4px 4px rgba(0, 0, 0, 0.1), 0 8px 8px rgba(0, 0, 0, 0.1), 0 16px 16px rgba(0, 0, 0, 0.1);
        }
        @media (min-width: 600px) {
            .card {
                height: 350px;
            }
        }
        .card:before {
            content: "";
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 110%;
            background-size: cover;
            background-position: 0 0;
            transition: transform calc(var(--d) * 1.5) var(--e);
            pointer-events: none;
        }
        .card:after {
            content: "";
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 200%;
            pointer-events: none;
            background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.009) 11.7%, rgba(0, 0, 0, 0.034) 22.1%, rgba(0, 0, 0, 0.072) 31.2%, rgba(0, 0, 0, 0.123) 39.4%, rgba(0, 0, 0, 0.182) 46.6%, rgba(0, 0, 0, 0.249) 53.1%, rgba(0, 0, 0, 0.32) 58.9%, rgba(0, 0, 0, 0.394) 64.3%, rgba(0, 0, 0, 0.468) 69.3%, rgba(0, 0, 0, 0.54) 74.1%, rgba(0, 0, 0, 0.607) 78.8%, rgba(0, 0, 0, 0.668) 83.6%, rgba(0, 0, 0, 0.721) 88.7%, rgba(0, 0, 0, 0.762) 94.1%, rgba(0, 0, 0, 0.79) 100%);
            transform: translateY(-50%);
            transition: transform calc(var(--d) * 2) var(--e);
        }
        .card:nth-child(1):before {
            background-image: url(https://images.unsplash.com/photo-1517021897933-0e0319cfbc28?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjE0NTg5fQ);
        }
        .card:nth-child(2):before {
            background-image: url(https://images.unsplash.com/photo-1533903345306-15d1c30952de?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjE0NTg5fQ);
        }
        .card:nth-child(3):before {
            background-image: url(https://images.unsplash.com/photo-1545243424-0ce743321e11?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjE0NTg5fQ);
        }
        .card:nth-child(4):before {
            background-image: url(https://images.unsplash.com/photo-1531306728370-e2ebd9d7bb99?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjE0NTg5fQ);
        }

        .content {
            position: relative;
            display: flex;
            flex-direction: column;
            align-items: center;
            width: 100%;
            padding: 1rem;
            transition: transform var(--d) var(--e);
            z-index: 1;
        }
        .content > * + * {
            margin-top: 1rem;
        }

        .title {
            font-size: 1.3rem;
            font-weight: bold;
            line-height: 1.2;
        }

        .copy {
            font-family: var(--font-serif);
            font-size: 1.125rem;
            font-style: italic;
            line-height: 1.35;
        }

        .btn {
            cursor: pointer;
            margin-top: 1.5rem;
            padding: 0.75rem 1.5rem;
            font-size: 0.65rem;
            font-weight: bold;
            letter-spacing: 0.025rem;
            text-transform: uppercase;
            color: white;
            background-color: black;
            border: none;
        }
        .btn:hover {
            background-color: #0d0d0d;
        }
        .btn:focus {
            outline: 1px dashed yellow;
            outline-offset: 3px;
        }

        @media (hover: hover) and (min-width: 600px) {
            .card:after {
                transform: translateY(0);
            }

            .content {
                transform: translateY(calc(100% - 4.5rem));
            }
            .content > *:not(.title) {
                opacity: 0;
                transform: translateY(1rem);
                transition: transform var(--d) var(--e), opacity var(--d) var(--e);
            }

            .card:hover,
            .card:focus-within {
                align-items: center;
            }
            .card:hover:before,
            .card:focus-within:before {
                transform: translateY(-4%);
            }
            .card:hover:after,
            .card:focus-within:after {
                transform: translateY(-50%);
            }
            .card:hover .content,
            .card:focus-within .content {
                transform: translateY(0);
            }
            .card:hover .content > *:not(.title),
            .card:focus-within .content > *:not(.title) {
                opacity: 1;
                transform: translateY(0);
                transition-delay: calc(var(--d) / 8);
            }

            .card:focus-within:before, .card:focus-within:after,
            .card:focus-within .content,
            .card:focus-within .content > *:not(.title) {
                transition-duration: 0s;
            }
        }
    </style>
</head>
<body>

<main class="page-content">
    <div class="card">
        <div class="content">
            <h2 class="title">山顶风光</h2>
            <p class="copy">看看所有这些华丽的山地旅行,你猜对了,可以欣赏到山脉的美景</p>
            <button class="btn">查看行程</button>
        </div>
    </div>
    <div class="card">
        <div class="content">
            <h2 class="title">海滩美景</h2>
            <p class="copy">用这些美妙的目的地计划你的下一次海滩之旅</p>
            <button class="btn">查看行程</button>
        </div>
    </div>
    <div class="card">
        <div class="content">
            <h2 class="title">沙漠风光</h2>
            <p class="copy">这是你梦寐以求的沙漠这是你梦寐以求的沙漠</p>
            <button class="btn">立即预订</button>
        </div>
    </div>
    <div class="card">
        <div class="content">
            <h2 class="title">探索银河</h2>
            <p class="copy">说真的,直截了当地说,今天就发射到外太空去吧</p>
            <button class="btn">立即预订</button>
        </div>
    </div>
</main>
</body>
</html>

老规矩,粘贴就可以直接使用~

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

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

相关文章

给失业的互联网人一个思路:别再苦苦找工作了,要去找门槛低、现金流好、天花板低、资本看不上的创业项目,一年也能几百万!...

失业大潮中的互联网人该何去何从&#xff1f;这大概是许多人在难捱的深夜反复思考的问题。 一位失业很久的网友就在痛苦思索中悟出了适合自己的道路&#xff0c;下面分享给大家&#xff0c;篇幅太长&#xff0c;小编给大家划一下重点。 先说结论&#xff1a;失业的互联网人别再…

MySql数据库的初步安装与数据表结构数据管理

1.数据库的相关了解 1.1 数据库的概念 数据库&#xff08;database&#xff09;是用来组织、存储和管理数据的仓库 数据库管理系统&#xff08;DBMS&#xff09;&#xff1a;是实现对数据有效组织&#xff0c;管理和存取的系统软件。 数据的建立和维护功能&#xff0c;数据定…

【C语言】struct结构体

文章目录 一. 结构体简述二. 结构体的声明和定义1、简单地声明一个结构体和定义结构体变量2、声明结构体的同时也定义结构体变量3、匿名结构体4、配合typedef&#xff0c;声明结构体的同时为结构体取别名5、在声明匿名结构体时&#xff0c;使用typedef给这个匿名结构体取别名 三…

用 AudioGPT 输入自然语言,可以让 ChatGPT 唱歌了?

夕小瑶科技说 原创作者 | 智商掉了一地 借助 ChatGPT 强大的理解与生成能力&#xff0c;结合基础语音模型&#xff0c;集成模型 AudioGPT 诞生了&#xff01; 最近基于 ChatGPT 的二创如雨后春笋一样冒出&#xff0c;上周我们一起看了黑客松优秀作品大赏&#xff0c;这周又有新…

HCIP-7.2VLAN间通信单臂、多臂、三层交换方式学习

VLAN间通信单臂、多臂、三层交换方式学习 1、单臂路由2、多臂路由3、三层交换机的SVI接口实现VLAN间通讯3.1、VLANIF虚拟接口3.2、VLAN间路由3.2.1、单台三层路由VLAN间通信&#xff0c;在一台三层交换机内部VLAN之间直连。3.2.2、两台三层交换机的之间的VLAN通信。3.2.3、将物…

Ae:画笔面板

Ae菜单&#xff1a;窗口/画笔 Brushes 快捷键&#xff1a;Ctrl 9 画笔 Brushes面板提供了画笔预设及画笔设置&#xff08;包括画笔动态&#xff09;等的参数设置。 画笔预设 Brush Presets 画笔预设窗格中提供了自带的画笔预设&#xff0c;主要有尖角 Hard Round、柔角 Soft R…

【云原生】Epinio--Kubernetes 的应用程序开发引擎

Kubernetes 已成为容器编排的事实标准&#xff0c;改变了我们的开发流程。十年前&#xff0c;我们只需要将代码打包成 war/jar 包&#xff0c;然后启动应用即可。然而&#xff0c;现在面向 Kubernetes 的开发&#xff0c;交付的产物有可能是 Helm Chart、Workload Yaml、Docker…

SOFA Weekly|SOFAArk 社区会议预告、Layotto 社区会议回顾、社区本周贡献

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展 欢迎留言互动&#xff5e; SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&am…

【SPSS】相关分析和偏相关分析详细操作过程(附案例实战)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Vben Admin 自学记录 —— 介绍及使用(持续更新中...)

Vue-Vben-Admin 一个基于 Vue3.0、Vite、Ant-Design-Vue、TypeScript的后台解决方案&#xff0c;为开发中大型项目提供开箱即用的解决方案。 包含功能&#xff1a; 二次封装组件utilshooks动态菜单权限校验按钮级别权限控制… 安装 1.拉取代码 从GitHub上 git clone https:/…

「OceanBase 4.1 体验」|大厂开始接入的国产分布式数据库,不来了解了解?

OceanBase 4.1 体验 前言OCP Express在线升级功能租户级物理备库TP&#xff08;事务处理&#xff09;和AP&#xff08;分析处理&#xff09;优化TP 性能优化AP 性能优化 结尾 前言 上次我们讲了本人自己亲自上手OceanBase 4.1的初体验&#xff0c;国产的分布式数据库也太太太太…

HCIA-RS实验-路由配置-简述RIPv1 和RIPv2

简述 RIPv1和RIPv2是两种不同版本的路由信息协议&#xff08;Routing Information Protocol&#xff09;&#xff0c;用于在网络中传递路由信息。它们的主要区别在于以下几点&#xff1a; 1. 分类&#xff1a;RIPv1是一种类别路由协议&#xff08;classful routing protocol&a…

Python实现图像的手绘效果

用Python实现手绘图像的效果 1.图像的RGB色彩模式 图像一般使用RGB色彩模式&#xff0c;即每个像素点的颜色由红、绿(G)、蓝(B)组成。RGB三个颜色通道的变化和叠加得到各种颜色&#xff0c;其中&#xff1a; R红色&#xff0c;取值范围&#xff0c;0-255G绿色&#xff0c;取值…

将时间序列转换为分类问题

本文将以股票交易作为示例。我们用 AI 模型预测股票第二天是涨还是跌。在此背景下&#xff0c;比较了分类算法 XGBoost、随机森林和逻辑分类器。文章的另外一个重点是数据准备。我们必须如何转换数据以便模型可以处理它。 在本文中&#xff0c;我们将遵循 CRISP-DM 流程模型&a…

机器学习强基计划8-4:流形学习等度量映射Isomap算法(附Python实现)

目录 0 写在前面1 什么是流形&#xff1f;2 什么是流形学习&#xff1f;3 等度量映射原理4 Python实现 0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&#xff1b;“广”在分析多个机器学习…

【经验分享】Windows/Ubuntu上如何使用api下载kaggle上的数据集

1 下载kaggle的api 1.1 已经安装了Anaconda 打开cmd&#xff08;Windows&#xff09;/打开终端&#xff08;Ubuntu&#xff09; conda activate 你的conda环境名称 这里我的环境叫做Pytorch conda activate Pytorch然后执行pip install kaggle pip install kaggle如果你没…

沃尔玛、亚马逊影响listing的转化率4大因素,测评补单自养号解析

1、listing的相关性&#xff1a;前期我们在找词&#xff0c;收集词的时候&#xff0c;我们通过插件来协助我们去筛选词。我们把流量高&#xff0c;中&#xff0c;低的关键词都一一收集&#xff0c;然后我们再进行对收集得来的关键词进行分析&#xff0c;再进行挑词&#xff0c;…

云计算:优势与未来趋势

文章目录 前言一、云计算的优势1. 降低IT成本2. 提高工作效率3. 提高业务的可靠性和稳定性4. 提升安全性 二、未来发展趋势1. AI与云计算的融合2. 边缘计算的发展3. 多云的趋势4. 服务器和存储的创新 三、 行业应用案例1.金融行业2.医疗保健行业3.教育行业4.零售和物流行业 四、…

2.4 定点除法运算

学习目标&#xff1a; 学习如何实现一个基于余数查商法的定点除法运算&#xff0c;并能够正确地进行除法计算&#xff0c;包括处理舍入误差和溢出等问题。具体要求包括&#xff1a; 熟悉定点数的表示方法和定点数的基本运算法则&#xff0c;理解定点除法运算的基本概念和原理。…

逻辑回归评分系统(mimic数据集)

1.读取数据与数据处理 为什么不对数据进行标准化&#xff1f; 我们制作的评分卡&#xff0c;评分卡是要给医务人员们使用的基于病人的化验结果打分的一张卡片&#xff0c;而为了制作这张卡片&#xff0c;我们需要对我们的数据进行一个“分档”&#xff0c;比如说&#xff0c;…