首页 > 其他分享 >HTML&CSS:3D卡片翻转悬停效果

HTML&CSS:3D卡片翻转悬停效果

时间:2024-12-13 10:29:52浏览次数:4  
标签:center 元素 transform flip HTML background 128 CSS 3D

这段HTML、CSS代码定义了页面的背景、卡片的3D翻转效果、内容的布局和样式,以及伪元素的视觉效果。通过这些样式,可以实现一个在鼠标悬停时翻转显示另一面内容的3D卡片。

演示效果

在这里插入图片描述

HTML&CSS

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            background-image: linear-gradient(to bottom right,
                    #91defe,
                    #99c0f9,
                    #bdb6ec,
                    #d7b3e3,
                    #efb3d5,
                    #f9bccc);
                    height: 100vh;

            display: flex;
            align-items: center;
            justify-content: center;
        }

        .flip {
            box-shadow: 0 0 10px rgba(128, 128, 128, 0.5);
            padding: 1em;
            width: 190px;
            height: 254px;
            transform-style: preserve-3d;
            transition: 3s ease;
        }

        .flip:hover {
            transform: rotateY(180deg);
        }

        .flip .content {
            transform-style: preserve-3d;
        }

        .flip .back,
        .flip .front {
            transform-style: preserve-3d;
            backface-visibility: hidden;
            display: flex;
            flex-direction: column;
        }

        .flip .back {
            transform: rotateY(180deg);
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
        }

        .flip h2,
        .flip p {
            transform: translateZ(90px);
            text-shadow: 0 0 3px black;
            text-align: center;
        }

        .flip h2 {
            font-size: 3em;
            color: #fff;
            letter-spacing: 1px;
        }

        .flip p {
            font-size: 1em;
            color: #eee;
            line-height: 1.6em;
        }

        .flip::before,
        .flip::after {
            content: "";
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            position: absolute;
            background-image: linear-gradient(purple, red);
            background-position: center center;
            background-repeat: no-repeat;
            background-size: cover;
            transform: rotateY(180deg)translateZ(1px);
        }

        .flip::before {
            transform: none;
            background-image: linear-gradient(violet, orange);
            background-position: center center;
            background-repeat: no-repeat;
            background-size: cover;
        }
    </style>
</head>

<body>
    <div class="flip">
        <div class="content">
            <div class="front">
                <h2>前面
                </h2>
                <p>我是正面</p>
            </div>
            <div class="back">
                <h2>后面</h2>
                <p>我是反面</p>
            </div>
        </div>
    </div>
</body>

</html>
  • .flip 类样式:box-shadow: 0 0 10px rgba(128, 128, 128, 0.5);:为元素添加一个半透明的灰色阴影。padding: 1em;:设置内边距为 1em。width: 190px; height: 254px;:设置元素的尺寸。transform-style: preserve-3d;:使元素的子元素能够在 3D 空间中呈现。transition: 3s ease;:当元素状态发生变化时,使用 3 秒的过渡效果,过渡方式为缓动。.flip:hover { transform: rotateY(180deg); }:当鼠标悬停在元素上时,元素沿 Y 轴旋转 180 度,实现翻转效果。
  • .flip.content 类样式:transform-style: preserve-3d;:确保子元素能在 3D 空间中呈现。
  • .flip.back,.flip.front 类样式:backface-visibility: hidden;:隐藏元素的背面,当元素旋转时,背面不会显示。display: flex; flex-direction: column;:将元素内部的内容以垂直方向的弹性布局排列。
  • .flip.back 类样式:transform: rotateY(180deg);:将 .back 元素初始状态旋转 180 度,使其在元素的背面。position: absolute; top: 0; left: 0; right: 0; bottom: 0;:将 .back 元素定位在父元素的四个边界内。
  • .flip h2,.flip p 样式:transform: translateZ(90px);:将元素沿 Z 轴平移 90px,以实现 3D 效果。text-shadow: 0 0 3px black;:为文本添加黑色的阴影。text-align: center:文本居中对齐.
  • .flip::before,.flip::after 伪元素样式:content: “”;:添加一个空的内容,用于生成元素。position: absolute; top: 0; left: 0; right: 0; bottom: 0;:将伪元素定位在父元素的四个边界内。background-image: linear-gradient(purple, red);:为伪元素设置渐变背景。transform: rotateY(180deg)translateZ(1px);:对 .flip::after 元素进行 Y 轴旋转和 Z 轴平移。
  • .flip::before 元素: transform: none;:不进行变换。 background-image: linear-gradient(violet, orange);:设置不同的渐变背景。

标签:center,元素,transform,flip,HTML,background,128,CSS,3D
From: https://blog.csdn.net/weixin_52814911/article/details/144441872

相关文章

  • 分享一下网页Html红灯笼挂件
    将以下代码保存到主题设置,全局功能,自定义代码的对应位置即可底部Html代码:<divclass="deng-box"><divclass="deng"><divclass="xian"></div><divclass="deng-a"><divclass="deng-b"><divclass="......
  • HTML5 微数据规范
    ​HTML5微数据规范简介微数据是一种内置于HTML中的结构化数据格式。它允许网页作者定义页面上的特定内容类型,例如文章、事件或人物。这有助于机器(例如搜索引擎)理解和解释网页内容。微数据的基本概念项目(Items):一个微数据项代表页面上的某个对象或实体,例如一个人、一本书或......
  • 在css中汉字和英文字母的行高不同如何解决?
    在CSS中,汉字和英文字母的行高不同,主要是因为字体本身的设计以及浏览器渲染机制的差异。解决这个问题的方法有很多,以下是几种常见的解决方案:1.使用line-height:1或line-height:normal:这是最简单的方案,但并非所有情况下都适用。line-height:1将行高设置为字体大小的1......
  • 你知道css压缩的方法和原理是什么吗?请描述一下
    CSS压缩的目的是减小CSS文件的大小,从而加快网页加载速度,节省带宽。其原理主要通过移除不必要的字符和信息来实现,同时保证CSS的功能不变。常用的方法包括以下几种:1.去除空白字符和注释:原理:空白字符(空格、换行符、制表符)和注释虽然提高了CSS代码的可读性,但在浏览器解析CSS......
  • css unicode字符集使用时要注意哪些问题?
    在前端开发中使用CSSUnicode字符集时,需要注意以下几个问题:1.字体支持:并非所有字体都支持所有Unicode字符。如果使用的字体不支持某个字符,则该字符可能会显示为一个方框、一个问号或其他替代符号。确保选择的字体支持你想要使用的特定Unicode字符。可以使用像Go......
  • 为什么要优先选择html5开发移动应用?
    选择HTML5开发移动应用有几个优势,使得它在某些情况下成为优先选择:跨平台兼容性:HTML5应用可以在各种平台上运行,包括iOS、Android、WindowsPhone等,只需编写一次代码,即可在多个平台部署,节省开发时间和成本。避免了为每个平台分别开发原生应用的需要。低开发成本:......
  • 解释下为什么css中值为0时可以不写单位吗?
    在CSS中,值为0时可以省略单位,是因为0无论是什么单位,其值都是相同的,即表示没有长度、宽度、厚度等等。这适用于大多数属性,例如:长度相关属性:width,height,margin,padding,border-width,top,left,bottom,right,font-size,line-height,text-indent等等。0px......
  • 你觉得在css中如果值是0时写单位好还是不写好呢?为什么?
    在CSS中,当值为0时,省略单位通常是最佳实践,但也有一些例外情况。为什么省略单位更好?更简洁:0比0px或0em更短,使代码更易读和维护。避免不必要的计算:浏览器不必将单位转换为像素。虽然性能差异很小,但在大型项目中或处理动画时,累积起来可能会产生影响。更符合规范:......
  • 你是如何区分HTML和HTML5的?
    HTML5不是HTML的全新版本,而是一个演进。它在保留并扩展HTML4的基础上,添加了新的元素、属性和API。区分HTML和HTML5主要可以从以下几个方面入手:1.Doctype声明:HTML:通常包含冗长复杂的doctype声明,例如:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitio......
  • html的属性值有规定要使用单引号还是双引号吗?
    HTML属性值可以使用单引号或双引号,甚至在某些情况下可以省略引号。最佳实践是保持一致性,并选择一种风格坚持下去。双引号("):这是最常见和推荐的做法。它更具可读性,并且与其他编程语言(如JavaScript)的约定一致。如果属性值本身包含单引号,则必须使用双引号,例如:<pclas......