创建一个具有背景轮播和3D卡片翻转效果的个人名片网页

news2024/11/19 15:26:50

目录

项目展示

图片展示

前言

项目目标

项目目标

步骤 3:CSS 样式

步骤 4:JavaScript 动画

项目源码

知识点介绍 (大佬请绕道)

HTML 结构的构建

2. CSS 样式的设计

3. JavaScript 动画的实现

4. 背景图轮播的逻辑

5. CSS 3D变换的使用

结语


项目展示

点击下面链接(第一次打开可能会有些慢)

点击进入个人名片(手机版)

图片展示

前言

在本篇博客中,我们将学习如何创建一个具有多个功能的个人名片网页。这个项目包括背景轮播效果和3D卡片翻转效果,适合前端开发初学者。

项目目标

在开始之前,我们先明确一下这个项目的主要目标:

  • 创建一个响应式的网页,可以适应不同屏幕大小。
  • 实现一个背景图像轮播效果,每隔一段时间切换一张背景图。
  • 使用CSS 3D变换来创建一个具有多个面的卡片效果。

项目目标

在开始之前,我们先明确一下这个项目的主要目标:

  • 创建一个响应式的网页,可以适应不同屏幕大小。
  • 实现一个背景图像轮播效果,每隔一段时间切换一张背景图。
  • 使用CSS 3D变换来创建一个具有多个面的卡片效果。
<div id="wrapper">
<div class="btn"></div>
<input class="range" type="range" min="0" max="5" step="1" value="0" oninput="change()" onchange="change()" />
<div class="card">
  <div class="cube show">
    <div class="is_top">
      <span class="avater"></span>
      <span class="username">命运之光</span>
      <span class="content">其实我的梦想是拯救世界</span>
    </div>
    <div class="is_bottom">
      <span class="title">个人介绍</span>
      <span class="content">你好,我是命运之光,一个热爱生活和技术的程序员。我喜欢挑战自己,不断学习新知识和技能。除了编程,我还喜欢旅行、阅读和尝试新鲜事物。我的座右铭是“活出自己想要的样子”,我相信只要我们敢于追求自己的梦想,就能够创造属于自己的精彩人生。


      </span>
    </div>
    <div class="is_left">
      <span class="title">最近在看(德芙)</span>
      <span class="img" style="background:url(222.png)"></span>
    </div>
    <div class="is_right">
      <span class="title">最近在玩(原神)</span>
      <span class="img" style="background:url(https://img1.baidu.com/it/u=2692659307,1253870257&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=590)"></span>
      
    </div>
    <div class="is_front">
      <span class="title">兴趣爱好</span>
      <span class="hobby">
        <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb5146.png"  />
        <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb513b.png"  />
        <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb512d.png"  />
        <img src="https://pic.imgdb.cn/item/63c2d285be43e0d30eeb5122.png"  />
      </span>
    </div>
    <div class="is_back">
      <span class="title">Hello World</span>
      <span class="img" style="background:url(https://pic.imgdb.cn/item/63c2d710be43e0d30ef68b9c.gif)"></span>
    </div>
  </div>
</div>
</div>
步骤 3:CSS 样式

使用CSS来设计网页的样式,包括背景图、按钮、卡片等的样式。

body {
            margin: 0;
            padding: 0;
            background-size: cover;
            background-position: center;
            background-image: url('bk1.jpg'); /* 使用 bk1.jpg 作为背景图像 */
            height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background-image 1s ease-in-out;
        }

        #wrapper {
            width: 590px; /* 设置容器宽度,可以根据需要调整 */
            height: 960px; /* 设置容器高度,可以根据需要调整 */
            background-size: cover; /* 设置背景图像适应屏幕,保持纵横比 */
            background-position: -55px;
            transform-origin: 0 0;
            position: absolute;
            left: 50%;
            transform: translateX(-50%); /* 将容器水平居中 */
            margin-top: 450px; /* 增加上边距以垂直居中 */
        }
.range{
  position: absolute;
  width: 300px;
  left: calc(50% - 150px);
  bottom: 190px;
  display: none;
}
.btn {
  cursor: pointer;
  position: absolute;
  left: calc(50% - 50px);
  bottom: 150px;
  width: 100px;
  height: 100px;
  background: url(555.png)
    no-repeat center/cover;
 /* 其他样式 */
  background: url(555.png) no-repeat center/cover;
  opacity: 0.8; /* 添加这一行设置透明度为0.6 */
}
.btn::after {
  content: "";
  width: 100px;
  height: 100px;
  position: absolute;
  background: url(555.png)
    no-repeat center/cover;
  transform-origin: center;
  transform: scale(1);
  animation: scale 3s infinite;
}
@keyframes scale {
  0% {
    transform: scale(0.4);
    opacity: 1;
  }
  50% {
    transform: scale(1);
    opacity: 0.4;
  }
  100% {
    transform: scale(1.4);
    opacity: 0;
  }
}
.btn::before {
	font-size:14px;
  text-align: center;
	color:#ccc;
	content:"人生苦短,一天当作两天卷";
	height:20px;
	width:180px;
	background-color:#fff;
	position:absolute;
	left:-40px;
  top: -30px;
	border-radius:10px;
	opacity:0;
	transition:all .5s;
}
.btn:hover:before {
	opacity:1;
	transition:all 1s;
}

.card{
  width: 300px;
  height:300px;
  perspective: 1000px;
  margin: 200px auto;
  opacity: 0;
  transition: all 1s ease-in;
}
.cube{
  width:100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform ease 1s;
}
.cube div{
    border: 2px solid #5968be;
    width: 100%;
    height: 100%;
    position: absolute;
    background-color: rgba(255, 161, 161, 0.5);
    background-size: 100% 100%;
}

.is_top {
  background: red;
  transform: rotateX(90deg) translateZ(150px);
}
.is_bottom {
  background: blue;
  transform: rotateX(-90deg) translateZ(150px);
}
.is_left {
  background: green;
  transform: rotateY(-90deg) translateZ(150px);
}
.is_right {
  background: pink;
  transform: rotateY(90deg) translateZ(150px);
}
.is_front {
  background: yellow;
  transform: translateZ(150px);
}
.is_back {
  background: orange;
  transform: rotateX(-180deg) translateZ(150px);
}
.title{
  color: #fff;
  font-size: 22px;
  display: block;
  margin-top: 15px;
  margin-bottom: 20px;
  text-align: center;
}
.title::before{
  display: block;
  position: absolute;
  left:118px;
  top: 50px;
  content: '';
  width: 70px;
  height: 3px;
  background-color: #fff;
}
.content{
  display: block;
  width: 100%;
  box-sizing: border-box;
  padding: 0 30px;
  text-align:center;
  font-size: 12px;
  color: #eee;
}
.img{
  display: block;
  margin: 0 auto;
  width: 200px;
  height: 200px;
  background-size: 100% 100% !important;
}
.avater{
  width: 150px;
  height: 150px;
  margin: 40px auto 10px;
  border-radius: 50%;
  display: block;
  background:url(666.jpg);
  background-size: 100%;
  border: 5px solid #fff;
}
.username{
  display: block;
  text-align:center;
  font-size: 30px;
  color: #fff;
  margin-bottom: 10px;
}

.hobby{
 display: flex;
  margin: 60px auto 0;
  width: 200px;
  height: 200px; 
}
.hobby img{
  width: 50px;
  height: 50px;
}
步骤 4:JavaScript 动画

通过JavaScript代码来实现背景轮播效果和3D卡片翻转效果。

 // 背景图像数组
        const backgroundImages = ['bk1.jpg', 'bk2.jpg', 'bk3.jpg', 'bk4.jpg']; 
        let currentIndex = 0; // 当前背景图像的索引

        // 函数用于更改背景图像
        function changeBackgroundImage() {
            document.body.style.backgroundImage = `url('${backgroundImages[currentIndex]}')`;
            currentIndex = (currentIndex + 1) % backgroundImages.length;
        }

        // 初始更改背景图像
        changeBackgroundImage();

        // 设置定时器,每4秒更改一次背景图像
        setInterval(changeBackgroundImage, 4000);



        ScreenAuto();
window.onresize = () => ScreenAuto();
function ScreenAuto() {
  const scale = document.documentElement.clientHeight / 960;
  document.querySelector(
    "#wrapper"
  ).style.transform = `scale(${scale}) translate(-50%)`;
}
let rotateList = [
  "rotateX(-90deg)",
  "rotateX(90deg)",
  "rotateY(90deg)",
  "rotateY(-90deg)",
  "",
  "rotateX(-180deg)",
];
let range = document.getElementsByClassName("range")[0];
let show = document.getElementsByClassName("show")[0];
let btn = document.getElementsByClassName("btn")[0];
let card= document.getElementsByClassName("card")[0];
btn.addEventListener('click',()=>{
  btn.style.display = 'none'
  range.style.display = 'block'
  card.style.opacity = '1'
  show.style.transform = rotateList[0];
})
function change() {
  show.style.transform = rotateList[range.value];
}

项目源码

您可以在GitHub上找到完整的项目源码,点击这里查看。

没有GitHub也没关系,我已经将所有代码都放在上面的文章里面了,直接用就行,想换图片的也可以找自己喜欢的图片加以改动。

知识点介绍 (大佬请绕道)

在这个项目中,我们涉及了许多前端开发的核心知识点,包括:

  • HTML 结构的构建
  • CSS 样式的设计
  • JavaScript 动画的实现
  • 背景图轮播的逻辑
  • CSS 3D变换的使用

HTML 结构的构建

HTML(HyperText Markup Language)是用于构建网页结构的标记语言。在我们的项目中,HTML被用于定义页面的内容和结构。

  • HTML 文档结构: HTML文档通常由<!DOCTYPE>, <html>, <head>, 和 <body>等标签组成。<!DOCTYPE> 声明定义了文档类型,<html> 标签包含整个文档内容,<head> 标签包含文档的元信息,如标题和样式表链接,而 <body> 标签包含网页内容。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>My Personal Card</title>
</head>
<body>
    <!-- 内容将在这里插入 -->
</body>
</html>

HTML 元素:<body> 标签内,我们可以使用各种HTML元素来创建网页的内容,如标题、段落、图像、链接等。

<h1>欢迎来到我的个人名片</h1>
<p>我是一个前端开发者。</p>
<img src="my-photo.jpg" alt="我的照片">
<a href="https://example.com">查看我的项目</a>

2. CSS 样式的设计

CSS(Cascading Style Sheets)用于定义网页的样式和布局。在我们的项目中,CSS被用于美化和布局网页元素。

  • 样式选择器: CSS通过选择器来选择要应用样式的元素。例如,要选择所有段落元素,可以使用 p 选择器。
p {
    color: #333; /* 文字颜色 */
    font-size: 16px; /* 字体大小 */
    margin: 10px 0; /* 外边距 */
}

 样式属性: CSS属性定义了元素的外观,如颜色、字体、间距等。

h1 {
    color: #FF5733; /* 标题文字颜色 */
    font-size: 24px; /* 标题字体大小 */
}

布局和定位: CSS还可以用于创建布局和定位元素,如使用 marginpadding 控制元素之间的间距,或使用 positionfloat 属性控制元素的位置。

#my-photo {
    width: 150px;
    height: 150px;
    border-radius: 50%; /* 圆形图片 */
}

3. JavaScript 动画的实现

JavaScript是一种编程语言,可以用于为网页添加交互性和动画效果。在我们的项目中,JavaScript用于实现背景图像轮播和卡片翻转效果。

  • DOM 操作: JavaScript可以用于选择、修改和操作HTML元素,例如使用 document.getElementById() 来选择特定的元素。
const myPhoto = document.getElementById('my-photo');
myPhoto.src = 'new-photo.jpg';

定时器: JavaScript的 setTimeout()setInterval() 函数可以用于在一段时间后执行代码,实现动画效果。

function changeBackground() {
    // 更改背景图像的代码
}
setInterval(changeBackground, 4000);

4. 背景图轮播的逻辑

背景图像轮播是一种常见的网页效果,通过定时更改background-image属性来实现。每隔一段时间,我们更改背景图像的URL,从而创造出图像轮播的效果。

const backgroundImages = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
let currentIndex = 0;

function changeBackgroundImage() {
    document.body.style.backgroundImage = `url('${backgroundImages[currentIndex]}')`;
    currentIndex = (currentIndex + 1) % backgroundImages.length;
}
setInterval(changeBackgroundImage, 4000);

5. CSS 3D变换的使用

CSS 3D变换允许元素在3D空间中旋转和移动,创建出令人印象深刻的3D效果。

  • transform 属性: 使用 transform 属性可以将元素移动、旋转和缩放。
.cube {
    width: 100px;
    height: 100px;
    transform: rotateX(45deg) rotateY(45deg);
}

透视性: 使用 perspective 属性可以设置3D变换的观看距离,影响3D效果的强弱。

.card {
    perspective: 1000px;
}

3D变换: 使用 rotateX(), rotateY(), rotateZ(), translateX(), translateY()等函数来进行3D变换。

.is_top {
    transform: rotateX(90deg) translateZ(100px);
}

结语

通过这个项目,我们学习了如何创建一个具有背景轮播和3D卡片翻转效果的个人名片网页。这不仅仅是一个有趣的项目,还是学习前端开发的绝佳方式。希望这篇博客对您有所帮助,如果您有任何问题或建议,请随时留言。

 🌌点击下方个人名片,交流会更方便哦~(欢迎到博主主页加入我们的 CodeCrafters联盟一起交流学习↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓   

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

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

相关文章

java智慧工地云平台源码 人工智能AI+多系统集成+智能预警平台

智慧工地云平台源码 人工智能AI多系统集成智能预警平台 智慧工地企业级监管平台融入AIoT、移动互联网和物联网等领先技术&#xff0c;再结合工地“人、机、料、法、环”五大要素&#xff0c;劳务实名制管理、环境监测管理、安全施工管理、质量及能耗管理等智慧化应用&#xff0…

21.8 Python 使用BeautifulSoup库

BeautifulSoup库用于从HTML或XML文件中提取数据。它可以自动将复杂的HTML文档转换为树形结构&#xff0c;并提供简单的方法来搜索文档中的节点&#xff0c;使得我们可以轻松地遍历和修改HTML文档的内容。广泛用于Web爬虫和数据抽取应用程序中。 读者如果需要使用这个库&#x…

Leetcode---368周赛

题目列表 2908. 元素和最小的山形三元组 I 2909. 元素和最小的山形三元组 II 2910. 合法分组的最少组数 2911. 得到 K 个半回文串的最少修改次数 一、元素和最小的山形三元组I 没什么好说的&#xff0c;不会其他方法就直接暴力&#xff0c;时间复杂度O(n^3)&#xff0c;代…

SpringCloudGateway 入门

目录 POM 依赖一、内容网关的作用Spring-Cloud-Gateway的核心概念 二、基于Ribbon的负载均衡三、核心概念详细3.1 断言 Predicate3.2 过滤器3.2.1 内置过滤器3.2.2 自定义过滤器构造器&#xff08;原理&#xff09;资源结构Route / Predicate 的构造器构造器的增强器整体协同关…

人大金仓(Kingbase)部署

点击上方蓝字关注我 1. 介质下载 下载地址&#xff1a;https://www.kingbase.com.cn/rjcxxz/index.htm 选择安装包及授权文件&#xff1a;根据对应的操作系统类型选择安装包 2. 部署环境配置 2.1 部署环境&#xff1a; 8C 16G KylinV10SP3系统 2.2 修改操作系统内核参数 sy…

什么是pmp证书,pmp证书有什么用,pmp项目管理证书的认证考试时间是什么时候啊?

PMP是项目管理证书&#xff0c;目标是项目经理。 英文全称是Project Management Professional&#xff0c;中文全称叫做项目管理专业人士资格认证。 它是由美国项目管理协会&#xff08;PMI&#xff09;在全球范围内推出的针对项目经理的资格认证体系&#xff0c;严格评估项目…

贪心算法总结(未完结)

贪心的定义&#xff08;摘自百度百科&#xff09; 贪心算法&#xff08;greedy algorithm&#xff0c;又称贪婪算法&#xff09;是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;算法得到的…

LeetCode刷题:26. 删除有序数组中的重复项

文章目录 写在前面⭐️26. 删除有序数组中的重复项⭐️&#x1f510;题目描述&#x1f4a1;解题思路&#x1f511;代码 写在前面 本题的题解代码是用C语言编写的。 &#x1f4d2;博客主页&#xff1a;2023Fighting的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f…

Springboot 使用JavaMailSender发送邮件 + Excel附件

目录 1.生成Excel表格 1.依赖设置 2.代码&#xff1a; 2.邮件发送 1.邮件发送功能实现-带附件 2.踩过的坑 1.附件名中文乱码问题 3.参考文章&#xff1a; 需求描述&#xff1a;项目审批完毕后&#xff0c;需要发送邮件通知相关人员&#xff0c;并且要附带数据库表生成的…

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]

文本编辑器概要 在Ubuntu系统下&#xff0c;有许多文本编辑器可供选择&#xff0c;每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器&#xff1a; Gedit&#xff1a; 这是Ubuntu默认的文本编辑器&#xff0c;它简单易用&#xff0c;适合基本的文本编辑任务。 安…

Java采集传感器数据,亲测有效!

背景 先说背景&#xff0c; 最近公司项目需要用到传感器&#xff0c;采集设备温湿度&#xff0c;倾斜角&#xff0c;电流…&#xff0c;公司采购采购了一个温湿度传感器给我们开发测试使用&#xff0c;如下图&#xff1a; 看着还挺精致有没有。 进入正题 有了这个温湿度传感器…

【Leetcode】【每日一题】【中等】1465. 切割后面积最大的蛋糕

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/maximum-area-of-a-piece-of-cak…

Vue3+Element-Plus项目 el-table 拖拽排序实现,Vue3项目sortablejs的安装与使用

概述 技术栈&#xff1a; Vue3 Ts Vite Element-Plus 实现&#xff1a;实现 sortablejs 实现 el-tabel 的拖拽排序&#xff0c;可滚动排序&#xff0c;并实现拖拽排序的开启与关闭 文章目录 概述一、先看效果二、安装 sortablejs三、sortablejs 封装3.1 utilts 封装3.2 全局…

SpringBoot 定时任务:@EnableScheduling @Scheduled

Scheduled注解参数 cron参数 这个参数是最经常使用的参数&#xff0c;表示接收一个cron参数&#xff0c;cron它是一个表达式&#xff0c;最多接收7个参数&#xff0c;从左到右分别表示&#xff1a;秒 分 时 天 月 周 年&#xff1b;参数以空格隔开&#xff0c;其中年不是必须参…

【JAVA学习笔记】48 - 八大常用Wrapper类(包装类)

一、包装类 1.针对八种基本定义相应的引用类型一包装类 2.有了类的特点&#xff0c;就可以调用类中的方法。 黄色背景的表示父类是Number 二、包装类和基本数据的转换 演示包装类和基本数据类型的相互转换&#xff0c;这里以int和Integer演示。 1.jdk5前的手动装箱和拆箱方…

STM32 TIM(四)编码器接口

STM32 TIM&#xff08;四&#xff09;编码器接口 编码器接口简介 Encoder Interface 编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的…

取Dataset子集(pytorch)

取Dataset子集--pytorch 1. why2. how3. example 1. why 我们在调试深度学习代码时&#xff0c;常常会遇到数据集太大&#xff0c;导致调试浪费时间的情况&#xff0c;这种情况下&#xff0c;将数据集中的一个子集拿出来用于调试代码&#xff0c;调试成功在用完整的数据集运行…

elementUI el-table实现鼠标悬浮某一行,在鼠标右侧展示提示信息

背景 el-table组件中&#xff0c;可以通过勾选某条数据来创建单据&#xff0c;但是有些数据没有权限使用&#xff0c;就需要禁用掉勾选的功能&#xff0c;然后当鼠标悬浮在这一行的时候&#xff0c;展示类似于toolTip的提示框。 除了当鼠标悬浮在某一行&#xff0c;展示类似于…

离散数学速成视频推荐(讲的不错)

【拯救者】离散数学速成(期末考研专升本) 适合人群 期末 考研 复试 转升本 月考都可以用 课程大纲 适用课本 适用于所有离散数学课本 按课本章节来&#xff0c; 抽取重点&#xff0c;翻译为人话 学习步骤&#xff1a; 每一章&#xff0c;都会【讲会考的基础&#x1f4bb;】&a…

跨平台Markdown编辑软件Typora mac中文版功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…