热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

即使有过渡设置,CSS动画也不会顺利回归-CSSAnimationwontgobacksmoothlyevenwithtransitionset

IamtryingtouseCSSanimationtocontrolamobilemenu.我正在尝试使用CSS动画来控制移动菜单。Whileitworksfine

I am trying to use CSS animation to control a mobile menu.

我正在尝试使用CSS动画来控制移动菜单。

While it works fine in one direction it behaves strangely in the other direction.

虽然它在一个方向上工作正常,但在另一个方向上却表现得很奇怪。

So, I click "Level 1" and it pushes that menu smoothly to the left. I then want to go back to that menu by pressing "Back" and on Firefox it slides back smoothly only the first time and on Chrome it doesnt slide back smoothly at all.

所以,我点击“Level 1”,它将菜单平滑地推到左边。然后,我想通过按“返回”返回到该菜单,在Firefox上它只是第一次平滑地滑回,而在Chrome上它根本不会顺利滑回。

Problem replicated here...

问题在这里复制了......

http://jsfiddle.net/ywczf6cx/1/

.mobile-nav-menu {
  left: 0%;
  list-style: outside none none;
  margin-left: 0;
  position: relative;
  transition:.75s ease 0s all;  
}


.mobile-nav-menu.left-one { 
    -webkit-animation: move_left .75s ease 0s 1 forwards;
    -moz-animation: move_left .75s ease 0s 1 forwards;
    -o-animation: move_left .75s ease 0s 1 forwards;
    -ms-animation: move_left .75s ease 0s 1 forwards;
    animation: move_left .75s ease 0s 1 forwards;
 }

#mobile-nav .sub-menu {
  display: none;
  height: auto;
  left: 100%;
  margin-left: 0;
  position: absolute;
  width: 100%;
}

#mobile-nav .sub-menu .sub-menu {
  position: relative !important;
  float: left;
}
.mobile-selected .sub-menu {
 display:block !important;
}

.mobile-nav-menu {
 transition:.75s ease 0s all;       
  left: 0%;
  list-style: outside none none;
  margin-left: 0;
  position: relative;
  transition:.75s ease 0s all;  
}

#mobile-nav .sub-menu li {
  float: left;
  height: auto !important;
  position: relative;
  width: 100% !important;
}

@-webkit-keyframes move_left {
     from { left:0%;} 
     to {left:-100%;} 
}

@keyframes move_left {
     from { left:0%;} 
     to {left:-100%;} 
}
 @-moz-keyframes move_left {
     from { left:0%;} 
     to {left:-100%;} 
}

 @-ms-keyframes move_left {
     from { left:0%;} 
     to {left:-100%;} 
}

 @-o-keyframes move_left {
     from { left:0%;} 
     to {left:-100%;} 
}

jQuery

jQuery(document).ready(function(){
    jQuery(document).on( 'click', '.mobile-level-two-click > a', function( event ) {
        jQuery('.mobile-nav-menu').addClass('left-one');
        jQuery(this).parent().siblings().removeClass('mobile-selected');        
        jQuery(this).parent().addClass('mobile-selected');
    });

    jQuery(document).on( 'click', '.mobile-menu-back-button', function( event ) {
        jQuery('.mobile-nav-menu').removeClass('left-one');

    }); 

});

HTML


1 个解决方案

#1


0  

First things first, your animation will struggle once you start to add content to this layout. The reason for that is you're animating the left property, this will cause the browser to calculate the document flow each frame and this causes lag. Similarly, using transition: all; is a very bad idea, specify the individual properties you intend on transitioning.

首先,一旦开始向此布局添加内容,您的动画就会很难。原因是你正在为左边的属性设置动画,这将导致浏览器计算每帧的文档流量,这会导致滞后。同样,使用转换:全部;这是一个非常糟糕的主意,请指定您想要转换的各个属性。

Secondly, consider cleaning up your markup. There are a lot of very messy selectors and names, generally speaking, the more generic your code is the better.

其次,考虑清理你的标记。有很多非常凌乱的选择器和名称,一般来说,代码越通用越好。

The reason your current solution isn't moving back smoothly, or at all, is because your animation only has the keyframes to move it one way.

您当前解决方案没有顺利移动的原因,或者根本就是因为您的动画只有一个关键帧可以单向移动。

I've cleaned your code up a little and posted a solution to this problem here, notice how only transform is animated and the transition is set to transform only: http://codepen.io/r_p4rk/pen/NGZZwR

我已经清理了你的代码并在这里发布了一个解决这个问题的方法,注意只有变换是动画的,并且转换只设置为转换:http://codepen.io/r_p4rk/pen/NGZZwR


推荐阅读
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
author-avatar
mobiledu2502855777
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有