重要代码:

  1. 通过:class="{ draw: draw }"控制动画翻转效果
  2. 给中间的交换按钮添加事件@click="exchange"

  3. 给draw类添加css动画效果

const draw = ref(false)   //定义变量用来控制动画显示或隐藏
const exchange = () => {
    draw.value = true
    setTimeout(() => {
        draw.value = false
    }, 1000)   //动画在一秒执行完毕后隐藏
    list.value = list.value.reverse()   //翻转数组,这是我用来切换两个盒子内的变量值
 .draw {
        animation: flip 1s linear;
        transform-style: preserve-3d;
        animation-fill-mode: forwards;
    @keyframes flip {
            -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
            -webkit-animation-timing-function: ease-out;
            animation-timing-function: ease-out;
        50% {
            -webkit-transform: rotateX(180deg);
            transform: rotateX(100deg);
            -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
        100% {
            -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
            -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
				
翻转动画效果,就是将页面的元素(文字,图片)加入围绕坐标轴翻转效果,在Webkit内核的浏览器中,很容易实现。而其它内核暂时支持不是很好。首先,我们创建页面: [code="html"]
css旋转(动起来吧 ~ ~ ~ ~ ) 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:...
翻转动画是流行CSS效果,通过从顶部到底部或从左到右(反之亦然)显示HTML元素的正面和背面 。 它们具有二维尺寸,但是以3D执行时它们甚至更冷。 在这篇文章中,我将向您展示如何创建简单的3D按钮 ,以及如何向其中添加翻转动画 。 您可以在下面的演示中看到结果,如果您单击按钮,它们将执行标记的翻转动画。 另请参阅: 15种使用CSS创建的精美文字效果 1.为3D按钮创建HTM...
<meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁部落</title> <style> v-bind 或者 ‘:’ 后面是写的js代码,是用键值对形式写的,键是标签的css样式属性名,键就是属性值,键值必须是字符串,用变量也可以(前提是必须先在data里声明变量) :style="{transform:rotate()} 这个写法浏览器把rotate当成函数rotate()调用的,所以会报错 <div class="count"><countTo :title="flag" :number="List.cNum" /></div> <span v-show="flag=='same'">{{List.cNum | formatNumber}}</span>
Vue3 框架和 Vite 工具提供了 Mock 的功能,可以在开发过程中模拟接口数据。 首先,创建一个基础的 TodoList 示例工程,包括“添加任务”、“删除任务”和“显示所有任务”等功能。 main.js ```javascript import { createApp } from 'vue' import App from './App.vue' import './index.css' createApp(App).mount('#app') App.vue ```vue <template> <div id="app"> <h1>Todo List</h1> <input v-model="task" placeholder="Type new task here..." /> <button @click="addTask">Add</button> <li v-for="(item, index) in tasks" :key="index"> {{ item }} <button @click="removeTask(index)">x</button> </div> </template> <script> export default { setup() { const tasks = vue.reactive([]) const addTask = () => { tasks.push(task.value) task.value = '' const removeTask = (index) => { tasks.splice(index, 1) const task = vue.ref('') return { tasks, task, addTask, removeTask, </script> index.html ```html <!DOCTYPE html> <html lang="en"> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <title>Todo List</title> </head> <div id="app"></div> <script type="module" src="./main.js"></script> </body> </html> 按照以上代码编写完毕之后,我们开启 Mock 功能,使数据接口的 mock 可以生效。 1.使用 vite-plugin-mock 插件安装 Mock 功能。 ```bash npm install vite-plugin-mock --dev 2.在 vite.config.js 中进行配置。 ```javascript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' import { createMockMiddleware } from 'vite-plugin-mock' export default defineConfig({ plugins: [vue(), createMockMiddleware()], resolve: { alias: { '@': path.resolve(__dirname, './src'), 3.添加 Mock 数据文件,文件路径为`src/mocks/api/TodoList.js`。 src/mocks/api/TodoList.js ```javascript // Mock data const tasks = [ { id: 1, value: 'Learn Vue 3' }, { id: 2, value: 'Continue working on Todo list' }, { id: 3, value: 'Buy groceries' }, // API endpoints export default { 'GET /api/tasks': () => { return tasks 'POST /api/tasks': (req) => { const newTask = { id: tasks.length + 1, value: req.body.task, tasks.push(newTask) return newTask 'DELETE /api/tasks/:id': (req) => { const taskId = parseInt(req.params.id) const index = tasks.findIndex((task) => task.id === taskId) if (index !== -1) { tasks.splice(index, 1) return {} 4.在 main.js 中引入 Mock 数据文件,从而启动 Mock 服务。 main.js ```javascript import { createApp } from 'vue' import App from './App.vue' import './index.css' import '@/mocks' createApp(App).mount('#app') 5.测试是否启动成功。 启动执行`npm run dev`之后,打开浏览器,访问`http://localhost:3000/api/tasks`,可看到我们的 mock 数据。 此时我们对 TodoList 进行的增删改操作也将默认使用我们刚刚配置好的 api/TodoList.js 进行 mock 数据的读写操作。