使用Tailwind CSS创建自定义动画,进阶您的前端开发技能

news2024/9/20 20:46:15

从零开始,探索如何使用 TailwindCSS 自定义动画

d0661b0575e419d5534744d6146df3f5.jpeg

Tailwind CSS是一种颠覆性的CSS框架,改变了开发者处理前端开发的方式。它的低级性和移动优先的方法使得它成为设计独特、响应式和可扩展的网页设计的热门选择。此外,它还具有强大的动画支持,使开发者能够构建引人入胜的用户体验,吸引访问者。

本文将详细介绍如何使用TailwindCSS进行动画设计。我们将逐步介绍框架提供的不同种类的动画,并提供步骤说明,帮助您将它们整合到应用程序中。本文将引导个人通过添加简单的悬停动画以及更复杂的动画来掌握必要的技能和专业知识,为您的网站创建引人入胜的动画效果。

建立开发环境

1、首先,我们应该在React应用程序中安装和设置TailwindCSS,具体步骤如下:通过运行以下命令并选择React作为框架来创建一个React应用程序:

npm init vite

2、接下来,使用以下命令安装TailwindCSS和其他依赖项,如postcss和autoprefixer:

npm install -D tailwindcss postcss autoprefixer

3、运行命令 "npx tailwindcss init -p" 来创建配置文件,并打开 tailwind.config.js 文件,将其内容替换为提供的代码片段。

/** @type {import('tailwindcss').Config} */

module.exports = {
content: [
   "./src/**/*.{js,jsx,ts,tsx}",
 ],
 theme: {
   extend: {},
 },
 plugins: [],
}

最后,在 src/index.css 文件中粘贴以下代码片段:

@tailwind base;
@tailwind components;
@tailwind utilities;

现在我们可以在React应用程序中使用TailwindCSS了。

深入了解TailwindCSS动画,为现代网页设计增添视觉魅力

Tailwind CSS默认提供了四个动画属性,用于为您的网页添加一些视觉效果。这些动画旨在简单地集成到您的项目中,以改善用户体验。

在这里,我们将详细介绍每个动画,提供完整的示例,演示如何将它们整合到我们的网站设计中。

animate-spin

想要在您的网站上添加加载或旋转动画吗?只需包含 "animate-spin" 属性,动画将自动应用。让我们来看一个例子。

import React from 'react';

function App() {
   return (
       <div className='w-screen h-screen flex justify-center items-center'>
           <button
               type="button"
               className="flex bg-red-500 text-white px-4 py-2 rounded-md"
           >
               <svg className="h-5 w-5 mr-3 animate-spin" viewBox="0 0 24 24">
                   <circle cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4" fill="none" />
                   <path fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647zM12 20.735a8 8 0 008-8h4a12 12 0 01-12 12v-4.265zM20 12a8 8 0 01-8 8v4.265a12 12 0 0012-12h-4zm-8-6.735a8 8 0 018-8v-4.265a12 12 0 00-12 12h4z" />
               </svg>
               Processing...
           </button>
       </div >
   );
}


export default App;

运行后的效果如下:

ac5337a88ec92a2c8af4d5a4d74890cc.gif

animate-pulse

除了 "animate-spin" 属性外,TailwindCSS 还提供了 "animate-pulse" 属性,用于淡入淡出元素。这个属性特别适用于创建骨架加载器和其他类似的视觉效果。

import React from 'react';

function App() {
   return (
       <div className='w-screen h-screen flex justify-center items-center'>
           <button
               type="button"
               className="flex bg-red-500 text-white px-4 py-2 rounded-md animate-pulse"
           >
               <svg className="h-5 w-5 mr-3 animate-spin" viewBox="0 0 24 24">
                   <circle cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4" fill="none" />
                   <path fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647zM12 20.735a8 8 0 008-8h4a12 12 0 01-12 12v-4.265zM20 12a8 8 0 01-8 8v4.265a12 12 0 0012-12h-4zm-8-6.735a8 8 0 018-8v-4.265a12 12 0 00-12 12h4z" />
               </svg>
               Processing...
           </button>
       </div >
   );
}

export default App;

运行后的效果如下:

333b4e540d63d5a16a7826b51f983735.gif

animate-bounce

要使元素上下弹跳,只需使用 animate-bounce。如果您想引起注意,这是很有用的。

import React from 'react';

function App() {
   return (
       <div className='w-screen h-screen flex justify-center items-center'>
           <button
               type="button"
               className="flex bg-red-500 text-white px-4 py-2 rounded-md animate-bounce">
               Processing...
           </button>
       </div >
   );
}

export default App;

运行后的效果如下:

c7efa46cd8ed1fbd937c5a6f6b202ee6.gif

animate-ping

最后一个TailwindCSS动画属性是 animate-ping。这个属性创建了一个雷达信号或水波纹效果,非常适合通知徽章和其他类似的设计元素。

import React from 'react';

function App() {
   return (
       <div className='w-screen h-screen flex justify-center items-center'>
           <button
               type="button"
               className="flex bg-red-500 text-white px-4 py-2 rounded-md animate-ping"
           >
               Processing...
           </button>
       </div >
   );
}

export default App;

运行后的效果如下:

254ce33d420a3a7e2a81866a89f60814.gif

这些是默认的动画,也可以应用于悬停或激活状态:

<button type="button" className="hover:animate-ping"> Processing… </button>

这些动画可以应用于响应式断点。

<button className="md:animate-ping">Processing…</button>

注:当屏幕宽度大于等于 md (medium)断点时,为按钮元素添加动画效果 animate-ping,以增强用户体验。同时,按钮上显示 "Processing..." 文字,表示正在处理中。

使用TailwindCSS创建自定义动画

TailwindCSS通过传递单个属性,提供了一个简单的方法来使用内置动画。但是,开发者也可以根据自己的要求创建自定义动画。

例如,您可以通过修改 "tailwind.config.css" 文件来设计独特的动画。这使开发者能够生成与其项目需求完全适配的动画。

在 tailwind.config.js 文件中:

/** @type {import('tailwindcss').Config} */


module.exports = {
 content: [
   "./src/**/*.{js,jsx,ts,tsx}",
 ],
 theme: {
   extend: {
     animation: {
       'button-rotate': 'button-rotate 2s ease-in-out infinite',
     },
     keyframes: {
       'button-rotate': {
         '0%': { transform: 'scale(1) rotate(0deg)' },
         '50%': { transform: 'scale(1.5) rotate(180deg)' },
         '100%': { transform: 'scale(1) rotate(360deg)' },
       },
     },
   },
 },
 plugins: [],
}

在这个例子中,它创建了一个名为 "button-rotate" 的自定义动画,包括一个无限循环、一个 "ease-in-out" 缓动函数和每个循环持续时间为两秒。

App.js

import './App.css';

function App() {
 return (
   <div class="flex justify-center items-center h-screen w-screen">
     <button class="animate-button-rotate bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full">
       Click Me
     </button>
   </div>
 )
}

export default App;

运行后的效果如下:

900d47eb8da1ed807541cae51bc67b99.gif

利用任意值进行TailwindCSS动画

使用 TailwindCSS,开发者可以在框架内使用独特的 CSS 属性,这得益于一个称为 "任意值" 的功能。

通过在 TailwindCSS 类中添加方括号中的值,此功能使设计方面的调整如位置和填充变得更加灵活。

例如,我们可以包括 padding-[5px]、bottom-[17px] 等属性。

简而言之,TailwindCSS 中的任意值特性提供了灵活性和定制选择,快速生成具有美观效果的网页设计。

同样的,也可以用来创建自定义动画。

import React from ‘react’;

function App() {
 return (
   <div class="flex justify-center items-center h-screen w-screen">
     <button class="animate-[wiggle_1s_ease-in-out_infinite] bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full">
       Click Me
     </button>
   </div>
 );
}

export default App;

这里我们使用了 "animate-[
wiggle_1s_ease-in-out_infinite]",具有特定的设置。现在,让我们立即指定关键帧。

tailwind.config.js

/** @type {import('tailwindcss').Config} */

module.exports = {
 content: [
   "./src/**/*.{js,jsx,ts,tsx}",
 ],
 theme: {
   extend: {
     keyframes: {
       'wiggle': {
         '0%': { transform: 'scale(1) rotate(0deg)' },
         '50%': { transform: 'scale(1.5) rotate(180deg)' },
         '100%': { transform: 'scale(1) rotate(360deg)' },
       },
     },
   },
 },
 plugins: [],
}

这样做的结果将与我们在自定义动画部分指定的相同。

结束

当您掌握了 TailwindCSS 的动画功能后,您将可以通过使用内置动画属性或创建自定义动画来轻松地为网页增添视觉效果,从而提升用户体验。

通过在 TailwindCSS 类中使用任意值,您还可以调整设计方面的其他细节。这个特性提供了灵活性和个性化的选择,以便快速生成美观的网页设计。

希望您通过本文学习到如何使用 TailwindCSS 创建自定义动画,并能将这些知识应用到您的网页设计中。

在文章结尾,我想提醒您,文章的创作不易,如果您喜欢我的分享,请别忘了点赞和转发,让更多有需要的人看到。同时,如果您想获取更多前端技术的知识,欢迎关注我,您的支持将是我分享最大的动力。我会持续输出更多内容,敬请期待。

原文:
https://levelup.gitconnected.com/customizing-tailwind-css-animations-advancing-your-web-design-skills-dc9667494993

作者:Nitin Sharma

非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正

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

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

相关文章

13共模电感

目录 一、原理 二、差模噪声和共模噪声主要来源 三、共模电感如何抑制共模信号 四、共模电感的选取 一、原理 在介绍共模电感之前先介绍扼流圈&#xff0c;扼流圈是一种用来减弱电路里面高频电流的低阻抗线圈。为了提高其电感扼流圈通常有一软磁材料制的核心。共模扼流圈有…

Django企业it资产管理系统

背景 21世纪&#xff0c;我国早在上世纪就已普及互联网信息&#xff0c;互联网对人们生活中带来了无限的便利。像大部分的公司都有自己的系统&#xff0c;由从今传统的管理模式向互联网发展&#xff0c;如今开发自己的系统是理所当然的。那么开发企业it资产管理系统意义和用处…

JavaWeb开发学习笔记_Vue

JavaWeb开发学习笔记_Vue Vue快速入门常用指令v-bind和v-modelv-onvif和vshowvfor 案例生命周期参考 Vue快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

Windows上使用CLion配置OpenCV环境,亲测可用的方法(一)

一、Windows上使用CLion配置OpenCV环境&#xff0c;亲测可用的方法&#xff1a; Windows上使用CLion配置OpenCV环境 教程里的配置&#xff1a; widnows 10 clion 2022.1.1 mingw 8.1.0 opencv 4.5.5 Cmake3.21.1 我自己的配置&#xff1a; widnows 10 clion 2022.2.5 mingw 8.…

Flink 2.0 启航,开启全新篇章

我们已经在开发者邮件列表上发起了关于 Flink 2.0 版本计划的讨论。我们相信现在是时候启动这个计划了&#xff0c;以便在明年作为 Apache Flink 的十周年庆典推出这个版本。欢迎大家参加关于 Flink 2.0 的愿景、功能、时间表、流程、路线图等方面的讨论&#xff01; 开发者邮件…

04.DolphinScheduler使用详细介绍

文章目录 创建Worker分组-指定执行机器使用创建执行脚本用户 执行脚本执行Shell脚本执行Spark任务执行Spark任务可能的报错Storage service config does not exist! 执行Hive任务执行HTTP任务创建任务任务参数任务样例 参数使用内置参数基础内置参数衍生内置参数画布中引用方法…

拓展业务规模 | 2023 Google 游戏开发者峰会

将游戏拓展到 PC 端&#xff0c;在很大程度上能够帮助您向更多玩家展示游戏魅力&#xff0c;进一步提高用户覆盖率、互动度和 ROI&#xff0c;并在 Google Play 平台上构建高质量的游戏。Google Play 游戏电脑端的每次更新&#xff0c;都旨在让您的跨平台开发更加轻松&#xff…

初探 VS Code + Webview

本文作者为 360 奇舞团前端开发工程师 介绍 VSCode 是一个非常强大的代码编辑器&#xff0c;而它的插件也非常丰富。在开发中&#xff0c;我们经常需要自己编写一些插件来提高开发效率。本文将介绍如何开发一个 VSCode 插件&#xff0c;并在其中使用 Webview 技术。首先介绍一下…

功率放大器在MTT检测超声医疗中的应用

实验名称&#xff1a;MTT检测超声激活血卟啉对SW-480细胞的杀伤作用 研究方向&#xff1a;超声医疗 测试目的&#xff1a; 自提出激光与血卟啉结合具有明显的抗肿瘤效应&#xff0c;PDT法在诊治肿瘤方面已做了大量研究并在临床中得到应用。但由于激光对组织穿透力较差&#xff…

C语言CRC-8 ROHC格式校验函数

C语言CRC-8 ROHC格式校验函数 CRC校验基于前处理和后处理的不同&#xff0c;由不同的协会标准推出了一些不同格式的版本。这里介绍CRC-8 ROHC格式的校验函数。 CRC-8 ROHC格式特征 标准CRC-8的校验函数参考&#xff1a; C语言标准CRC-8校验函数 CRC-8 ROHC格式有如下的不同&…

Numpy从入门到精通——详解广播机制

这个专栏名为《Numpy从入门到精通》&#xff0c;顾名思义&#xff0c;是记录自己学习numpy的学习过程&#xff0c;也方便自己之后复盘&#xff01;为深度学习的进一步学习奠定基础&#xff01;希望能给大家带来帮助&#xff0c;爱睡觉的咋祝您生活愉快&#xff01; 这一篇介绍《…

机器学习-线性模型(波士顿房价预测)

机器学习-线性模型(波士顿房价预测) 文章目录 机器学习-线性模型(波士顿房价预测)人工智能、机器学习、深度学习的关系机器学习深度学习 波士顿房价预测数据集介绍模型假设 → \rightarrow →线性回归模型评价函数 → \rightarrow →均方误差线性回归模型网络结构实现波士顿房价…

HummerRisk V1.0 安装部署指南

HummerRisk v1.0 开始采用 springcloud 微服务架构&#xff0c;微服务架构更加易于扩展、易于容错、灵活部署&#xff0c;但是需要注意的是 HummerRisk v0.x 版本无法直接升级到 v1.0&#xff0c;如需使用 HummerRisk 请手动安装最新版本。 环境要求 全新安装的 Linux(x64)需要…

HashMap详解

手撕HashMap源码 HashMap一直是面试的重点。今天我们来了解了解它的源码吧&#xff01; 首先看一下Map的继承结构图 源码分析 什么是哈希 **Hash&#xff0c;一般翻译做“散列”&#xff0c;也有直接音译为“哈希”的&#xff0c;就是把任意长度的输入&#xff0c;通过散列算…

【Python语法系列】第三章:Python判断语句

进行逻辑判断&#xff0c;是生活中常见的行为。同样&#xff0c;在程序中&#xff0c;进行逻辑判断也是最为基础的功能&#xff0c;一个逻辑判断的流程非常简单&#xff0c;我们有一个判断的条件&#xff0c;那么他无非给我们返回两个结果&#xff0c;是或者否&#xff0c;是的…

Ubuntu22.04部署Pytorch2.0深度学习环境

文章目录 安装Anaconda创建新环境安装Pytorch2.0安装VS CodeUbuntu下实时查看GPU状态的方法小实验&#xff1a;Ubuntu、Windows10下GPU训练速度对比 Ubuntu安装完显卡驱动、CUDA和cudnn后&#xff0c;下面部署深度学习环境。 &#xff08;安装Ubuntu系统、显卡驱动、CUDA和cudn…

成本降低33%!英飞凌挑战智能汽车「高功率密度」瓶颈

伴随着汽车电动化、智能化的逐步推进&#xff0c;功率半导体器件的需求激增。其中&#xff0c;MOSFET作为新能源汽车中DC-DC、OBC等电源系统的重要组成部分&#xff0c;应用于汽车动力域以完成电能的转换与传输。同时&#xff0c;MOSFET还是可以用于ADAS、安全、信息娱乐等功能…

华为流程体系:MPP流程

今天主要来讲讲IPD中营销侧的另一个流程&#xff1a;MPP 流程。 在讲解MTL流程时&#xff0c;提到过MTL流程的底层逻辑是4C营销理论。 换句话说就是&#xff0c;MTL 流程是面向客户的产品上市流程。 而MPP流程则是面向产品的上市流程&#xff0c;它的底层逻辑就是经典的4P营…

新工具、新升级,推陈出新的测试好帮手

前言 【推陈出新】才是我们搞IT的正确发展方向&#xff0c;我们要以发展的眼光来看待我们使用的测试工具&#xff0c;如何升级您手中的测试工具&#xff0c;我们来品一品Eoink的Apikit五个维度对比我们之前用的测试工具&#xff1f; 我会按照&#xff1a;基础功能全面与否、大型…

Golang每日一练(leetDay0048) 链表专题

目录 141. 环形链表 Linked List Cycle &#x1f31f; 142. 环形链表 II Linked List Cycle II &#x1f31f;&#x1f31f; 143. 重排链表 Reorder List &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一…