【技术实战】Vue功能样式实战【七】
需求实战一
样式展示

代码展示
<template>
<transition name="fade-in" appear>
<ARow v-if="show">
<ACol>
<div class="info-card">
<div class="info-title">
数据总和
</div>
<div class="info-value">
100
</div>
</div>
</ACol>
</ARow>
</transition>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const show = ref(false);
// 在需要的时候触发过渡效果
setTimeout(() => {
show.value = true;
}, 1000);
</script>
<style scoped>
.fade-in-enter-active {
animation: fade-in 1s;
}
@keyframes fade-in {
from {
opacity: 0;
transform: translateX(-100px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.info-card {
width: 318px;
height: 116px;
background-color: #bebebe;
box-shadow: 0px 2px 10px 1px rgba(23,179,163,0.07);
border-radius: 4px;
}
.info-title {
font-size: 18px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #333333;
line-height: 21px;
padding: 20px 0 20px 30px;
}
.info-value {
font-size: 36px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #333333;
line-height: 21px;
padding: 0 0 0 30px;
}
</style>
代码解读
这段代码是一个Vue组件,实现了一个渐入效果的过渡动画。下面是对代码的解读:
1. <template> 标签中定义了组件的模板结构。
2. <transition> 标签用于包裹需要过渡的元素,通过 name 属性指定过渡效果的名称为 "fade-in",并设置 appear 属性为 true,表示组件初次渲染时也会触发过渡效果。
3. <ARow> 和 <ACol> 是自定义的组件,用于布局。
4. <div class="info-card"> 是一个信息卡片的容器。
5. <div class="info-title"> 显示信息的标题。
6. <div class="info-value"> 显示信息的数值。
7. v-if="show" 表示只有当 show 的值为 true 时,才会渲染 <ARow> 组件及其子组件,从而触发过渡效果。
8. <script setup> 标签中使用了 Vue 3 的新特性,通过 ref 创建了一个响应式的变量 show,初始值为 false。
9. setTimeout 函数用于在1秒后将 show 的值设置为 true,从而触发过渡效果。
10. <style scoped> 标签中定义了组件的样式,其中 .fade-in-enter-active 是过渡效果的关键帧动画,实现了渐入效果。
11. .info-card、.info-title 和 .info-value 是信息卡片的样式。
这段代码实现了一个简单的渐入效果的过渡动画,通过控制 show 的值来触发过渡效果的显示
需求实战二
样式展示

代码展示
<template>
<ARow>
<ACol>
<div class="info-card" :class="{ 'blinds-transition': showBlinds }">
<div class="info-title">
数据总和
</div>
<div class="info-value">
100
</div>
</div>
</ACol>
</ARow>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
const showBlinds = ref(false);
onMounted(() => {
showBlinds.value = true;
});
</script>
<style scoped>
:deep(.info-card){
width: 318px;
height: 116px;
background-color: #bebebe;
box-shadow: 0px 2px 10px 1px rgba(23,179,163,0.07);
border-radius: 4px;
overflow: hidden;
position: relative;
}
:deep(.info-card.slide-out) {
height: 0;
}
:deep(.info-title){
font-size: 18px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #333333;
line-height: 21px;
padding:20px 0 20px 30px;
}
:deep(.info-value){
font-size: 36px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #333333;
line-height: 21px;
padding:0 0 0 30px;
}
.blinds-transition {
animation: blinds 1s ease-in-out forwards;
}
@keyframes blinds {
0% {
height: 0;
}
100% {
height: 116px;
}
}
</style>
代码解读
这段代码是一个Vue组件的模板部分,用于展示一个信息卡片。具体解读如下:
1. 在模板中,使用了<ARow>和<ACol>组件来创建一个行列布局,将信息卡片放置在列中。
2. 信息卡片使用了一个<div>元素,并添加了一个名为info-card的类。通过:class绑定,可以根据showBlinds的值来动态添加blinds-transition类,实现卡片的动画效果。
3. 卡片内部包含了一个标题和一个数值,分别使用info-title和info-value类进行样式设置。
4. 在<script setup>中,引入了Vue的ref和onMounted函数。showBlinds是一个响应式的变量,初始值为false。在组件挂载后,通过onMounted钩子函数,将showBlinds的值设置为true,从而触发动画效果。
5. 在<style scoped>中,使用:deep()选择器来设置卡片的样式。其中,.info-card表示卡片的样式,.info-card.slide-out表示卡片收起时的样式。
6. blinds-transition类使用了CSS动画blinds,在1秒的时间内,将卡片的高度从0过渡到116px,实现展开的效果。
这段代码可以用于展示一个数据总和的信息卡片,并通过动画效果使卡片在页面加载后逐渐展开显示。
需求实战三
样式展示

代码展示
<template>
<ARow>
<ACol >
<div class="info-card">
<div class="info-title">
数据总和
</div>
<div class="info-value">
100
</div>
</div>
</ACol>
</ARow>
</template>
<script setup lang="ts">
</script>
<style scoped>
:deep(.info-card) {
width: 318px;
height: 116px;
background-color: #bebebe;
box-shadow: 0px 2px 10px 1px rgba(23, 179, 163, 0.07);
border-radius: 4px;
animation: shake 1s ease-in-out infinite;
transition: transform 0.5s ease-in-out;
}
@keyframes shake {
0% {
transform: rotate(0deg);
}
10% {
transform: rotate(20deg);
}
20% {
transform: rotate(40deg);
}
30% {
transform: rotate(20deg);
}
40% {
transform: rotate(-30deg);
}
100% {
transform: translateY(800px);
}
}
:deep(.info-title) {
font-size: 18px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #333333;
line-height: 21px;
padding: 20px 0 20px 30px;
}
:deep(.info-value) {
font-size: 36px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #333333;
line-height: 21px;
padding: 0 0 0 30px;
}
:deep(.info-card.exit) {
transform: translateY(200px);
}
</style>
代码解读
这段代码是一个Vue组件的模板部分,用于展示一个信息卡片。具体解读如下:
- 在<template>标签中,定义了一个ARow组件,表示一个行容器。
- 在<ARow>标签中,定义了一个ACol组件,表示一个列容器。
- 在<ACol>标签中,定义了一个div元素,具有info-card类名,表示一个信息卡片。
- 在<div class="info-card">中,包含了两个子元素:
- 一个具有info-title类名的div元素,用于显示信息标题。
- 一个具有info-value类名的div元素,用于显示信息值。
- 在<script>标签中,暂时没有任何代码。
- 在<style>标签中,定义了一些样式规则:
- .info-card类选择器表示选择所有具有info-card类名的元素,设置了宽度、高度、背景颜色、阴影、边框圆角、动画和过渡效果。
- @keyframes shake表示定义了一个名为shake的关键帧动画,实现了一个卡片抖动的效果。
- .info-title类选择器表示选择所有具有info-title类名的元素,设置了字体大小、字体样式、颜色、行高和内边距。
- .info-value类选择器表示选择所有具有info-value类名的元素,设置了字体大小、字体样式、颜色、行高和内边距。
- .info-card.exit类选择器表示选择所有具有info-card和exit类名的元素,设置了一个向下平移的动画效果。
这段代码的作用是展示一个带有坠落效果的信息卡片,其中包含一个标题和一个数值。
需求实战四
样式展示

代码展示
<template>
<ARow>
<ACol>
<div class="info-card" :class="{ 'fade-out': isFadeOut }">
<div class="info-title">
数据总和
</div>
<div class="info-value">
100
</div>
</div>
</ACol>
</ARow>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
const isFadeOut = ref(false);
onMounted(() => {
setTimeout(() => {
isFadeOut.value = true;
}, 2000);
});
</script>
<style scoped>
.info-card {
width: 318px;
height: 116px;
background-color: #bebebe;
box-shadow: 0px 2px 10px 1px rgba(23, 179, 163, 0.07);
border-radius: 4px;
transition: opacity 0.5s ease;
}
.fade-out {
opacity: 0;
}
.info-title {
font-size: 18px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #333333;
line-height: 21px;
padding: 20px 0 20px 30px;
}
.info-value {
font-size: 36px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #333333;
line-height: 21px;
padding: 0 0 0 30px;
}
</style>
代码解读
这段代码是一个Vue组件的模板部分,用于展示一个带有淡出效果的信息卡片。具体解读如下:
- 在<template>标签中,定义了一个ARow组件,表示一个行容器。
- 在<ARow>标签中,定义了一个ACol组件,表示一个列容器。
- 在<ACol>标签中,定义了一个div元素,具有info-card类名,并使用了动态类绑定fade-out,根据isFadeOut的值来决定是否添加fade-out类名。
- 在<div class="info-card">中,包含了两个子元素:
- 一个具有info-title类名的div元素,用于显示信息标题。
- 一个具有info-value类名的div元素,用于显示信息值。
- 在<script>标签中,使用了Vue的ref和onMounted函数:
- isFadeOut是一个响应式引用,初始值为false。
- onMounted函数在组件挂载后执行,通过setTimeout函数延迟2秒后将isFadeOut的值设置为true,从而触发淡出效果。
- 在<style>标签中,定义了一些样式规则:
- .info-card类选择器表示选择所有具有info-card类名的元素,设置了宽度、高度、背景颜色、阴影和边框圆角,以及一个过渡效果。
- .fade-out类选择器表示选择所有具有fade-out类名的元素,设置了透明度为0,实现了淡出效果。
- .info-title类选择器表示选择所有具有info-title类名的元素,设置了字体大小、字体样式、颜色、行高和内边距。
- .info-value类选择器表示选择所有具有info-value类名的元素,设置了字体大小、字体样式、颜色、行高和内边距。
这段代码的作用是展示一个带有淡出效果的信息卡片,并在组件挂载后延迟2秒触发淡出效果。
需求实战五
样式展示

代码展示
<template>
<ARow :class="{ 'erased': isErased }">
<ACol>
<div class="info-card" >
<div class="info-title">
数据总和
</div>
<div class="info-value">
100
</div>
</div>
</ACol>
</ARow>
<br>
<ARow style="padding:20px 0 0 0">
<ACol>
<div class="info-card" :class="{ 'erased': isErased }">
<div class="info-title">
数据总和
</div>
<div class="info-value">
100
</div>
</div>
</ACol>
</ARow>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
const isErased = ref(false);
onMounted(() => {
setTimeout(() => {
isErased.value = true;
}, 2000);
});
</script>
<style scoped>
.info-card {
width: 318px;
height: 116px;
background-color: #bebebe;
box-shadow: 0px 2px 10px 1px rgba(23, 179, 163, 0.07);
border-radius: 4px;
position: relative;
overflow: hidden;
}
.erased:after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #ffffff;
animation: erase 5s linear forwards infinite;
}
@keyframes erase {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(0);
}
}
.info-title {
font-size: 18px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #333333;
line-height: 21px;
padding: 20px 0 20px 30px;
}
.info-value {
font-size: 36px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #333333;
line-height: 21px;
padding: 0 0 0 30px;
}
</style>
代码解读
这段代码是一个Vue组件模板,用于展示一个信息卡片。代码中使用了Vue的响应式数据和动态类绑定。
首先,在模板中定义了两个信息卡片,分别位于两个<ARow>和<ACol>组件中。每个信息卡片都有一个标题和一个数值。
在<script setup>部分,使用了Vue的ref函数创建了一个名为isErased的响应式数据,默认值为false。然后,在onMounted生命周期钩子中,通过setTimeout函数将isErased的值设置为true,即2秒后将信息卡片擦除。
在<style scoped>部分,定义了信息卡片的样式。.info-card类设置了卡片的宽度、高度、背景颜色、阴影和圆角等样式。.erased:after伪类定义了擦除效果的动画,通过transform属性实现了从左侧滑入的效果。.info-title和.info-value类分别定义了标题和数值的样式。
总的来说,这段代码实现了一个信息卡片的展示,并在2秒后通过动画将卡片擦除的效果。你可以根据这段代码的思路,写一篇关于Vue组件开发和动态类绑定的博客。
需求实战六
样式展示

代码展示
<template>
<transition name="fade-in" appear>
<ARow v-if="show">
<ACol>
<div class="info-card">
<div class="info-title">
数据总和
</div>
<div class="info-value">
100
</div>
</div>
</ACol>
</ARow>
</transition>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const show = ref(false);
// 在需要的时候触发过渡效果
setTimeout(() => {
show.value = true;
}, 1000);
</script>
<style scoped>
.fade-in-enter-active {
animation: fade-in 0.5s;
}
@keyframes fade-in {
0% {
transform: translateX(-200px) translateY(-200px);
}
20% {
transform: translateX(-160px) translateY(-100px);
}
30% {
transform: translateX(-120px) translateY(-140px);
}
40% {
transform: translateX(-80px) translateY(-180px);
}
50% {
transform: translateX(-60px) translateY(-150px);
}
60% {
transform: translateX(-40px) translateY(-80px);
}
70% {
transform: translateX(-20px) translateY(-120px);
}
80% {
transform: translateX(-6px) translateY(-70px);
}
90% {
transform: translateX(-3px) translateY(-40px);
}
100% {
transform: translateX(0px) translateY(0px);
}
}
.info-card {
width: 318px;
height: 116px;
background-color: #bebebe;
box-shadow: 0px 2px 10px 1px rgba(23,179,163,0.07);
border-radius: 4px;
}
.info-title {
font-size: 18px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #333333;
line-height: 21px;
padding: 20px 0 20px 30px;
}
.info-value {
font-size: 36px;
font-family: Microsoft YaHei;
font-weight: bold;
color: #333333;
line-height: 21px;
padding: 0 0 0 30px;
}
</style>
代码解读
这段代码是一个Vue组件,实现了一个渐入效果的过渡动画。下面是对代码的解读:
1. <template> 标签中定义了组件的模板结构。
2. <transition> 标签用于包裹需要过渡的元素,通过 name 属性指定过渡效果的名称为 "fade-in",并设置 appear 属性为 true,表示组件初次渲染时也会触发过渡效果。
3. <ARow> 和 <ACol> 是自定义的组件,用于布局。
4. <div class="info-card"> 是一个信息卡片的容器。
5. <div class="info-title"> 显示信息的标题。
6. <div class="info-value"> 显示信息的数值。
7. v-if="show" 表示只有当 show 的值为 true 时,才会渲染 <ARow> 组件及其子组件,从而触发过渡效果。
8. <script setup> 标签中使用了 Vue 3 的新特性,通过 ref 创建了一个名为 show 的响应式数据,并将其初始值设置为 false。
9. setTimeout 函数用于在一定时间后将 show 的值设置为 true,从而触发过渡效果。
10. <style scoped> 标签中定义了组件的样式,其中 .fade-in-enter-active 是过渡效果的关键帧动画,通过 transform 属性实现了元素的平移效果。
11. .info-card、.info-title 和 .info-value 是信息卡片的样式。
这段代码实现了一个简单的弹跳效果的过渡动画,通过控制 show 的值来触发过渡效果,使信息卡片从左上角渐渐移动到指定位置。
【技术实战】Vue功能样式实战【七】的更多相关文章
- 学习Vue 入门到实战——学习笔记
闲聊: 自从进了现在的公司,小颖就再没怎么接触vue了,最近不太忙,所以想再学习下vue,就看了看vue相关视频,顺便做个笔记嘻嘻. 视频地址:Vue 入门到实战1.Vue 入门到实战2 学习内容: ...
- 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚
新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...
- ThinkPHP5+Apicloud+vue商城APP实战
ThinkPHP5+Apicoud+vue商城APP实战 目录 章节1:项目概述 课时1apicloud平台介绍.04:38 课时2知识体系架构介绍.16:10 章节2:apicloud50分钟快速入 ...
- Vue公司项目实战步骤
一.无权限,无验证的Vue项目 1.打好HTML+CSS+JS基础,及<Vue 2.0 实战> 2.编写用mock设计的案例: 3.将以上案例的后台用C#改写: 二.带安全验证的Vue项目 ...
- vue+vue-router+vuex实战
shopping vue + vue-router + vuex实现电商网站 效果展示 install 下载代码: git clone https://github.com/chenchangyuan ...
- 【全面解禁!真正的Expression Blend实战开发技巧】第七章 MVVM初体验-在DataGrid行末添加按钮
原文:[全面解禁!真正的Expression Blend实战开发技巧]第七章 MVVM初体验-在DataGrid行末添加按钮 博客更新较慢,先向各位读者说声抱歉.这一节讲解的依然是开发中经常遇到的一种 ...
- vue+uni-app商城实战 | 第一篇:【有来小店】微信小程序快速开发接入Spring Cloud OAuth2认证中心完成授权登录
一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...
- 阿里云云主机swap功能设置实战案例
阿里云云主机swap功能设置实战案例 阿里云提供的云服务器(Elastic Compute Service,简称 ECS),是云主机的一种,当前采用的虚拟化驱动是Xen(这一点可以通过bios ven ...
- vue.js2.0实战(1):搭建开发环境及构建项目
Vue.js学习系列: vue.js2.0实战(1):搭建开发环境及构建项目 https://my.oschina.net/brillantzhao/blog/1541638 vue.js2.0实战( ...
- 微信小程序实战 购物车功能
代码地址如下:http://www.demodashi.com/demo/12400.html 一.准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.com/ ...
随机推荐
- 「Vue系列」之Vue2实现当前组件重新加载
遇到问题的场景:需要把当前组件完全还原成初始化状态,不要页面全部刷新例如:重置按钮,只刷新当前加载组件其他办法:使用vue-router重新定向到当前页面,页面不刷新使用window-reload() ...
- 2022-12-27:etcd是无界面的,不好看,joinsunsoft/etcdv3-browser是etcd的web可视化工具之一。请问在k3s中部署,yaml如何写?
2022-12-27:etcd是无界面的,不好看,joinsunsoft/etcdv3-browser是etcd的web可视化工具之一.请问在k3s中部署,yaml如何写? 答案2022-12-27: ...
- 2022-01-13:K 个不同整数的子数组。 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定不同的子数组为好子数组。 (例如,[1,2,3,1
2022-01-13:K 个不同整数的子数组. 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续.不一定不同的子数组为好子数组. (例如,[1,2,3,1 ...
- 2021-10-14:被围绕的区域。给你一个 m x n 的矩阵 board ,由若干字符 ‘X‘ 和 ‘O‘ ,找到所有被 ‘X‘ 围绕的区域,并将这些区域里所有的 ‘O‘ 用 ‘X‘ 填充。力扣1
2021-10-14:被围绕的区域.给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充.力扣1 ...
- el-table自适应列宽
这里可对内容为文本的列进行自适应列宽 以下为 工具方法 /** * 使用span标签包裹内容,然后计算span的宽度 width: px * @param valArr */ function get ...
- 使用taro+canvas实现微信小程序的图片分享功能
业务场景 二轮充电业务中,用户充电完成后在订单详情页展示订单相关信息,用户点击分享按钮唤起微信小程序分享菜单,将生成的图片海报分享给微信好友或者下载到本地,好友可通过扫描海报中的二维码加群领取优惠. ...
- [SWPUCTF 2021 新生赛]PseudoProtocols
[SWPUCTF 2021 新生赛]PseudoProtocols 一.题目 二.WP 1.打开题目,发现提示我们是否能找到hint.php,并且发现URL有参数wllm.所以我们尝试利用PHP伪协议 ...
- 安装vue后 vue -V查不到版本号 添加环境变量没反应
萌新一枚,今天听老大说后续有项目要用vue,于是找教程自己先看看, 验证vue是否安装成功时,提示 'vue' 不是内部命令,也不是可运行的程序 有说把vue路径添加环境变量的,试了一下,不行(后来看 ...
- cv学习总结(11.21-11.27)
本周彻底完成了CNN的全部内容,包括CNN的原理,代码实现等.CNN是一种神经网络的framework,跟connected_layer相比,更加侧重于能够保持原来的空间结构不变:我们输入的图片是一个 ...
- Qt+QtWebApp开发笔记(四):http服务器使用Session和Cookie实现用户密码登录和注销功能
前言 前面实现了基础的跳转,那么动态交互中登录是常用功能. 本篇实现一个动态交互的简单登录和注销功能,在Qt中使用Session和Cookie技术. Demo 下载地址 链接:ht ...