検索
ホームページウェブフロントエンドhtmlチュートリアルCSS Secret Garden: クリック可能な領域を拡張する_html/css_WEB-ITnose

『CSS Secrets』は、@Lea Verou による最新の本で、CSS に関する小さな秘密を説明しています。これは CSSers にとって読む価値のある本です。一定期間読んだ後、私、@全域と @彦子は、関連する読書感想文を W3cplus で公開し、皆さんと共有します。

ユーザー エクスペリエンスに興味がある場合は、フィッツの法則について聞いたことがあるかもしれません。 1954 年にアメリカの物理学者ポール フィッツによって最初に提案されたフィッツの法則は、ターゲット領域に素早く移動するのに必要な時間であり、ターゲットまでの距離とターゲットの幅の比の対数関数です。一般的に使用される数式は、Time = a + b log2 (D / S + 1) です。ここで、T は所要時間、D はターゲットの中心までの距離、W はターゲットの幅、a と b は定数です。

ヒント: simonwallner.at/ext/fitts でインタラクティブな視覚化を介して、フィッツの法則の適用を確認してください

当時、グラフィカル ユーザー インターフェイスは存在していませんでしたが、フィッツの法則は修正されたシステムに完全に適用できました-ポイントデバイスですが、現在ではHCI(ヒューマンコンピュータインタラクション)の原理として広く知られるようになりました。最初は驚くかもしれませんが、フィッツの法則は特定のハードウェアよりも人間の運動制御に関するものであることを覚えておいてください。

当然の結果として、目標が大きければ大きいほど、それに到達するのは容易になります。したがって、多くの場合、拡大するオプションがなければクリックするのが難しい小さなコントロールの周囲のクリック可能な領域を拡大すると、使いやすさが向上します。タッチスクリーンがより一般的になるにつれて、これはますます重要になっています。たとえそれがまだ一般的であるとしても、その迷惑な小さなボタンを何十回も押したい人はいません。

また、ウィンドウの横にマウスを置くと、特定の要素が描画されることを期待します。たとえば、自動的に非表示になっているタイトルは、マウスを近づけると上から自動的に描画されます。また、クリック領域の拡張も含まれます (一方向のみ)。 CSS経由でできるのでしょうか?

解決策

まず、図に示すような単純なボタンがあると仮定しましょう

次に、そのクリック領域を 4 つの方向すべてに 10 ピクセルずつ増加させたいと考えます。これには、cursor: pointer などのいくつかの単純なスタイルを適用しました。これは、マウス操作に便利なだけでなく、クリック領域がどこにあるかをテストするのにも役立ちます。

クリック領域を拡張する最も簡単な方法は、透明な実線の境界線です。これは、アウトラインや影とは異なり、マウスと境界線の間の相互作用も要素に作用するためです。たとえば、要素のクリック領域を全方向に 10 ピクセル拡張するには、コードを次のように記述するだけです:

border: 10px solid transparent;

ただし、以下の画像でわかるように、効果はあまり良くありません。ボタンが大きくなります。

その理由は、デフォルトで背景がその下の境界線を拡張するためです。

border: 10px solid transparent;background-clip: padding-box;

上の図に示すように、表示に問題はありません。しかし、ボタンの周囲に実際の境界線を作成すると、実際にはクリック領域を拡張するために唯一の境界線を使用していることがわかります。それではどうすればいいでしょうか?非常に簡単です。インナー シャドウを使用して (単色) ボーダーをシミュレートできます

border: 10px solid transparent;box-shadow: 0 0 0 1px rgba(0,0,0,.3) inset;background-clip: padding-box;

効果は以下に示すとおりです:

ボーダーとは異なり、複数のボックス シャドウを使用できます。さらに必要な場合は、カンマを使用して影のセットを区切ります。ただし、内側のシャドウと外側のシャドウを組み合わせると、外側のシャドウが境界ボックスの外側に描画されるため、非常に奇妙な効果が得られます。たとえば、ボタンにぼかしの影を追加して、ページ上で「飛び出す」効果、つまり別のクリック可能なコンテンツを与えたい場合があります:

box-shadow: 0 0 0 1px rgba(0,0,0,.3) inset,            0 .1em .2em -.05em rgba(0,0,0,.5);

ただし、これを試してみると、結果はまったく異なることがわかります。私たちが予想していたものより。

この解決策は他の理由から完璧ではありません。枠線はレイアウトに影響しますが、場合によっては問題にならない場合もあります。だから何をすべきか?境界線を削除し、擬似要素を使用して、親要素とのマウス操作をキャプチャします。

ボタンの上に透明な疑似要素をオーバーレイして、全方向にボタンよりも 10 ピクセル大きくすることができます:

button {    position: relative;    /* [rest of styling] */}button::before {    content: '';    position: absolute;    top: -10px; right: -10px;    bottom: -10px; left: -10px;}

これも実現可能で、疑似要素が必要ない限り、何も影響しません。疑似要素のソリューションは非常に柔軟です。クリック領域を任意のサイズ、位置、形状にでき、要素自体とは関係のないコンテンツも作成できます。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Web開発にとってHTMLタグが重要なのはなぜですか?Web開発にとってHTMLタグが重要なのはなぜですか?May 02, 2025 am 12:03 AM

htmltagsareSterenceforwebdevelovementasyStheStructureanhandhancewebpages.1)theydefineLayout、semantics、and-interactivity.2)semanticagsimprovecessibility.3)opeusofusofagscanoptimizeperformanceandensurecross-brows-compativeation。

HTMLタグと属性に一貫したコーディングスタイルを使用することの重要性を説明します。HTMLタグと属性に一貫したコーディングスタイルを使用することの重要性を説明します。May 01, 2025 am 12:01 AM

コードの読みやすさ、保守性、効率を向上させるため、一貫したHTMLエンコーディングスタイルは重要です。 1)低ケースタグと属性を使用します。2)一貫したインデントを保持し、3)シングルまたはダブルの引用符を選択して固執する、4)プロジェクトのさまざまなスタイルの混合を避け、5)きれいなスタイルやEslintなどの自動化ツールを使用して、スタイルの一貫性を確保します。

ブートストラップ4にマルチプロジェクトカルーセルを実装する方法は?ブートストラップ4にマルチプロジェクトカルーセルを実装する方法は?Apr 30, 2025 pm 03:24 PM

Bootstrap4にマルチプロジェクトカルーセルを実装するソリューションBootstrap4にマルチプロジェクトカルーセルを実装するのは簡単な作業ではありません。ブートストラップですが...

DeepSeekの公式Webサイトは、マウススクロールイベントの浸透の影響をどのように達成していますか?DeepSeekの公式Webサイトは、マウススクロールイベントの浸透の影響をどのように達成していますか?Apr 30, 2025 pm 03:21 PM

マウススクロールイベントの浸透の効果を実現する方法は? Webを閲覧すると、いくつかの特別なインタラクションデザインに遭遇することがよくあります。たとえば、DeepSeekの公式ウェブサイトでは、...

HTMLビデオの再生コントロールスタイルを変更する方法HTMLビデオの再生コントロールスタイルを変更する方法Apr 30, 2025 pm 03:18 PM

HTMLビデオのデフォルトの再生コントロールスタイルは、CSSを介して直接変更することはできません。 1. JavaScriptを使用してカスタムコントロールを作成します。 2。CSSを介してこれらのコントロールを美化します。 3. video.jsやPLYRなどのライブラリを使用すると、互換性、ユーザーエクスペリエンス、パフォーマンスを検討してください。プロセスを簡素化できます。

お使いの携帯電話でネイティブセレクトを使用することにより、どのような問題が発生しますか?お使いの携帯電話でネイティブセレクトを使用することにより、どのような問題が発生しますか?Apr 30, 2025 pm 03:15 PM

携帯電話でネイティブセレクトを使用する際の潜在的な問題は、モバイルアプリケーションを開発するときに、ボックスを選択する必要があることがよくあります。通常、開発者...

お使いの携帯電話でネイティブ選択を使用することの欠点は何ですか?お使いの携帯電話でネイティブ選択を使用することの欠点は何ですか?Apr 30, 2025 pm 03:12 PM

お使いの携帯電話でネイティブ選択を使用することの欠点は何ですか?モバイルデバイスでアプリケーションを開発する場合、適切なUIコンポーネントを選択することが非常に重要です。多くの開発者...

Three.jsとOctreeを使用して部屋で3人のローミングの衝突処理を最適化する方法は?Three.jsとOctreeを使用して部屋で3人のローミングの衝突処理を最適化する方法は?Apr 30, 2025 pm 03:09 PM

Three.JSとOctreeを使用して、部屋でのサードパーソンローミングの衝突処理を最適化します。 3つのjsでoctreeを使用して、部屋でサードパーソンローミングを実装し、衝突を追加してください...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。