在我当前的项目中,我需要在页面加载期间为我的主要内容div
实现上滑功能,即类似于jQuery animate。
我想使用directive
来实现这一点,以保持代码干净,而不是将其放入控制器中。我能够通过jQuery使用以下代码来实现它,但是当与AngularJS集成时,这不起作用。任何帮助都非常感谢。
Css:
.cont-gall{
overflow:scroll;
width: 100%;
float: left;
top: 850px;
padding:0 0 280px 0px;
position: relative;
height:700px;
-ms-overflow-style: none;
}
我在document.ready()
中应用这个 jQuery,当页面内容是静态的时,它工作正常,但是当我应用 AngularJs 加载内容时,它就不行了。
$('.cont-gall').animate({'top': '50px'}, 3500);
您可以为此创建一个简单的指令:
angular.module('demoApp').directive('animatedToTop', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
$(element).animate({
'top': '50px'
}, 3500);
}
}
});
在视图中:
<div class="cont-gall" animated-to-top></div>
以jquery的方式做,你做得不对:
在角度前瞻性地做这件事
您可以创建一个可以在 DOM/html 中使用的directive
,在该指令中,您可以initially
提供一个类来设置元素的过渡时间和样式linking
并且在阶段您可以应用transition changes class
<cont class="myDiv">abcd</cont>
对于动画,您可以使用 css3 过渡
.myDiv{
position:absolute;
-webkit-transition: 1s linear;
/*to only change opacity*/
/*-webkit-transition: opacity 1s linear*/
-moz-transition: 1s linear;
-o-transition: 1s linear;
transition: 1s linear;
}
.animateTop{
top:10px;
}
命令
var app = angular.module('myApp',[]);
app.directive('cont', function () {
return {
restrict:"E",
link: function(scope, element, attrs) {
element.addClass('animateTop');
$compile(element)(scope);
}
}
});
工作演示:
var app = angular.module('myApp',[]);
app.directive('cont', function () {
return {
restrict:"E",
//template:"<div class='myDiv'>aa</div>",
link: function(scope, element, attrs) {
element.addClass('animateTop');
$compile(element)(scope);
}
}
});
.myDiv{
display:block;
width:200px;
color:black;
background:red;
position:absolute;
-webkit-transition: 1s linear;
/*to only change opacity*/
/*-webkit-transition: opacity 1s linear*/
-moz-transition: 1s linear;
-o-transition: 1s linear;
transition: 1s linear;
}
.animateTop{
background:pink;
top:50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<div ng-app="myApp">
<cont class="myDiv">abcd</cont>
</div>