Javascript 在卷轴上隐藏标题
我试图让标题在向下滚动时隐藏,在向上滚动时重新出现。现在,无论滚动如何,标题都保持不变。我也刚刚开始学习 以下是我尝试适应代码的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
'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;
};
}
}
})
})();