我目前遇到的问题是,我正在处理的一个网站在移动设备上缩放时无法正常工作。基本上,该网站有一条水平全宽线,固定在垂直中心,并且在背景中有一长串文字。页面会自动滚动,水平线告诉用户哪一行文字现在很重要。(页面会自动滚动,以使重要的文本行位于屏幕中央。)但是当我使用Firefox在我的Android手机上缩放时,该线不再居中于屏幕上。甚至可以缩放到该线完全不在屏幕上的程度。即使在这种情况下,页面仍然会自动滚动,我确信重要的文本仍然在该水平线下面,但是如果它不再屏幕上可见,那么它就没有用了。在普通的桌面电脑上,不存在这个问题。如果您缩放,水平线仍保持在屏幕中心的固定位置。现在我想知道,在触摸设备上是否可能修改缩放行为,以使其不破坏我的网站?
我知道我可以完全禁用缩放,但我不想夺走这个功能。同时,如果改变字体大小而不是缩放,则网站将无法滚动到正确的位置。
编辑:禁用缩放不是选项,即使它仅在触摸设备上被禁用也不行。因此 this question 不能提供帮助。
我知道我可以完全禁用缩放,但我不想夺走这个功能。同时,如果改变字体大小而不是缩放,则网站将无法滚动到正确的位置。
编辑:禁用缩放不是选项,即使它仅在触摸设备上被禁用也不行。因此 this question 不能提供帮助。
Edit2: Here's a very simplified version of my code:
$(function() {
var textEl = $('#text');
var $w = $(window);
var percentPos = 0.000;
setInterval(function() {
var currentPosX = window.scrollX || window.pageXOffset;
var newPosY = textEl.offset().top-$w.height()/2+percentPos*textEl.height();
window.scrollTo(currentPosX, newPosY);
percentPos += 0.001;
if (percentPos >= 1)
percentPos = 0.000;
}, 100);
})
#line {
position: fixed;
background-color: #ffef011f;
height: 5px;
top: 50%;
width: 100%;
}
#container {
text-align: center;
margin-top: 500px;
margin-bottom: 500px;
}
#text {
color: #000;
font: normal 12px/1.5 Courier New,monospace,Courier;
white-space: pre;
word-break: break-all;
text-align: left;
display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="line"></div>
<div id="container">
<span id="text">
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis
nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in
voluptate velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui
officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis
nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in
voluptate velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui
officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis
nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in
voluptate velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui
officia deserunt mollit anim id est
laborum.
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis
nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in
voluptate velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui
officia deserunt mollit anim id est
laborum.
</span>
<div>
要在移动设备上运行它,您可以单击这里:https://jsfiddle.net/k754fb1p/embedded/result
(实际上,服务器正在处理滚动位置,并通过websockets将百分比位置发送给客户端。)
但是,如果您在桌面设备上放大,您会发现黄色线仍停留在相同的文本行上,并且黄色线保持在中心位置。但是,在我的Android手机上使用Firefox,则不是这样的: