每当有人用tabs键浏览表单中的输入字段时,我都会尝试向上或向下滚动页面。我希望当前聚焦的输入元素在用户按tabs键时垂直居中于页面的中间。我为此写了一个指令,但它并不像我期望的那样工作。
angular
.module('app')
.directive('formScroll', formScroll);
function formScroll($window) {
function link(scope, elem) {
elem.bind('focus', function() {
var offset,
elOffset = elem.offset().top,
elHeight = elem.height(),
windowHeight = $window.innerHeight;
offset = elOffset - ((windowHeight - elHeight) / 2);
$window.scrollTo(0, offset);
});
}
}
发布于 2016-07-24 13:15:36
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
});
app.directive('formScroll', formScroll);
function formScroll($window) {
return {
link: function(scope, elem) {
elem.bind('focus', function() {
var offset,
elOffset = elem.prop('offsetTop'), //.offset().top,
elHeight = elem.prop('height'), //elem.height(),
windowHeight = $window.innerHeight;
offset = elOffset - ((windowHeight - elHeight) / 2);
$window.scrollTo(0, offset);
});
}
}
}
我修改了链接函数以返回对象{ formScroll:...},还使用了elem.prop(....)
https://stackoverflow.com/questions/38545501
复制相似问题