我已经在我的 iPhone 8+ 上对此进行了测试,但问题不存在。它也不会发生在我测试过的任何计算机上。
但是,当我在 chrome 或 safari 中使用 iPhone 6 iOS 12.4 时,当我单击按钮或带有角度(单击)的 div 时,它会跳到最顶部。我无法使用浏览器中的开发人员工具复制它。
不,我没有使用标签。我见过的所有示例都与 a 标签中的 # 有关。
其中一个元素的 html 如下所示:
<i
nz-icon
nzType="heart"
[nzTheme]="
postService.userLikesPost.value ? 'fill' : 'outline' "
(click)="likeOrUnlikePost()"
></i>
我觉得它与屏幕尺寸有关,但一切都可以很好地适应页面。没有横向滚动或任何东西,按钮所做的只是向 api 发送一些东西。另一个(点击)我有一个向下切换,但这也将用户发送到顶部。另一个是在 div 上展开并再次将用户发送到顶部。
知道是什么原因造成的吗?同样在 iphone 8+ 上没有问题,只是较小的 6。我确实设法打开了 xcode 模拟器,但它只下降到 iphone8 并且没有任何问题。
我也碰巧在使用 ngx-infinite-scroll 但我不认为这是导致问题的原因,因为它会在两个设备上发生。
编辑:发现手机是 ios 12 上的 iphone 6。它在 XR 和 iphone 8、8+ 和 Nexus 上运行良好
编辑 2:我已经将我的 xcode 模拟器设置为使用 ios12.4,这似乎是问题所在。因为它适用于 ios 13 iphone 7 但不适用于 iphone 7 ios 12.4... 这可能是 angular 8 和 ios 12.4 问题吗?我将尝试忽略事件默认行为,看看是否有效。
编辑3:我已经缩小了问题的范围。滚动容器位于路由器插座内。所以外部的html看起来像这样。
<div class="main-container">
<app-ui-navigation-header class="top-banner"></app-ui-navigation-
header>
<div class="navigation-container" #navigationContainer>
<div class="router">
<router-outlet></router-outlet>
</div>
<div class="bottom-container">
<app-ui-bottom-banner></app-ui-bottom-banner>
</div>
</div>
</div>
对于我拥有的 css
.main-container {
background-color: $off-white;
display: grid;
grid-template-rows: .15fr 1fr;
height: 100%;
}
.navigation-container {
grid-row: 2 / 3;
display: grid;
grid-template-rows: 1fr auto;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
但随后我将 overflow-y: auto 和溢出滚动到主容器,如下所示:
.main-container {
background-color: $off-white;
display: grid;
grid-template-rows: .15fr 1fr;
height: 100%;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
它工作得很好。我想保留标题并让 .navigation-container 滚动。但我正在取得进展。