我想在用户滚动角度方式时更改CSS元素.
这是使用JQuery方式的代码
$(window).scroll(function() {
if ($(window).scrollTop() > 20 && $(window).scrollTop() < 600) {
$('header, h1, a, div, span, ul, li, nav').css('height','-=10px');
} else if ($(window).scrollTop() < 80) {
$('header, h1, a, div, span, ul, li, nav').css('height','100px');
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码执行Angular方式,但$ scope.scroll似乎无法正确拾取滚动数据.
forestboneApp.controller('MainCtrl', function($scope, $document) {
$scope.scroll = $($document).scroll();
$scope.$watch('scroll', function (newValue) {
console.log(newValue);
});
});
Run Code Online (Sandbox Code Playgroud)
Muchos gracias amigos!
Mic*_*ley 65
请记住,在Angular中,DOM访问应该在指令内发生.这是一个简单的指令,它根据scrollTop窗口设置变量.
app.directive('scrollPosition', function($window) {
return {
scope: {
scroll: '=scrollPosition'
},
link: function(scope, element, attrs) {
var windowEl = angular.element($window);
var handler = function() {
scope.scroll = windowEl.scrollTop();
}
windowEl.on('scroll', scope.$apply.bind(scope, handler));
handler();
}
};
});
Run Code Online (Sandbox Code Playgroud)
我不清楚你到底想要什么样的最终结果,所以这里是一个简单的演示应用程序,1px如果窗口向下滚动超过50像素,则设置元素的高度:http://jsfiddle.net/BinaryMuse/ Z4VqP /