角度动画滑动面板 - 加载视图时显示第二个

Posted

技术标签:

【中文标题】角度动画滑动面板 - 加载视图时显示第二个【英文标题】:angular animated sliding panel - shows for second when view loaded 【发布时间】:2014-09-15 17:58:45 【问题描述】:

我正在尝试构建动画垂直面板,假设它是隐藏的

当用户点击按钮时,面板应该从右侧滑动。 这是我的代码:

html

<body ng-controller="Ctrll">
    <p style="color:#000;margin:0"><span>slide:</span>slide </p>


    <button ng-click="showAlerts()" style="float:left">
      click to toggle panel
    </button>
    <!--sliding panel directive-->
    <alerts-center></alerts-center>


    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/angular-animate/angular-animate.js"></script>
    <script src="js/index.js"></script>
</body>

CSS:

    body
      background-color:#FFF;
      height:100%;
      width:100%;
      margin:0;
      color:#FFF;
      font-size:3em;
      line-height:100px;
      text-align:center;
      overflow:hidden;
    



    .animate-slide 
      background:#30373f;
      position:absolute;
      width: 320px;
      height:100%;
      top: 0;
      right:0px;
    

    .animate-slide.ng-hide-add,
    .animate-slide.ng-hide-remove 
     display:none;
      -webkit-transition:0.5s linear all;
      -moz-transition:0.5s linear all;
      -o-transition:0.5s linear all;
      transition:0.5s linear all;
    

    .animate-slide.ng-hide-remove.ng-hide-remove-active 
      -webkit-animation:0.5s slide-left;
      animation:0.5s slide-left;
    

    .animate-slide.ng-hide-add.ng-hide-add-active 
      -webkit-animation:0.5s slide-right;
      animation:0.5s slide-right;
    

    .animate-slide.ng-hide 
      right:-320px;
      display:none;
    

    /* Chrome, Safari, Opera */
    @-webkit-keyframes slide-left
    
      0%   right:-320px;
      100%  right:0;
    

    /* Standard syntax */
    @keyframes slide-left
    
      0%   right:-320px;
      100%  right:0;
    

    /* Chrome, Safari, Opera */
    @-webkit-keyframes slide-right
    
      0%  right:0;
      100%   right:-320px;
    
    /* Standard syntax */
    @keyframes slide-right
    
      0%  right:0;
      100%   right:-320px;
    

JS:

 angular.module("app",["ngAnimate"])
.controller("Ctrll",function($scope, $timeout)        
   $scope.showAlerts  = function($event) 

      $timeout(function()        
         $scope.$broadcast('openAlerts');
      ,1)
    
)
.controller('alertsCtrl', function ($scope) 
    $scope.$on('openAlerts', function(event, args) 
        $scope.slide = !$scope.slide;
    );
)
.directive('alertsCenter', function () 
    return 
      templateUrl: 'alerts.html',
      replace:true,
      restrict: 'E',
      controller:'alertsCtrl'
    ;
);

问题:

加载时滑动面板可见一秒然后隐藏

(demonstration)

将不胜感激任何建议

【问题讨论】:

【参考方案1】:

您可以使用jQuery 的slideUp 或尝试自定义Angular 指令,如AngularSlideables。但是你也可以使用直接的 CSS 和 Angular 的 ngAnimate 模块,如下所示:

.panelAnimate 
    transition: all 5s linear;
    -moz-transition: all 5s linear; /* Firefox 4 */
    -webkit-transition: all 5s linear; /* Safari and Chrome */
    -o-transition: all 5s linear; /* Opera */
    -ms-transition: all 5s linear; /* Explorer 10 */

.panelAnimate.ng-hide 
    opacity: 0;

然后简单地定义你的面板:

<div class="panel panel-primary panelAnimate">...</div>

在您的具体情况下,您可能会使用 CSS 的 animate 而不是我上面使用的 transition

【讨论】:

以上是关于角度动画滑动面板 - 加载视图时显示第二个的主要内容,如果未能解决你的问题,请参考以下文章

Swiftui 动态动画面板从下到上

ASP.NET 在更新面板更新时显示“正在加载...”消息

jQuery - 显示滑动面板时动画绝对定位的 div 的“左”位置

NO_DATA_FOUND ORACL NVL函数,当第一个为空时显示第二个参数值

如何在面板/视图中显示第一个/第二个....第 n 个最新节点?

Delphi:滑动(动画)面板