如何使用 Vue.js 实现炫酷网页效果:从动态数据可视化到动画按钮的全面示例
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
这里是一些完整的 Vue.js 示例代码,你可以直接复制这些代码到你的 Vue 项目中并运行,来看到具体的效果。
1. 动态数据可视化
示例代码
<template>
<div>
<line-chart ref="lineChart" :data="chartData" />
<button @click="updateData">Update Data</button>
</div>
</template>
<script>
import { Line } from 'vue-chartjs';
import { Line as ChartLine } from 'chart.js';
export default {
components: {
LineChart: Line
},
data() {
return {
chartData: {
labels: ['January', 'February', 'March', 'April'],
datasets: [
{
label: 'Sales',
data: [40, 39, 10, 40],
borderColor: '#42A5F5',
fill: false
}
]
}
};
},
methods: {
updateData() {
this.chartData.datasets[0].data = [50, 49, 20, 60];
this.$refs.lineChart.update();
}
}
};
</script>
<style>
/* Add your styles here */
</style>
运行步骤
-
安装
vue-chartjs
和chart.js
:npm install vue-chartjs chart.js
-
将上述代码放到 Vue 组件中(例如
LineChart.vue
),并在主组件中引用它。
2. 动画按钮
示例代码
<template>
<div class="container">
<button @click="rotate" :class="{ 'rotated': isRotated }">Click me!</button>
</div>
</template>
<script>
export default {
data() {
return {
isRotated: false
};
},
methods: {
rotate() {
this.isRotated = !this.isRotated;
}
}
};
</script>
<style>
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
button {
transition: transform 0.5s;
}
button.rotated {
transform: rotate(360deg);
}
</style>
运行步骤
- 将上述代码放到 Vue 组件中(例如
AnimatedButton.vue
),并在主组件中引用它。
3. 卡片翻转效果
示例代码
<template>
<div class="card" @click="flipCard">
<div class="card-inner" :class="{ 'flipped': isFlipped }">
<div class="card-front">Front</div>
<div class="card-back">Back</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isFlipped: false
};
},
methods: {
flipCard() {
this.isFlipped = !this.isFlipped;
}
}
};
</script>
<style>
.card {
perspective: 1000px;
}
.card-inner {
transition: transform 0.6s;
transform-style: preserve-3d;
}
.card.flipped .card-inner {
transform: rotateY(180deg);
}
.card-front, .card-back {
position: absolute;
width: 200px;
height: 300px;
backface-visibility: hidden;
}
.card-front {
background: #fff;
}
.card-back {
background: #f0f0f0;
transform: rotateY(180deg);
}
</style>
运行步骤
- 将上述代码放到 Vue 组件中(例如
FlipCard.vue
),并在主组件中引用它。
4. 响应式导航菜单
示例代码
<template>
<nav class="navbar">
<button @click="toggleMenu" class="menu-button">Menu</button>
<ul :class="{ 'show': isMenuOpen }">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</template>
<script>
export default {
data() {
return {
isMenuOpen: false
};
},
methods: {
toggleMenu() {
this.isMenuOpen = !this.isMenuOpen;
}
}
};
</script>
<style>
.navbar {
position: relative;
}
.menu-button {
display: none;
}
ul {
list-style-type: none;
padding: 0;
margin: 0;
display: flex;
}
li {
margin: 0 10px;
}
@media (max-width: 768px) {
.menu-button {
display: block;
}
ul {
display: none;
flex-direction: column;
}
ul.show {
display: flex;
}
}
</style>
运行步骤
- 将上述代码放到 Vue 组件中(例如
ResponsiveMenu.vue
),并在主组件中引用它。
5. 模态窗口
示例代码
<template>
<div>
<button @click="showModal = true">Open Modal</button>
<div v-if="showModal" class="modal-overlay" @click.self="showModal = false">
<div class="modal">
<h2>Modal Title</h2>
<p>This is a modal window.</p>
<button @click="showModal = false">Close</button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
showModal: false
};
}
};
</script>
<style>
.modal-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
}
.modal {
background: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
</style>
运行步骤
- 将上述代码放到 Vue 组件中(例如
ModalWindow.vue
),并在主组件中引用它。
这些示例可以直接放到 Vue 项目中运行,展示相应的效果。如果你有现成的 Vue 项目,你可以将这些代码分别放到不同的 Vue 组件文件中,然后在主应用中引用这些组件进行演示。
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)