AngularJS子元素内的$anchorScroll yOffset
AngularJS $anchorScroll yOffset within a child element
据我了解 $anchorScroll yOffset 在子元素中是不可能的:
"In order for yOffset to work properly, scrolling should take place on the document's root and not some child element." https://docs.angularjs.org/api/ng/service/$anchorScroll
示例(修改自 AngularJS 文档):
我想单击 link 并在滚动到的内容上方包含单词 "between"。
index.html
<body ng-app="anchorScrollOffsetExample">
<div class="fixed-header" ng-controller="headerCtrl">
<a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
Go to inner-anchor {{x}}
</a>
</div>
<div id="anchor" class="anchor">
<div ng-repeat="x in [1,2,3,4,5]">
between
<div id="innerAnchor{{x}}" class="anchor" >Inner-Anchor {{x}} of 5</div>
</div>
</div>
</body>
style.css
.anchor {
border: 2px dashed DarkOrchid;
padding: 10px 10px 200px 10px;
max-height:500px;
overflow-y: auto;
}
script.js
angular.module('anchorScrollOffsetExample', [])
.run(['$anchorScroll', function($anchorScroll) {
$anchorScroll.yOffset = 500;
}])
.controller('headerCtrl', ['$anchorScroll', '$location', '$scope',
function ($anchorScroll, $location, $scope) {
$scope.gotoAnchor = function(x) {
var newHash = 'anchor' + x;
if ($location.hash() !== newHash) {
$location.hash('innerAnchor' + x);
} else {
$anchorScroll();
}
};
}
]);
http://plnkr.co/edit/yFj9fL3sOhDqjhMawI72?p=preview
有没有在 AngularJS 中执行此操作的好方法(最好没有 jQuery 或其他库)而不将 "between" 移动到 DIV 我正在滚动到?
你为什么不用锚标签?
<body ng-app="anchorScrollOffsetExample">
<div class="fixed-header" ng-controller="headerCtrl">
<a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
Go to inner-anchor {{x}}
</a>
</div>
<div id="anchor" class="anchor">
<div ng-repeat="x in [1,2,3,4,5]">
<!-- Add an anchor above the text, and we scroll here instead of the div -->
<a name="innerAnchor{{x}}"></a>
between
<div class="anchor" >Inner-Anchor {{x}} of 5</div>
</div>
</div>
</body>
据我了解 $anchorScroll yOffset 在子元素中是不可能的: "In order for yOffset to work properly, scrolling should take place on the document's root and not some child element." https://docs.angularjs.org/api/ng/service/$anchorScroll
示例(修改自 AngularJS 文档): 我想单击 link 并在滚动到的内容上方包含单词 "between"。
index.html
<body ng-app="anchorScrollOffsetExample">
<div class="fixed-header" ng-controller="headerCtrl">
<a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
Go to inner-anchor {{x}}
</a>
</div>
<div id="anchor" class="anchor">
<div ng-repeat="x in [1,2,3,4,5]">
between
<div id="innerAnchor{{x}}" class="anchor" >Inner-Anchor {{x}} of 5</div>
</div>
</div>
</body>
style.css
.anchor {
border: 2px dashed DarkOrchid;
padding: 10px 10px 200px 10px;
max-height:500px;
overflow-y: auto;
}
script.js
angular.module('anchorScrollOffsetExample', [])
.run(['$anchorScroll', function($anchorScroll) {
$anchorScroll.yOffset = 500;
}])
.controller('headerCtrl', ['$anchorScroll', '$location', '$scope',
function ($anchorScroll, $location, $scope) {
$scope.gotoAnchor = function(x) {
var newHash = 'anchor' + x;
if ($location.hash() !== newHash) {
$location.hash('innerAnchor' + x);
} else {
$anchorScroll();
}
};
}
]);
http://plnkr.co/edit/yFj9fL3sOhDqjhMawI72?p=preview
有没有在 AngularJS 中执行此操作的好方法(最好没有 jQuery 或其他库)而不将 "between" 移动到 DIV 我正在滚动到?
你为什么不用锚标签?
<body ng-app="anchorScrollOffsetExample">
<div class="fixed-header" ng-controller="headerCtrl">
<a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
Go to inner-anchor {{x}}
</a>
</div>
<div id="anchor" class="anchor">
<div ng-repeat="x in [1,2,3,4,5]">
<!-- Add an anchor above the text, and we scroll here instead of the div -->
<a name="innerAnchor{{x}}"></a>
between
<div class="anchor" >Inner-Anchor {{x}} of 5</div>
</div>
</div>
</body>