Javascript 在卷轴上隐藏标题

Javascript 在卷轴上隐藏标题,javascript,html,Javascript,Html,我试图让标题在向下滚动时隐藏,在向上滚动时重新出现。现在,无论滚动如何,标题都保持不变。我也刚刚开始学习 以下是我尝试适应代码的JavaScript: 'use strict'; // Declare app level module which depends on views, and components angular.module('myApp', [ 'ngRoute', 'myApp.view1', 'myApp.version' ]). config(['$loc

我试图让标题在向下滚动时隐藏,在向上滚动时重新出现。现在,无论滚动如何,标题都保持不变。我也刚刚开始学习

以下是我尝试适应代码的JavaScript:

'use strict';

// Declare app level module which depends on views, and components
angular.module('myApp', [
  'ngRoute',
  'myApp.view1',
  'myApp.version'
]).
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
  $locationProvider.hashPrefix('!');

  $routeProvider.otherwise({redirectTo: '/view1'});
}]);

// Hide Header on on scroll down
var didScroll;
var lastScrollTop = 0;
var delta = 5;
var headerHeight = $('header').outerHeight();

$(window).scroll(function(event){
  didScroll = true;
});

setInterval(function() {
  if (didScroll) {
    hasScrolled();
    didScroll = false;
  }
}, 250);

function hasScrolled() {
  var st = $(this).scrollTop();

  // Make sure they scroll more than delta
  if(Math.abs(lastScrollTop - st) <= delta)
    return;

  // If they scrolled down and are past the navbar, add class .nav-up.
  // This is necessary so you never see what is "behind" the navbar.
  if (st > lastScrollTop && st > headerHeight){
    // Scroll Down
    $('header').removeClass('nav-down').addClass('nav-up');
  } else {
    // Scroll Up
    if(st + $(window).height() < $(document).height()) {
      $('header').removeClass('nav-up').addClass('nav-down');
    }
  }

  lastScrollTop = st;
}
“严格使用”;
//声明依赖于视图和组件的应用程序级模块
角度.module('myApp'[
"ngRoute",,
“myApp.view1”,
“myApp.version”
]).
配置(['$locationProvider','$routeProvider',函数($locationProvider,$routeProvider){
$locationProvider.hashPrefix(“!”);
$routeProvider.Others({重定向到:'/view1'});
}]);
//向下滚动时隐藏标题
卷轴;
var lastScrollTop=0;
varδ=5;
var headerHeight=$('header').outerHeight();
$(窗口)。滚动(功能(事件){
didcoll=true;
});
setInterval(函数(){
如果(滚动){
哈斯克罗尔();
didcoll=false;
}
}, 250);
函数hasScrolled(){
var st=$(this.scrollTop();
//确保它们滚动的次数大于增量
if(Math.abs(lastScrollTop-st)lastScrollTop&&st>headerHeight){
//向下滚动
$('header').removeClass('nav-down').addClass('nav-up');
}否则{
//向上滚动
如果(st+$(窗口).height()<$(文档).height()){
$('header').removeClass('nav-up').addClass('nav-down');
}
}
lastScrollTop=st;
}
正在工作

HTML:

JavaScript:

(function() {
    angular.module("app", [])
        .controller("app.controller", function($scope) {

        })
        .directive("elasticHeader", function($window) {
            return {
                link: function (scope, elem, attrs) {
                    var lastPosition = 0;

                    $window.onscroll = function () {
                        var windowOffset = $window.pageYOffset;
                        if (lastPosition > windowOffset) {
                            elem.removeClass("hide-header");
                        } else if (lastPosition < windowOffset) {
                            if (!elem.hasClass("hide-header")) {
                                elem.addClass("hide-header");
                            }
                        }
                        lastPosition = windowOffset;
                    };
                }
            }
        })

})();
(函数(){
角度模块(“应用程序”,[])
.controller(“app.controller”,函数($scope){
})
.指令(“elasticHeader”,函数($window){
返回{
链接:功能(范围、要素、属性){
var lastPosition=0;
$window.onscroll=函数(){
var windowOffset=$window.pageYOffset;
如果(lastPosition>windowOffset){
元素removeClass(“隐藏标题”);
}else if(lastPosition
我创建了一个名为
elasticHeader
的指令,并将其附加到HTML中的头中。因为DOM中的所有更改都应该在指令中完成。角度
$window
具有属性
pageYOffset
和事件
onscroll
,因此每当我滚动页面时,附加到
$window.onscroll
的函数都会触发


在该函数中,我检查上一次偏移是否大于现在。如果是,它将删除将
高度设置为0的类
hide header
。否则我就添加这个类。css属性
transition
完成了所有的动画制作。

如果你只是想知道为什么你的小提琴不工作,请删除stric mode指令并设置AngularJS的稳定版本(在框架和扩展下,它说javascript旁边有一个小齿轮)。重新运行它,它应该会工作

header {
    height: 50px;
    position: fixed;
    top: 0;
    transition: all 0.5s ease-in-out;
    width: 100%;
    background: #404040;
}

.hide-header {
    height: 0;
}
(function() {
    angular.module("app", [])
        .controller("app.controller", function($scope) {

        })
        .directive("elasticHeader", function($window) {
            return {
                link: function (scope, elem, attrs) {
                    var lastPosition = 0;

                    $window.onscroll = function () {
                        var windowOffset = $window.pageYOffset;
                        if (lastPosition > windowOffset) {
                            elem.removeClass("hide-header");
                        } else if (lastPosition < windowOffset) {
                            if (!elem.hasClass("hide-header")) {
                                elem.addClass("hide-header");
                            }
                        }
                        lastPosition = windowOffset;
                    };
                }
            }
        })

})();