Javascript 如何在Angular Js中制作粘性标题?

Javascript 如何在Angular Js中制作粘性标题?,javascript,angularjs,Javascript,Angularjs,我正在尝试使用AngularJs或vanilla javascript实现AngularJs粘性头的概念。(没有jQuery依赖项)。我试图创建这个指令,但我遗漏了一些东西。。。请给我一些建议好吗 JavaScript angular.module('app', []) .directive('stickyHeader', function ($window) { return { restrict: 'AE', link: function (scope, element,

我正在尝试使用AngularJs或vanilla javascript实现AngularJs粘性头的概念。(没有jQuery依赖项)。我试图创建这个指令,但我遗漏了一些东西。。。请给我一些建议好吗

JavaScript

angular.module('app', [])
.directive('stickyHeader', function ($window) {
return {
    restrict: 'AE',
    link: function (scope, element, attrs) {
      var header = angular.element(element);
      var clone = header[0].before(header.clone().addClass("clone"));

      angular.element($window).bind("scroll", function () {
        var fromTop = $window.pageYOffset;
        var body = angular.element(document).find('body');
        body.toggleClass('down', (fromTop > 400));
      });

      console.log('$window', $window);
      console.log('element', element);
      console.log('header', header);
  }
};
})
 .controller('Main', function ($scope) {
  $scope.angular = angular;
});

尝试在(fromTop>400)之后将其位置固定。
对于你的代码,我会说把它添加到你的css中

.down header {
  position:fixed;
  top:0px;
}
编辑:
我注意到fromTop>400对它来说有点太多了,尝试使用fromTop>100

尝试在(fromTop>400)之后给它固定位置。
对于你的代码,我会说把它添加到你的css中

.down header {
  position:fixed;
  top:0px;
}
编辑:
我注意到fromTop>400有点太多了,尝试使用fromTop>100

我试着编辑你的笔,这就是我能做的

我所做的是添加这行

  if (fromTop >= 80) {
    angular.element(header[0]).css("top", '0');
    angular.element(header[0]).css("position", 'fixed');
  } else {
    angular.element(header[0]).css("top", '');
    angular.element(header[0]).css("position", '');
  }

我试着编辑你的笔,这就是我能做的

我所做的是添加这行

  if (fromTop >= 80) {
    angular.element(header[0]).css("top", '0');
    angular.element(header[0]).css("position", 'fixed');
  } else {
    angular.element(header[0]).css("top", '');
    angular.element(header[0]).css("position", '');
  }

问题是
var clone=undefined
,因此我将其更改为:

var clone = header.prepend(header.clone().addClass('clone'), header);

通过这种方式,我可以找到克隆位置,以便根据以下条件切换类:
pixelsFromTopScreen>clonePixelsPositionFromTop

问题在于
var clone=undefined
,因此我将其更改为:

var clone = header.prepend(header.clone().addClass('clone'), header);
这样,我可以找到克隆位置,以便根据以下条件切换类:
pixelsFromTopScreen>clonePixelsPositionFromTop
以上内容
标题
内容-1
内容-2
以上内容
标题
内容-1
content-2
这可能会帮助您这可能会帮助您