首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在输入字段的焦点上将页面滚动到中间

如何在输入字段的焦点上将页面滚动到中间
EN

Stack Overflow用户
提问于 2016-07-24 03:06:26
回答 1查看 899关注 0票数 1

每当有人用tabs键浏览表单中的输入字段时,我都会尝试向上或向下滚动页面。我希望当前聚焦的输入元素在用户按tabs键时垂直居中于页面的中间。我为此写了一个指令,但它并不像我期望的那样工作。

代码语言:javascript
运行
复制
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);
            });
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2016-07-24 13:15:36

代码语言:javascript
运行
复制
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(....)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38545501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档