为移动设备添加 CSS 触摸启动更改

Add CSS change on touch start for mobile devices

我试图在应用导航到另一个页面之前更改 link 的 CSS。 我之前已将 ontouchstart 事件添加到 link 元素以大大加快应用程序中的导航速度。问题是在 CSS 可以更改之前事件触发并且应用程序导航。

在页面更改之前我可以通过哪些方式提供用户反馈?

补充说明:

下面是一些示例代码:

HTML

<a class="button" ontouchstart="goTo('#!/stats', 'buttonActive', this);" onclick="goTo('#!/stats', 'buttonActive', this);">STATS</a>

CSS

.button {
    display: flex;
    background-color: #000000; 
    color: dodgerblue;
    font-size: 4vmin;
    cursor: pointer;
    text-decoration: none;
    font-size: 7vmin;
    border: 0.75vmin solid dodgerblue;
    border-radius: 1vmin;
    height: 8vh;
    width: 40vmin;
    padding: 2vmin;
    margin: 5vmin auto;
    align-items: center;
    justify-content: center;
}
.buttonActive {
    background-color: dodgerblue;
    color: white;
}

JS

function goTo (location, addClass, elem) {
    elem.className += addClass;
    window.location.href = location;
}

您可以稍微延迟一下 goTo 函数的 window.location.href 调用。这将使 css 有时间在请求新文件之前进行更新。它可能看起来像这样:

function goTo (location, addClass, elem) {
  elem.className += addClass;
  setTimeout(function(){ 
    window.location.href = location;
  }, 250);
}

这将造成 250 毫秒的延迟...可能有足够的时间让 css 进行更新,并且您的观众可以在启动新文件请求之前识别更改。

我最终使用 ontouchend 而不是 ontouchstart。这允许 CSS 在用户按下手指时发生变化,并且在用户释放 his/her 手指之前不会导航页面。