基于 HTML 和 CSS 实现的 3D 翻转卡片效果

一、引言

在网页设计中,为了增加用户的交互体验和视觉吸引力,常常会运用一些独特的效果。本文将详细介绍一个基于 HTML 和 CSS 实现的 3D 翻转卡片效果,通过对代码的剖析,让你了解如何创建一个具有立体感的卡片,在鼠标悬停时实现前后两面的翻转切换。

二、HTML 结构

这段代码的 HTML 部分相对简洁,主要构建了卡片的基本结构。最外层是一个div元素,类名为card-container,它作为卡片的容器,用于包裹卡片的正面和背面。

card-container内部,有两个div元素,分别是类名为cover的正面和类名为back的背面。coverback都包含了一些文本内容(这里是 "COVER" 和 "BACK",实际展示中图片会覆盖这些文本),它们的作用是分别展示卡片的两个不同面。

三、CSS 样式解析

  1. 页面整体布局body元素通过display: flex;align-items: center;justify-content: center;设置了弹性布局,使得页面内容在垂直和水平方向上都居中显示,并且height: 100vh;确保了body占据整个视口的高度。
  2. 卡片容器样式card-container类定义了卡片容器的样式。width: 300px;height: 400px;设置了容器的宽度和高度。position: relative;使其成为相对定位元素,为内部的绝对定位元素提供参考。perspective: 1000px;属性为容器设置了透视效果,这是实现 3D 效果的关键,它决定了元素在 3D 空间中的深度感,数值越大,元素看起来越远,3D 效果越不明显;数值越小,3D 效果越强烈。
  3. 卡片正面和背面样式
    • coverback类都设置了width: 100%;height: 100%;,使其填满整个卡片容器。position: absolute;将它们设置为绝对定位,以便在容器内自由放置。backface-visibility: hidden;是一个重要的属性,它确保当元素翻转时,背面不会显示出来,从而实现真正的翻转效果。transition: transform 0.5s ease-in-out;定义了元素在变换(这里是翻转)时的过渡效果,持续时间为 0.5 秒,过渡效果为ease-in-out,即开始和结束时缓慢,中间过程较快。
    • cover类通过background-image: url("./assets/movie-poster/m-byxz.jpg");设置了背景图片,background-size: cover;使背景图片完全覆盖元素,并且保持图片的纵横比。初始状态下,transform: rotateY(0deg);表示元素在 Y 轴上旋转 0 度,即正面朝向用户。
    • back类同样通过background-image: url("./assets/movie-poster/m-dbs.jpg");background-size: cover;设置背景图片。transform: rotateY(180deg);表示元素在 Y 轴上旋转 180 度,即背面朝向用户。
  4. 鼠标悬停效果:通过:hover伪类来实现鼠标悬停时的效果。当鼠标悬停在card-container上时,card-container:hover .cover规则使cover元素在 Y 轴上旋转 180 度,从而展示背面;card-container:hover .back规则使back元素在 Y 轴上旋转 0 度,展示正面,这样就实现了卡片的翻转效果。

完整代码展示 

<!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" /><link rel="stylesheet" href="./assets/global.css" /><style>body {display: flex;align-items: center;justify-content: center;height: 100vh;}.card-container {width: 300px;height: 400px;position: relative;perspective: 1000px;}.cover,.back {width: 100%;height: 100%;position: absolute;backface-visibility: hidden;transition: transform 0.5s ease-in-out;}.cover {background-image: url("./assets/movie-poster/m-byxz.jpg");background-size: cover;transform: rotateY(0deg);}.back {background-size: cover;background-image: url("./assets/movie-poster/m-dbs.jpg");transform: rotateY(180deg);}.card-container:hover .cover {transform: rotateY(180deg);}.card-container:hover .back {transform: rotateY(0deg);}</style>
</head><body><div class="card-container"><div class="cover">COVER</div><div class="back">BACK</div></div>
</body></html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP数组排序深度解析:sort()、rsort()、asort()、arsort()、ksort()、krsort() 的适用场景与性能对比

在PHP开发中&#xff0c;数组排序是日常操作的核心技能之一。无论是处理用户数据、产品列表&#xff0c;还是分析日志信息&#xff0c;合理的排序方法能显著提升代码的效率和可维护性。PHP提供了多种数组排序函数&#xff08;如 sort()、rsort()、asort() 等&#xff09;&#…

C++ 中二级指针的正确释放方法

C 中二级指针的正确释放 一、什么是二级指针&#xff1f; 简单说&#xff0c;二级指针就是指向指针的指针。 即&#xff1a; int** p;它可以指向一个 int*&#xff0c;而 int* 又指向一个 int 类型的变量。 常见应用场景 动态二维数组&#xff08;例如 int** matrix&#x…

Linux 进程基础(二):操作系统

目录 一、什么是操作系统&#xff1a;用户和电脑之间的「翻译官」&#x1f310; OS 的层状结构&#x1f9e9; 案例解析&#xff1a;双击鼠标的「跨层之旅」 二、操作系统的必要性探究&#xff1a;缺乏操作系统的环境面临的挑战剖析&#x1f511; OS 的「管理者」属性&#xff1…

SpringMVC详解

一&#xff1a;Maven 1.1 概述 &#xff08;1&#xff09;项目结构 所有IDE使用Maven创建的项目结构完全一样&#xff0c;maven项目可通用 &#xff08;2&#xff09;构建流程&#xff08;编译、测试、打包、发布&#xff09; &#xff08;3&#xff09;依赖管理 定义&#xff…

深入解析Linux进程间通信(IPC):机制、应用与最佳实践

引言 在多任务操作系统中&#xff0c;进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;是协同工作的核心机制。Linux作为现代操作系统的典范&#xff0c;提供了8种主要IPC方式&#xff0c;从传统的管道到面向网络的套接字&#xff0c;每种方法都暗藏独特的…

linux 使用nginx部署ssl证书,将http升级为https

前言 本文基于&#xff1a;操作系统 CentOS Stream 8 使用工具&#xff1a;Xshell8、Xftp8 服务器基础环境&#xff1a; nginx - 请查看 linux 使用nginx部署vue、react项目 所需服务器基础环境&#xff0c;请根据提示进行下载、安装。 1.下载证书 以腾讯云为例&#xff…

深入了解Linux系统—— 环境变量

命令行参数 我们知道&#xff0c;我们使用的指令它本质上也是一个程序&#xff0c;我们要执行这个指令&#xff0c;输入指令名然后回车即可执行&#xff1b;但是对于指令带选项&#xff0c;又是如何实现的呢&#xff1f; 问题&#xff1a;main函数有没有参数&#xff1f; 在我…

Oracle OCP认证考试考点详解083系列07

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 31. 第31题&#xff1a; 题目 解析及答案&#xff1a; 从 Oracle 19c 开始&#xff0c;数据库配置助手&#xff08;DBCA&#xff09;在克…

word批量转pdf工具

word批量转pdf工具 图片 说到了办公&#xff0c;怎能不提PDF转换哦&#xff1f; 这是一款一键就可以批量word转换为PDF的小工具&#xff0c;简直是VB界的一股清流。 图片 操作简单到不行&#xff0c;只要把需要转换的word文件和这个工具放在同一个文件夹里&#xff0c;双击…

【网络原理】深入理解HTTPS协议

本篇博客给大家带来的是网络原理的知识点, 由于时间有限, 分三天来写, 本篇为线程第三篇,也是最后一篇. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动…

解决Maven项目中报错“java不支持版本6即更高的版本 7”

错误背景 当Maven项目编译或运行时出现错误提示 Java不支持版本6即更高的版本7&#xff0c;通常是由于项目配置的JDK版本与当前环境或编译器设置不一致导致的。例如&#xff1a; 项目配置的Java版本为6或7&#xff0c;但实际使用的是JDK 17。Maven或IDE的编译器未正确指定目标…

Linux用户管理命令和用户组管理命令

一、用户管理命令 1.1、adduser 添加新用户 1、基本语法 adduser 用户名 &#xff08;功能描述&#xff1a;添加新用户&#xff09; 应用场景1&#xff1a;企业开发&#xff0c;多人协同&#xff08;也会有多人使用相同的一个低权限用户&#xff09;。 应用场景2&#x…