最近、私はかなり恥ずかしいCSSの監視に遭遇しました。 狭いサイドバーを含むアイコンを備えたウェブサイトを開発していました。 説明的なテキストのためのスペースがないため、デザインはアクセス可能でありながら最初に隠されたツールチップが長引くことでトリガーされました。 ツールチップは、3秒のホバーの後に表示されます。
私の最初のアプローチはJavaScriptの状態管理に関係していました:
mouseenter
、 mouseleave
)を管理する。に設定する前の3秒の遅延
on mouseenter
。 mouseleave
)。これはReactプロジェクトだったため、JavaScript状態を使用すると自然に感じられました。しかし、振り返ってみると、不必要に複雑であることが証明されました。 mouseenter
and mouseleave
イベントはわずかに信頼できないと感じ、機能全体がCSS単独でより簡潔かつ効率的に実装された可能性があります。
私はReact UIを保持しましたが、JavaScriptの状態管理を削除しました。 ソリューションには、単純なcss
transition-delay プロパティが含まれます。
。もの {
遷移:0.2秒;
}
.thing:hover {
トランジションデレイ:3s; / *ホバーアニメーションのみを遅らせるだけでなく、オフではありません */
}
.thing { transition: 0.2s; } .thing:hover { transition-delay: 3s; /* delay hover animation only ON, not OFF */ }
このアプローチは、タッチスクリーンのアクセシビリティに完全に対応していません。スクリーンリーダーはアクセス可能なテキストを処理し、デスクトップユーザーはツールチップから利益を得ていますが、タッチのみのユーザーはアイコンラベルを見逃す可能性があります。 私のプロジェクトは、カーソルの可用性を想定して、大きな画面を対象としていますが、タッチアクセシビリティは依然として懸念事項です。 要素がリンクの場合、
:Hoverが最初のタップでアクティブになる可能性があります。 リンクが明確なタイトルを持つページにつながる場合、それは十分なコンテキストを提供する可能性があります。 それ以外の場合、タッチイベントのためのJavaScriptイベント処理は実行可能なオプションのままです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3