iPhoneで1回目のタップがhover状態の表示に使われ、2回目で移動することがあります。ただし、透明な重なり要素やJavaScriptのpreventDefaultでも似た症状が出ます。空のtouchstartイベントを全ページへ加える方法を万能な対策として使うのは避け、原因を分けて修正します。
hoverによる表示変更を確認する
問題のリンクに適用される:hoverで、子要素や疑似要素のdisplay・visibilityが変わっていないか調べます。コピー環境でそのルールを外して1回で移動するか確認してください。端末幅だけでタッチ端末と判断せず、マウスでのhover装飾を次のメディア条件へ限定します。
.waza-tap-link { display: inline-block; padding: .8em 1em; text-decoration: underline; }
.waza-tap-link:focus-visible { outline: 3px solid #315d50; outline-offset: 3px; }
@media (hover: hover) and (pointer: fine) {
.waza-tap-link:hover { background: #edf3ef; }
}既存の該当:hoverルールを置き換えます。上から追加するだけでは元のルールは無効になりません。クラス名は対象リンクにだけ付け、子テーマのCSSまたは追加CSSへ記載します。
操作できる見本
同じページの確認位置へ移動移動先です。リンクは通常のa要素で、クリックをJavaScriptで取り消していません。
CSSで直らない場合
重なった要素がタップを受け取っていないか、クリックハンドラーが移動を取り消していないか確認します。メニューの開閉とリンク遷移を1つの要素に兼用させている場合は、開閉ボタンと移動リンクを分けます。プラグイン本体を直接書き換えると更新時に失われるため、提供元の修正や設定を確認してください。
iOS Safariの実機で1回タップ、PCでクリック、キーボードでTabとEnterを確認します。この見本のデスクトップブラウザ確認はiOS実機の再現検証の代わりにはなりません。戻す場合は追加クラスとCSSを外し、元のルールをバックアップから戻します。
hoverメディア特性の仕様を参照してください。



