CSS 一个好玩的卡片“开卡效果”

news2024/11/29 8:52:05

请添加图片描述


文章目录

  • 一、用到的一些CSS技术
  • 二、实现效果
  • 三、代码

一、用到的一些CSS技术

  • 渐变 conic-gradient
  • box-shadow
  • clip-path
  • 变换、过渡 transformtransition
  • 动画 animation @keyframes
  • 伪类、伪元素 :hover::before::after
  • 绝对布局
  • 。。。

clip-path 生成网站
https://techbrood.com/tool?p=css-clip-path

二、实现效果

请添加图片描述

三、代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>卡片测试</title>

  <style>
    body{
      margin: 0;
      padding: 0;
      height: 100vh;
    }
    .wrapper{
      position: relative;
      background: #222222;
      height: 100%;
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 100px;
      padding: 10px;
      flex-wrap: wrap;
    }

    .wrapper .card-box{
      position: relative;
      width: 240px;
      height: 360px;
      text-align: center;
      box-shadow: 0 0 0 14px #080808,
      0 24px 56px var(--clr);  
      background-color: var(--clr);

    }
    .wrapper .card-box .title.text{
      line-height: 4em;
    }

    .wrapper .card-box .text{
      line-height: 19em;
      letter-spacing: 8px;
      font-weight: 900;
      transform: scale(0);
      transition: 1.2s;
      filter: blur(4px);
    }
    .wrapper .card-box:hover .text{
      transform: scale(1);
      filter: blur(0);

    }

    .wrapper .card-box .mask{
      position: absolute;
      inset: 20px;
      box-shadow: 0 0 0 18px #080808;
    }


    .wrapper .card-box .icon{
      height: 100px;
      width: 100px;
      border-radius: 50%;
      margin: auto;
      position: absolute;
      inset: 0;
      border: 3px solid white;
      background: conic-gradient(var(--clr), green, var(--clr), yellow, var(--clr));
      transform: translateY(180px) scale(.1);
      opacity: 0;
      transition: all .8s 0s;

    }


    .wrapper .card-box:hover .icon{
      transition-delay: .4s;
      animation: 3s linear 1.05s infinite spin;
      transform: translateY(0) scale(1);

      opacity: 1;

    }

    @keyframes spin {
      0%{
        transform: rotate(0deg);
      }
      100%{
        transform: rotate(360deg);
      }
    }

    .wrapper .card-box .mask span,
    .wrapper .card-box .mask::after,
    .wrapper .card-box .mask::before{
      background: #161616;
      position: absolute;
      inset: 0;
      transition: .25s;
      clip-path: polygon(0 0, 50% 40%, 100% 0);
    }
    .wrapper .card-box:hover .mask span{
      transition-delay: 0;
      clip-path: polygon(0 0, 50% 0%, 100% 0);

    }


    .wrapper .card-box .mask::before{
      transition-delay: .2s;
      clip-path: polygon(0 0, 40% 50%, 50% 100%, 0% 100%);
      content: "";
    }
    .wrapper .card-box:hover .mask::before{
      clip-path: polygon(0 0, 0 100%, 50% 100%, 0% 100%);

    }

    .wrapper .card-box .mask::after{
      transition-delay: .4s;
      clip-path: polygon(100% 0, 60% 50%, 50% 100%, 100% 100%);
      content: "";
    }
    .wrapper .card-box:hover .mask::after{
      clip-path: polygon(100% 0, 100% 100%, 50% 100%, 100% 100%);

    }

  </style>
</head>
<body>

  <div class="wrapper">
    <div class="card-box" style="--clr: red;">
      <h3 class="title text">啥也没有<br><span class="detail text">好耶</span></h3>
      <div class="icon"></div>
      <div class="mask">
        <span></span>
      </div>
    </div>

    <div class="card-box" style="--clr: blue;">
      <h3 class="title text">啥也不是<br><span class="detail text">好耶</span></h3>
      <div class="icon"></div>
      <div class="mask">
        <span></span>
      </div>
    </div>

    <div class="card-box" style="--clr: violet;">
      <h3 class="title text">啥也啥也<br><span class="detail text">好耶</span></h3>
      <div class="icon"></div>
      <div class="mask">
        <span></span>
      </div>
    </div>

  </div>
  
</body>
</html>

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

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

相关文章

新手做TikTok适合哪些类目?

现在很多小伙伴争先恐后想要在TikTok入驻&#xff0c;开店开直播带货赚钱&#xff0c;但是又怕自己是小白&#xff0c;不好拿捏这个平台。TikTok平台&#xff0c;适合小白做吗&#xff1f;现在tiktok千亿级的流量还处于蓝海阶段&#xff0c;想入局要趁早。那么肯定又有小伙伴疑…

PostgreSQL本地化

本地化的概念 本地化的目的是支持不同国家、地区的语言特性、规则。比如拥有本地化支持后&#xff0c;可以使用支持汉语、法语、日语等等的字符集。除了字符集以外&#xff0c;还有字符排序规则和其他语言相关规则的支持&#xff0c;例如我们知道(‘a’,‘b’)该如何排序&…

Ubuntu 升级cuda版本与切换

下载cuda版本 进&#xff1a;CUDA Toolkit 12.2 Downloads | NVIDIA Developer wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.runsudo sh ./cuda_12.2.0_535.54.03_linux.run --toolkit --silent --overrid…

快速上手GIT命令,现学也能登堂入室

系列文章目录 手把手教你安装Git&#xff0c;萌新迈向专业的必备一步 GIT命令只会抄却不理解&#xff1f;看完原理才能事半功倍&#xff01; 快速上手GIT命令&#xff0c;现学也能登堂入室 系列文章目录一、GIT HELP1. 命令文档2. 简要说明 二、配置1. 配置列表2. 增删改查3. …

【具身智能】论文系列解读-RL-ViGen ArrayBot USEEK

1. RL-ViGen&#xff1a;视觉泛化的强化学习基准 RL-ViGen: A Reinforcement Learning Benchmark for Visual Generalization 0 摘要与总结 视觉强化学习&#xff08;Visual RL&#xff09;与高维观察相结合&#xff0c;一直面临着分布外泛化的长期挑战。尽管重点关注旨在解…

从C语言到C++_37(特殊类设计和C++类型转换)单例模式

目录 1. 特殊类设计 1.1 不能被拷贝的类 1.2 只能在堆上创建的类 1.3 只能在栈上创建的类 1.4 不能被继承的类 1.5 只能创建一个对象的类(单例模式)(重点) 1.5.1 饿汉模式 1.5.2 懒汉模式 2. 类型转换 2.1 static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 d…

算法笔记——路径问题

在引入介绍如何写一个算法的时候&#xff0c;我们先引入一个题作为例子 1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09; 作为刚开始学习算法的我们&#xff0c;看到这个题目的时候&#xff0c;应该想好以下的问题&#xff1a; 1.状态表示 我们要用什么来表…

关于大模型参数微调的不同方法

Adapter Tuning 适配器模块&#xff08;Adapter Moudle&#xff09;可以生成一个紧凑且可扩展的模型&#xff1b;每个任务只需要添加少量可训练参数&#xff0c;并且可以在不重新访问之前任务的情况下添加新任务。原始网络的参数保持不变&#xff0c;实现了高度的参数共享 Pa…

android framework之Applicataion启动流程分析(三)

现在再回顾一下Application的启动流程&#xff0c;总的来说&#xff0c;虽然进程的发起是由ATMS服务发起的&#xff0c;但是进程的启动还是由AMS负责&#xff0c;所以需要调用AMS的startProcess()接口完成进程启动流程&#xff0c;AMS要处理的事情很多&#xff0c;它将事务交给…

代码随想录训练营第四十三天|1049. 最后一块石头的重量 II、 494. 目标和、 474.一和零

1049. 最后一块石头的重量 II 力扣题目链接(opens new window) 题目难度&#xff1a;中等 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x &l…

小程序快速备案助手代备案小程序开发

小程序快速备案助手代备案小程序开发 用户注册与登录&#xff1a;用户可以通过手机号或其他方式进行注册和登录&#xff0c;以便进行备案相关操作。备案信息填写&#xff1a;用户可以填写小程序的备案信息&#xff0c;包括小程序名称、小程序服务类目、域名等。备案材料上传&a…

GA遗传算法

储备知识 GA算法主要解决数学模型中最优化的搜索算法&#xff0c;是进化算法中的一种&#xff0c;基因算法借鉴了自然界基因的遗传的主要现象&#xff0c;分别为遗传&#xff0c;变异&#xff0c;自然选择&#xff0c;杂交等。 GA算法参数 GA算法的参数如下所示。 种群规模…

c++ vs2019 cpp20规范的STL库的map与multimap源码分析

map就是一个红黑树。 标准平衡二叉树&#xff0c;要求左右子树的高度差不超过1 。红黑树只要求左右子树的高度差不超过一倍即可。兼顾了树平衡与效率。避免了AVL树的频繁调整树平衡。 b站 的“可雷曼土”大师&#xff0c;讲红黑树的理论讲的很透彻&#xff0c;再结合看代码&…

va_list使用及两个注意项(可能导致崩溃和少1个字符)

两个注意项&#xff1a; 1、linux平台上vsnprintf会破坏va_list变量&#xff0c;需要重新调用va_start&#xff0c;否则可能访问错位崩溃。 2、vsnprintf会留一个字节补0结束&#xff0c;但返回值不包含&#xff0c;所以必须判断返回值小于分配的空间。 具体代码分析&#xff1…

【包过滤防火墙——firewalld动态防火墙】的简单使用

文章目录 firewald与iptables区别firewalld九个区域firewalld配置方法firewalld参数和命令firewalld两种模式firewalld使用实验 firewalld不要与iptables混用 firewald与iptables区别 iptables 主要是基于接口&#xff0c;来设置规则&#xff0c;从而判断网络的安全性。firewa…

卡特兰数和算法

在组合数学中&#xff0c;卡特兰数是一系列自然数&#xff0c;出现在各种组合计数问题中&#xff0c;通常涉及递归定义的对象。它们以比利时数学家尤金查尔斯卡特兰&#xff08;Eugne Charles Catalan&#xff09;的名字命名。 卡特兰数序列是1, 1, 2, 5, 14, 42......&#xf…

AAC之处理码流分析工具(三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

websocket基础

下面就以代码来进行说明 1&#xff0c;先导入websocket依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 2.编写websocket相关bean管理配置 Config…

牛客网刷题

牛客网刷题-C&C 2023年9月3日15:58:392023年9月3日16:37:01 2023年9月3日15:58:39 2023年9月3日16:37:01 整型常量和实型常量的区别