我在 iOS 上的 Google App 中遇到了同样的问题。一个 100% 高度的网站,上面和下面都有绝对定位的元素。
原因
Google App 中的视口高度被正确检测到,但默认情况下,Google App 会将其地址栏放在网站的顶部,并将其他一些栏放在网站的底部。因此,这些属于 Google 应用的元素就像您网站上的绝对定位元素。
但是,当您打开网站时,Google 应用程序会“向下滚动”一点网站,以便网站顶部位于地址栏下方(否则您的网站顶部将被隐藏。但这会推动整个像向下 30px 的网站,对于 100% 高度的网站,它看起来像视口是 100% + 30px。当您滚动一点顶部的地址栏和底部的另一个栏消失时,网站将显示完美。
解决方法
向主体添加一个指令,将应用程序的高度重新调整为视口的内部高度。在我的情况下工作。
<body force-full-height>
<!-- Your content -->
</body>
...
(function () {
var app = angular.module('my.directives', []);
app.directive('forceFullHeight', forceFullHeight);
forceFullHeight.$inject = [
'$window',
'$rootScope'
];
function forceFullHeight($window, $rootScope) {
return {
restrict: 'A',
link: function link(scope, element, attrs) {
function onResize() {
element.css('height', $window.innerHeight + 'px');
};
function cleanUp() {
angular.element($window).off('resize', onResize);
}
angular.element($window).on('resize', onResize);
scope.$on('$destroy', cleanUp);
scope.$on('$viewContentLoaded', onResize());
}
};
}
})();