北京科技网站建设/网购平台推广方案

北京科技网站建设,网购平台推广方案,制作网站建设规划书的结构为,免费代码下载下面提供一个由浅入深、按步骤拆解的示例教程,让你能从零开始,逐步理解并实现带有旋转及悬停动画的社交图标效果。为了更简单明了,以下示例仅创建四个图标(Facebook、Twitter、Google、LinkedIn),并在每一步…

下面提供一个由浅入深、按步骤拆解的示例教程,让你能从零开始,逐步理解并实现带有旋转及悬停动画的社交图标效果。为了更简单明了,以下示例仅创建四个图标(Facebook、Twitter、Google+、LinkedIn),并在每一步都附带代码展示和讲解。


在这里插入图片描述

第 0 步:项目结构说明

先准备两个文件:

  1. index.html
    • HTML 的主体结构
  2. style.css
    • 样式代码,控制图标外观与动画

目录结构如下:

project/|- index.html|- style.css

后面每一步都会提示你往哪个文件里添加或修改代码。


第 1 步:创建最基础的 HTML 骨架

index.html 中,先写一个最简化的结构,并在 <head> 区域中引入 Font Awesome(用于社交媒体图标)。

<!-- index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>社交图标旋转动画示例</title><!-- 引入 Font Awesome 4.7.0 CDN,用于显示社交媒体图标 --><linkrel="stylesheet"href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"><!-- 引入我们自己的CSS文件 --><link rel="stylesheet" href="style.css">
</head>
<body><!-- 预留一个容器,用来放置社交媒体图标的列表 --><ul class="icon-list"><!-- 四个图标,每个图标对应一个 <li> --><li class="icon-item"><a href="#" class="icon-link"><!-- 多个 <span> 用于分层, 这里先简单放一个,占位 --><span class="fa fa-facebook"></span></a></li><li class="icon-item"><a href="#" class="icon-link"><span class="fa fa-twitter"></span></a></li><li class="icon-item"><a href="#" class="icon-link"><span class="fa fa-google-plus"></span></a></li><li class="icon-item"><a href="#" class="icon-link"><span class="fa fa-linkedin"></span></a></li></ul></body>
</html>

说明

  • <ul class="icon-list"> 中放了四个 <li>,每个 <li> 都用 <a> 包裹图标,方便用户点击跳转到对应社交页面(此处链接为 # 占位)。
  • <span class="fa fa-xxx"> 指定了具体图标。
  • 现在只放了一个 <span>(实际成品会放多个 <span> 叠加实现分层,但我们先保持简洁,后面会逐步添加)。

第 2 步:初步的 CSS 布局与样式

先给 style.css 添加一些基础样式,让列表水平居中、图标摆放整齐。

/* style.css *//* 通用的复位 */
* {margin: 0;padding: 0;box-sizing: border-box;
}/* 让 body 高度占满浏览器,使用 flex 居中对齐 */
body {height: 100vh;display: flex;justify-content: center;align-items: center;background: #f3f3f3; /* 一个浅灰背景 */
}/* 让 ul 横向排列,并去掉默认的项目符号 */
.icon-list {list-style: none;display: flex;gap: 40px; /* 图标间的间隙 */
}/* 每个图标项的基础大小和摆放 */
.icon-item {width: 60px;height: 60px;list-style: none;margin: 0 10px;background: #ccc; /* 初步观察用的灰色背景,后面再细化 */display: flex;align-items: center;justify-content: center;
}/* <a> 链接的基础样式,去除默认的下划线 */
.icon-link {text-decoration: none;color: #fff; /* 字体颜色改成白色,方便在深色背景下显示 */font-size: 30px; display: flex;align-items: center;justify-content: center;width: 100%;height: 100%;
}/* 先给图标项加个简单的圆角,看着更好看 */
.icon-item {border-radius: 8px;
}

效果预览

  • 打开 index.html,可以看到四个浅灰色方块,里面各自放一个白色的社交图标。还没有任何旋转或动画效果,这时只是一个基础的“网格”排版。

第 3 步:让图标倾斜(添加 transform

根据示例需求,图标会有一个倾斜或旋转的视觉效果。我们可以直接对 .icon-item 做变换,例如旋转 -30deg 并倾斜 25deg

/* 在 style.css 里,给 .icon-item 增加 transform 属性 */
.icon-item {/* 原有的宽高、背景、省略 */transform: rotate(-30deg) skew(25deg);/* 可以额外尝试transition,悬停时再变回来 */transition: 0.5s;
}

第 4 步:添加多层 <span>,为后续动画做准备

在实际的分层动画中,每个图标要有多个 <span> 叠加。一个常见做法是在同一个位置重叠多个 <span>,然后在悬停时让它们分别平移、改变透明度,产生“撕裂”或“分层”效果。

下面,就以单个 <li> 为例,示范把 <span class="fa fa-xxx"> 拆成 5 个 <span>,其中最后一个用来显示社交图标,其余 4 个只是“彩色层”。请在 index.html 内修改四个 <li> 里的结构:

<li class="icon-item"><a href="#" class="icon-link"><!-- 前四个 span 仅仅是背景层,用来分层 --><span></span><span></span><span></span><span></span><!-- 第五个 span 才是真正的图标 --><span class="fa fa-facebook"></span></a>
</li>

同理,把另外三个图标也改成这样(只把 fa-facebook 改成对应的 fa-twitterfa-google-plusfa-linkedin)。
此时,如果你再刷新页面,你会看到所有图标变成了大黑块 —— 因为我们还没给这几个新的 <span> 设置正确的样式。


第 5 步:定位这些 <span> 并设置颜色

先把 .icon-link span 统一定位到同一个位置(顶层重叠),再分别给不同图标设置他们常见的主题色。

/* 在 style.css 里加上如下规则 *//* 让 .icon-link 下面的所有 span 都绝对定位、完全覆盖 */
.icon-link span {position: absolute; /* 基于 .icon-link 定位 */top: 0;left: 0;width: 100%;height: 100%;background: #000;        /* 默认背景,先给黑色 */display: flex !important;           /* 让图标居中 */align-items: center;justify-content: center;font-size: 30px !important;color: #fff;             /* 字体/图标颜色 */transition: 0.5s;        /* 后面做动画会用到 */border-radius: 8px;
}.icon-item:hover span {border-radius: 8px;
}/* 但 .icon-item 本身默认是倾斜的,如果需要让这些 span 撑满父级,就要给.icon-link 设为 position: relative; */
.icon-link {position: relative;overflow: hidden; /* 防止动画时溢出 */
}/* 分别给第 1、2、3、4 个 icon-item 下的 span 设置不同颜色 */
.icon-list li:nth-child(1) span {background: #3b5999; /* Facebook */
}.icon-list li:nth-child(2) span {background: #55acee; /* Twitter */
}.icon-list li:nth-child(3) span {background: #dd4b39; /* Google+ */
}.icon-list li:nth-child(4) span {background: #0077b5; /* LinkedIn */
}.icon-list li:nth-child(5) span {background: #e4405f;
}

注意:由于现在有 5 个 <span>,且我们给所有 <span> 写了 background,所以图标(fa-xxx)也被背景覆盖
但没关系,我们稍后要通过“分层 + 悬停时平移”把下层展现出来,最上方会看到图标本身。


第 6 步:添加鼠标悬停动画(把多层 <span> 拆开)

现在,为了实现分层效果,我们可以针对每个 <span> 在鼠标悬停时给它们不同的 translate 平移量和 opacity

先理解下思路:

  1. 默认状态:多个 <span> 叠在一起,看起来就是一个整体。
  2. 鼠标悬停:通过 :hover span:nth-child(n) 这样的选择器,让每一层 <span>(按照顺序)位移不同的距离,并且透明度也不同。

style.css 里补充如下代码(你可以在文件末尾添加):

/* 鼠标悬停在每个图标时,做分层平移和渐变 */
.icon-item:hover span:nth-child(5) {transform: translate(40px, -40px);opacity: 1;
}
.icon-item:hover span:nth-child(4) {transform: translate(30px, -30px);opacity: 0.8;
}
.icon-item:hover span:nth-child(3) {transform: translate(20px, -20px);opacity: 0.6;
}
.icon-item:hover span:nth-child(2) {transform: translate(10px, -10px);opacity: 0.4;
}
.icon-item:hover span:nth-child(1) {transform: translate(0, 0);opacity: 0.2;
}/* 如果想让默认状态下也叠加在一起,最好都不移动并 opacity = 1但这里图标最上层实际是 .fa-xxx,对上层的 background 也要做些处理:不过最简单的方式是,都保持 1,就会挡住下面的层。你可以让上面背景做点透明处理,保证能看到下面的色阶。或者再分配一套默认的 transform/opacity。
*/

效果解析

  • .icon-item:hover span:nth-child(5):因为这是最后一个 <span>,里边带有 fa-xxx 图标,我们让它在悬停时移动最大,并且 opacity: 1 保持完全不透明。
  • 其他 <span> 就做逐层递减的位移与透明度,形成向下错落的层级感。
进一步优化
  • 如果你发现最底层的 <span>nth-child(1))在默认状态就挡住了图标,你可以给默认状态加 opacity: 0 或者 .icon-link span:nth-child(-n+4) { opacity: .6 } 之类的设置,以让你在不悬停时也能看见图标。
  • 也可以让图标的 <span class="fa ..."> 放在第一个 <span>,其他背景的放在后面,只要注意 :nth-child() 的顺序,灵活调试即可。

第 7 步:测试与调试

  1. 刷新页面:默认时候,四个图标可能看上去还是彼此叠加在一起,或者部分被覆盖。
  2. 鼠标悬停:移动到某个图标时,应该看到图标立刻分层散开、色块呈现不同的位移与透明度,从而得到一个酷炫的分层效果。

如果想让动画更缓慢或更迅速,可以修改:

transition: 0.2s; /* 让动画更快 */
transition: 1s;   /* 让动画更慢 */

第 8 步:根据需要微调或扩展

  1. 修改图标
    • Font Awesome 提供了众多类名,你可以把 fa-facebook 等换成你喜欢的:比如 fa-instagram, fa-github, fa-youtube 等。
  2. 修改主题颜色
    • .icon-list li:nth-child(n) span 中更改 background 值即可改变层的颜色搭配。
  3. 修改位移距离和角度
    • translate(40px, -40px) 可以改成任何数值,比如 (30px, -50px) 等,创造不同方向和错落感。
    • 也可以把 rotate(-30deg) skew(25deg) 改成其他角度。
  4. 鼠标移开时还原
    • 本示例是鼠标移开就自动还原,如果你想做不一样的动画,可以增加 :hover 之外的默认样式定义,比如:
      .icon-item span:nth-child(5) {transform: translate(0, 0);opacity: 1;
      }
      .icon-item span:nth-child(4) {transform: translate(0, 0);opacity: 1;
      }
      /* 依此类推 */
      
      这样就能确保鼠标移开后回到初始叠加状态。

总结

通过以上分步骤的讲解,你应该能清晰地知道代码是如何搭建与运行的:

  1. 搭建基础 HTML:列表 & 链接 & 图标占位
  2. 初始样式布局:使用 flex 居中,把列表横向摆放
  3. 图标倾斜或旋转transform 基本变换
  4. 多层 <span>:为图标增加分层结构
  5. 定位与颜色:用绝对定位让所有 <span> 重叠,分配不同的背景色
  6. 鼠标悬停动画:通过 :hover 改变 translateopacity,让各层散开

就这样,一个简洁的分层旋转社交图标效果就完成了。希望这个拆解式教程能帮助你理解各部分的功能,并在实际项目中灵活运用。祝你学习愉快!

参考链接

https://github.com/Chalarangelo/30-seconds-of-code

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

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

相关文章

HarmonyOS第22天:解锁鸿蒙服务开发

走进鸿蒙服务开发的世界 在移动应用开发的领域中&#xff0c;HarmonyOS 以其独特的分布式理念和强大的系统能力&#xff0c;为开发者们开辟了一片崭新的天地。其中&#xff0c;服务开发作为 HarmonyOS 应用开发的关键环节&#xff0c;犹如一把神奇的钥匙&#xff0c;能够帮助开…

鸿蒙应用程序包HAP的开发与使用

1、HAP是什么&#xff1f; HAP&#xff08;Harmony Ability Package&#xff09;是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包&#xff0c;其主要分为两种类型&#xff1a;entry和feature。 entry&#xff1a;应用的主模块&#x…

解决qt中自定插件加载失败,不显示问题。

这个问题断断续续搞了一天多&#xff0c;主要是版本不匹配问题。 我们先来看下 Based on Qt 6.6.0 → 说明 Qt Creator 本身 是基于 Qt 6.6.0 框架构建的。MSVC 2019, 64-bit → 说明 Qt Creator 是使用 Microsoft Visual C 2019 编译器&#xff08;64 位&#xff09; 编译的。…

进程间通信--匿名管道

进程间通信介绍 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&…

CSS块元素、行内元素、行内块元素详解

一、块元素&#xff08;Block Elements&#xff09; 1.定义与特点 独占一行&#xff1a;默认情况下&#xff0c;块元素会从新的一行开始&#xff0c;并且其后的元素也会被推到下一行。可设置宽高&#xff1a;可以自由设置宽度&#xff08;width&#xff09;和高度&#xff08…

Word 小黑第22套

对应大猫23 续编号&#xff08;编号断了&#xff0c;从一开始&#xff09;&#xff1a;点编号&#xff0c;再设置编号值 插入以图标方式显示的文档&#xff1a;插入 -对象 -由文件创建 &#xff08;这里要链接到文件也要勾选 不然扣一分&#xff09; 一个页面设为横向不影响上…

平面波扬声器 VS球面波扬声器的原理与优缺点对比

一、核心定义与原理 1、平面波扬声器 1.1、平面波扬声器的定义‌&#xff1a;通过“相控阵”技术控制声波相位&#xff0c;使声波以平行线&#xff08;面&#xff09;定向传播的扬声器&#xff0c;声波近似平面振动&#xff0c;能量集中且衰减缓慢‌。 1.2、平面波扬声器的原…

设计模式之命令设计模式

命令设计模式&#xff08;Command Pattern&#xff09; 请求以命令的形式包裹在对象中&#xff0c;并传给调用对象。调用对象寻找可以处理该命令的对象&#xff0c;并把该命令传给相应的对象执行命令&#xff0c;属于行为型模式命令模式是一种特殊的策略模式&#xff0c;体现的…

力扣hot100二刷——二叉树

第二次刷题不在idea写代码&#xff0c;而是直接在leetcode网站上写&#xff0c;“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路&#xff0c;编程也很流利⭐⭐Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答⭐⭐⭐Sl…

从“自习室令牌”到线程同步:探秘锁与条件变量

目录 互斥 为什么需要锁 锁的原理--互斥 锁的使用 同步 锁的问题 条件变量 互斥 为什么需要锁 先看结果&#xff1a; 以下代码是我模拟创建线程抢票&#xff0c;由于不加锁导致票抢到了负数 main.cc: #include<vector> #include<iostream> #include"…

字符串哈希从入门到精通

一、基本概念 字符串哈希是将任意长度的字符串映射为固定长度的哈希值&#xff08;通常为整数&#xff09;的技术&#xff0c;核心目标是实现O(1)时间的子串快速比较和高效查询。其本质是通过数学运算将字符串转换为唯一性较高的数值&#xff0c;例如&#xff1a; ​​​​​​…

什么是数学建模?数学建模是将实际问题转化为数学问题

数学建模是将实际问题转化为数学问题&#xff0c;并通过数学工具进行分析、求解和验证的过程。 一、数学建模的基本流程 问题分析 • 明确目标&#xff1a;确定需要解决的核心问题。 • 简化现实&#xff1a;识别关键变量、忽略次要因素。 • 定义输入和输出&#xff1a;明确模…

搭建主从服务器

任务需求 客户端通过访问 www.nihao.com 后&#xff0c;能够通过 dns 域名解析&#xff0c;访问到 nginx 服务中由 nfs 共享的首页文件&#xff0c;内容为&#xff1a;Very good, you have successfully set up the system. 各个主机能够实现时间同步&#xff0c;并且都开启防…

AlexNet 有哪些首创?

现在大家每逢讨论人工智能&#xff0c;都离不开深度学习&#xff0c;这轮深度学习的热潮&#xff0c;追根溯源可以到2012年 AlexNet 的横空出世。后来&#xff0c;大家开始发现深度学习越来越强的能力。 AlexNet 的首创贡献 AlexNet&#xff08;2012年&#xff09;作为现代深…

【Linux我做主】基础命令完全指南上篇

Linux基础命令完全指南【上篇】 Linux基础命令完全指南github地址前言命令行操作的引入Linux文件系统树形结构的根文件系统绝对路径和相对路径适用场景Linux目录下的隐藏文件 基本指令目录和文件相关1. ls2. cd和pwdcdpwd 3. touch4. mkdir5. cp6. mv移动目录时覆盖写入的两种特…

OceanBase 用户问题精选答疑:OceanBase 版本升级解析

背景 此篇博客的源自于OceanBase社区论坛内一位名为皇甫侯的热心用户所提的建议&#xff0c;希望向OceanBase的用户介绍OceanBase的版本升级路径。本文以一个版本升级为示例&#xff0c;汇总了对用户而言比较重要的版本升级要点&#xff0c;期望通过这份分享&#xff0c;能让读…

Docker Desktop 安装与使用详解

目录 1. 前言2. Docker Desktop 安装2.1 下载及安装2.2 登录 Docker 账号2.3 进入 Docker Desktop 主界面 3. Docker 版本查看与环境检查3.1 查看 Docker Desktop 支持的 Docker 和 Kubernetes 版本3.2 检查 Docker 版本 4. Docker Hub 和常用镜像管理方式4.1 使用 Docker Hub4…

推理大模型的后训练增强技术-Reasoning模型也进化到2.0了,这次居然学会用工具了

论文题目&#xff1a;START: Self-taught Reasoner with Tools 论文链接&#xff1a;https://arxiv.org/pdf/2503.04625 论文简介 Reasoning模型也进化到2.0了&#xff0c;这次居然学会用工具了&#xff01;✨ 最近有个叫START的方法&#xff0c;让大模型也能学着用工具&#…

基于llama.cpp的QwQ32B模型推理

基于llama.cpp的QwQ32B模型推理 llama.cpp项目主页&#xff1a; https://github.com/ggml-org/llama.cpp# llama.cpp源码下载 cd /root/lanyun-tmpgit clone https://github.com/ggml-org/llama.cpp#llama.cpp编译 llama.cpp是个C语言项目&#xff0c;实际调用过程需要先构建项…

如何使用Spring AI提示词模板PromptTemplate?

如何使用Spring AI提示词模板PromptTemplate 目录 如何使用Spring AI提示词模板PromptTemplate 1、提示词Prompt介绍 2、Spring Boot集成Spring AI框架 3、提示词模板PromptTemplate用法 4、开发代码使用PromptTemplate 5、启动Springboot工程并验证 本文章节介绍Prompt…