首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Vue.js [v-斗篷]不使用CSS转换。

Vue.js [v-斗篷]不使用CSS转换。
EN

Stack Overflow用户
提问于 2018-06-14 06:19:22
回答 2查看 2.6K关注 0票数 8

我的意图:

使用Vue.js (v2)属性v2,我希望在准备就绪之前隐藏"app“。当v斗篷被移除时,我想要“应用程序”淡入。使用CSS的不透明度和过渡来实现淡出。

问题:

当v斗篷被从我的“应用程序”中移除时,没有我所期望的转换。它很快就会从隐藏变为可见。似乎忽略了CSS。

示例:

我用Vue.js和JavaScript模拟版本做了一个夸张的例子,展示了它们的行为。

https://codepen.io/freemagee/pen/wXqrRM

当查看此示例时,您将看到“纯旧JavaScript”红色框在5秒以上消失。但Vue控制版本的出现并没有褪色。他们在转换过程中共享相同的CSS,因此理论上应该以同样的方式工作。

有人用v斗篷来实现平稳过渡吗?

代码

HTML

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app" v-cloak>
  <div class="red-box"></div>
  <p>Vue.js {{ message }}</p>
</div>

<div id="app2" v-cloak>
  <div class="red-box"></div>
  <p>Plain old JavaScript</p>
</div>

CSS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
html,
body {
  margin: 0;
  height: 100%;
  min-height: 100%;
}

[v-cloak] .red-box {
  opacity: 0;
  visibility: hidden;
  transition: visibility 0s 5s, opacity 5s linear;  
}

#app,
#app2{
  padding-top: 50px;
}

.red-box {
  margin: 0 auto;
  width: 100px;
  height: 100px;
  background: red;
  opacity: 1;
  visibility: visible;
  transition: opacity 5s linear;
}

p {
  text-align: center;
}

JS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Vue({
  el: "#app",
  data: {
    message: "Hello world"
  }
});

window.setTimeout(function() {
  document.getElementById("app2").removeAttribute("v-cloak");
}, 500);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-14 07:05:28

这不起作用,因为在Vue应用实例初始化之后, div实际上被删除、重新呈现,并变成了一个不同的div,尽管它看起来是一样的。这可能是由于Vue的虚拟DOM机制。

#app2元素在document.getElementById("app2").removeAttribute("v-cloak");https://codepen.io/jacobgoh101/pen/PaKQwV之后仍然是相同的DOM

#app元素是new Vue(...)https://codepen.io/jacobgoh101/pen/ERvojx?editors=0010之后的不同DOM

对于Vue应用程序,删除了带有v-cloak的元素,添加了另一个没有v-cloak的元素。CSS转换没有从“without v-cloak**”“转换到没有** v-cloak**".**的元素,这就是为什么CSS转换不能工作的原因。希望这是足够清楚的。

(如果你还不知道这个,)你可以使用过渡分量

票数 5
EN

Stack Overflow用户

发布于 2018-08-15 13:25:03

正如所解释的,v斗篷不可能发生转换,因为没有v斗篷的DOM元素是一个新元素。

我想出了一个简单的解决办法,使用已挂载方法及其挂钩vm.$nextTick(),在这种情况下,使用v斗篷已经不再必要了。

当最初的app元素替换为Vue生成的新元素时,就会调用挂载,但这并不一定意味着每个子元素都已呈现。当每个子元素都呈现在app视图中时,就会调用nextTick。

首先,我设置了HTML app元素,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="main-view" :class="{ready: isPageReady}">...</div>

在我的虚拟应用程序中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new Vue({
    el: "#main-view",
    data: {
        isPageReady: false, 
    [...]
    mounted: function() {
        this.$nextTick(function () {
            this.isPageReady = true;
        });
    }
});

最后,在CSS中,我尝试了一种使用不透明度的简单方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#main-view {
    opacity: 0;
}
#main-view.ready {
    opacity: 1;
    transition: opacity 300ms ease-in-out;
}

注意:如果浏览器的检查器/调试器处于打开状态,则转换并不总是显示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50859676

复制
相关文章
使用rvm在Mac中安装ruby和rails
MacOS默认安装的是ruby 1.8.7,如果你想使用ruby 1.9.2的话,除了在官网下载源码编译安装外,可以使用rvm来协助安装。
EltonZheng
2021/01/22
3.2K0
使用Unicorn和Nginx在Ubuntu 14.04上配置Ruby on Rails应用程序
Ruby on Rails 是一个流行的 Web 应用程序框架,允许开发人员创建动态 Web 应用程序。本指南介绍如何在 Ubuntu 14.04 上使用Unicorn和 nginx 在服务器上部署Rails应用程序。
LPD6375
2018/08/29
7K0
使用Capistrano,Nginx和Puma在Ubuntu 14.04上部署Rails应用程序
Rails是一个用Ruby编写的开源Web应用程序框架。Nginx是一种高性能HTTP服务器,反向代理和负载均衡器,以其并发性,稳定性,可伸缩性和低内存消耗而著称。与Nginx一样,Puma是另一个极其快速且并发的Web服务器,内存占用非常小,但是为Ruby Web应用程序构建。
尘埃
2018/08/09
5K0
MYSQL 中间件分表是一个好主意?
中间件分表是不是一个好的主意?通过中间件来对MYSQL的数据进行分表是一个常见的对于大数量的解决的方案,通过中间件将应用的数据在中间层进行路由,通过路由将一张表的数据,映射到不同物理数据库上的表,通过应用设计的分片键将数据根据规则存储在不同的物理服务器上。实际上分布式数据库的基本原理也是这样。
AustinDatabases
2021/11/10
3130
MYSQL  中间件分表是一个好主意?
使用 pyenv 可以在一个系统中安装多个python版本
2016.01.06 21:02* 字数 82 阅读 24416评论 11喜欢 12
拓荒者
2019/03/11
3.2K0
Spring Batch 可以在一个 Step 中有多个 Tasklet 吗
根据 Spring Batch 的设计,在一个 Step 中只能执行一个 Tasklet。
HoneyMoose
2022/10/15
1.4K0
Spring Batch 可以在一个 Step 中有多个 Tasklet 吗
在一个组件中使用多个useEffect钩子
在一个组件中使用多个useEffect钩子。React Hooks允许在组件中使用任意数量的useEffect钩子来处理不同的副作用操作或监听不同的触发时机。
王小婷
2023/09/17
8940
CDN 适合您的 Rails 应用程序吗?适合大规模应用吗?
随着网站变得越来越复杂和内容繁多,页面加载时间已成为影响用户体验的关键因素。加快页面加载时间的一种解决方案是使用内容分发网络 (CDN)。在这篇博文中,我们将讨论什么是 CDN、为什么它很重要,以及您是否应该在 Rails 应用程序中使用它。
用户4235284
2023/10/14
1840
在 Flutter 移动应用程序中创建一个列表
Flutter 是一个流行的开源工具包,它可用于构建跨平台的应用。在文章《用 Flutter 创建移动应用》中,我已经向大家展示了如何在 Linux 中安装 Flutter 并创建你的第一个应用。而这篇文章,我将向你展示如何在你的应用中添加一个列表,点击每一个列表项可以打开一个新的界面。这是移动应用的一种常见设计方法,你可能以前见过的,下面有一个截图,能帮助你对它有一个更直观的了解:
用户1880875
2021/09/06
3.1K0
如何使用opencv和matplotlib把多个图片显示在一个窗体内
在使用opencv处理一些计算机视觉方面的一些东西时,经常会遇到把多张图片放在一个窗体内对比展示,而不是同时打开多个窗体,opencv作为一个专业的科学计算库,虽然也提供了方法,但使用起来并不是特别灵活而matplotlib作为一个专业的图形库则弥补了这个缺点,下面我们来看下使用。
我是攻城师
2018/07/23
2K0
如何使用opencv和matplotlib把多个图片显示在一个窗体内
在一个服务器上放多个网站会被分流吗?
服务器的带宽不足的话,网站的同时打开操作速度会受影响,此处不包括服务商提供的服务器,他们的服务器每个网站空间会专门设定带宽和运行内存;另外,同一个服务器同一个IP放多个网站在搜索引擎优化上会相互影响,如果其中一个站是垃圾站被百度K掉,同一服务器同一IP的其他站会受一定的影响。
璃笙0947
2021/10/19
4.3K0
在一个服务器上放多个网站会被分流吗?
如何在Ubuntu 14.04上使用PostgreSQL和Ruby on Rails应用程序
Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)提供的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些其他步骤才能启动并运行它。
温浪
2018/10/22
3.4K0
如何使用opencv和matplotlib把多个图片显示在一个窗体内
在使用opencv处理一些计算机视觉方面的一些东西时,经常会遇到把多张图片放在一个窗体内对比展示,而不是同时打开多个窗体,opencv作为一个专业的科学计算库,虽然也提供了方法,但使用起来并不是特别灵活而matplotlib作为一个专业的图形库则弥补了这个缺点,下面我们来看下使用。
我是攻城师
2018/05/14
6.5K2
使用https和ssl就真的是一个安全的网站吗?
2014年,大多数SEO者都开始关注https,并在网站采用https的。原因很简单:当时Google发布了一篇文章,宣布HTTPS将作为排名信号对网站进行评价。所以几乎所有的SEO机构都建议他们的客户,将http的网站改为https。但实际上,它从来没有(也不应该是)作为提升排名的主要因素。
lublues
2018/05/11
2.2K0
使用https和ssl就真的是一个安全的网站吗?
如何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序
Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如PostgreSQL或MySQL)的可伸缩性,集中化和控制(或任何其他功能),则需要执行一些额外的步骤才能启动并运行它。
信姜缘
2018/10/22
4.9K0
使用SSH隧道保护三层Rails应用程序中的通信
在Ruby on Rails应用程序中,它可以轻易地映射到表示层的Web服务器,应用程序层的Rails服务器和数据层的数据库。在此设置中,应用程序层与数据层通信来检索应用程序的数据,然后通过表示层向用户显示该数据。
彼岸轮回
2018/08/13
5.7K0
如何在CentOS 6.5上使用Unicorn和Nginx部署Rails应用程序
在部署基于Rails的Web应用程序时,简单设计的应用程序服务器可以在几分钟内启动并运行。但是,如果您希望更好地控制服务器设置或想要尝试更灵活的新功能,那么使用分层的组件可以帮助您实现目标- 无论是面向未来的部署还是需要引入第三方元素,例如缓存服务器。
水门
2018/08/07
4.2K0
如何在Ubuntu 14.04上使用Puma和Nginx部署Rails应用程序
当您准备部署Ruby on Rails应用程序时,需要考虑许多有效的设置。本教程将帮助您部署Ruby on Rails应用程序的生产环境,使用PostgreSQL作为数据库,在Ubuntu 14.04上使用Puma和Nginx。
宇cccc
2018/09/26
5.5K0
面试突击59:一个表中可以有多个自增列吗?
自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后,在添加时如果不给此列设置任何值,或给此列设置 NULL 值时,那么它会使用自增的规则来填充此列。
磊哥
2022/06/30
1.9K0
面试突击59:一个表中可以有多个自增列吗?
同一个 gitlab-ci 文件能使用多个 runner 吗?
在 Gitlab CI 中,Runner 是 Job 的执行器, 也就是说 Job 的运行环境, 就是 Runner 的环境。
老麦
2022/12/24
2.8K0
同一个 gitlab-ci 文件能使用多个 runner 吗?

相似问题

为Android应用程序使用ORM是个好主意吗?

26

在Rails中使用Couchbase是个好主意吗?

11

在Doctrine 2 ORM中使用Yii框架是个好主意吗?

21

在一个方法中设置多个类成员是个好主意吗?

12

Rails:多态用户表使用AuthLogic是个好主意吗?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文