マりスなしのWeb

おそらく誰もが、この画面を芋おいるずき、粟神的に䞡手をキヌボヌドに移したす。 はい、マりスなしでナビゲヌトするこずが可胜で、高速で優れおいたした 倚くはただ同様のマネヌゞャヌTotal commander、Farなどを䜿甚しおいたす。



䞀方、ほずんどすべおの最新のWebサむト、Web甚に構築されたポヌタルおよび゜リュヌションでは、ナヌザヌは垞にキヌボヌドから手を離し、マりスでボタン/アむコン/フィヌルドを狙い、テキストを入力するために再びキヌボヌドに手を戻すこずを䜙儀なくされおいたす。



Web䞊でマりスなしでナビゲヌションの利䟿性を実珟するにはどうすればよいですか





圓瀟が開発および実装する補品のほずんどは、゚ンドナヌザヌに提䟛されたす。 コヌルセンタヌのオペレヌタヌ、゚ンゞニア、マネヌゞャヌ-それらはすべお、「内郚䜿甚のための」ナヌザヌむンタヌフェむス-B2Bむンタヌフェむスで動䜜したす。 マりスを䜿甚せずにキヌボヌドからシステムを操䜜できるこずは、B2Bむンタヌフェヌスの重芁な芁件です。 なんで







このようなナビゲヌションは「セクシヌ」に芋えず、トレヌニングに時間がかかりたすが、䜿甚によるボヌナスはこれらのデメリットを倧きく䞊回りたす。



だから挑戊



倚数のWebベヌスのナヌザヌむンタヌフェむスがありたす。 必芁です





分析する



キヌボヌドナビゲヌションには4぀の䞻なアプロヌチがありたす。それらを怜蚎しおください。





タブ


Tab-TabキヌShift + Tabを䜿甚したむンタヌフェむス芁玠間の遷移。







ホットキヌ


ホットキヌ口語的にはホットキヌ-特定の機胜を呌び出すキヌの組み合わせ。 これにより、システムの基本機胜ぞのアクセスを簡玠化できたす。 Habrahabr、Yandex、Google Mailなど、最も人気のある機胜にアクセスするために、たすたす倚くのサむトがペヌゞでホットキヌを䜿甚し始めおいたす。 しかし、倚くの機胜があり、各ペヌゞが異なる堎合はどうでしょうか すべおのホットキヌを芚えるこずは単に䞍可胜です。぀たり、䜿甚は効果的ではありたせん。 たた、コンテキストの問題もありたす。たずえば、ペヌゞに耇数のテヌブルず耇数の保存ボタンがある堎合です。





実装䟋Firefox拡匵機胜は、ホットキヌアプロヌチを䜿甚したす。デスクトップアプリケヌションでは非垞に䞀般的です䟋はoutlookです。





空間ナビゲヌション


Webペヌゞ䞊の芁玠がcssを䜿甚しお配眮されるようになったずき、タブナビゲヌションはそのタスクに察凊しなくなりたした。カヌ゜ルは、ナヌザヌが芋る方法ではなく、htmlドキュメント内の宣蚀の順序で蚭蚈芁玠を飛び越えたした。 その埌、䞀郚のブラりザヌFirefox、Operaは空間ナビゲヌションを実装したした。 ナヌザヌは、Shift +矢印の組み合わせを䜿甚しお蚭蚈芁玠間を移動でき、次の芁玠は画面䞊の実際の䜍眮に基づいお決定されたした。







キャリッゞの動き


このアプロヌチの特城は、ナヌザヌのカヌ゜ルがフォヌム芁玠ずリンクだけでなく、ペヌゞのコンテンツ党䜓Wordの堎合党䜓を移動するこずです。 空間的アプロヌチのように、4぀の方向に移動できたす。







䞊蚘の゜リュヌションは、すべおのブラりザヌでサポヌトされおいないため、私たちには適しおいたせん。特定のペヌゞを埮調敎する機胜がありたせん。ホットキヌず空間ナビゲヌションの䞡方を1か所で均䞀に構成しおください。



マりスレスの玹介







マりスレスの䞻な機胜は次のずおりです。







マりスレスの動䜜原理


ペヌゞは、通垞のCSSセレクタヌを䜿甚しおブロックに分割されたす。 ブロックには子ブロックを含めるこずができたす。 各ブロックには、独自のホットキヌのセットJSONオブゞェクトがありたす。 ホットキヌは、内郚ブロックに継承できたす。 ホットキヌには、制埡可胜な可芖領域がありたすたずえば、同じブロックを異なるブロックに保存するためのホットキヌですが、珟圚のブロックによっお動䜜が異なりたす。





この図は、ブロックずサブブロックぞの分割を瀺しおいたす。



各ブロックの構成はjsonオブゞェクトであり、すべおのブロックのjsonオブゞェクトがペヌゞの構成を圢成したす。



この堎合の空間ナビゲヌションは、ホットキヌの特殊なケヌスです。 必芁な構成パラメヌタヌの数を最小限に抑えるず、最小限のアクションで基本的なサポヌトが利甚可胜になりたす。 最も単玔な構成

new MouselessBlock({ //  selector: "#blockId", //     childSelector: “a”, //         keys: [ //    ,     new MouselessAction({key: ncKey.KEY_LEFT, action: ncKey.gotoPrevElem }), //          new MouselessAction({key: ncKey.KEY_RIGHT, action: ncKey.gotoNextElem }) ] });
      
      





#blockIdブロック内で、巊右のキヌを䜿甚しおリンク間でフォヌカスを移動できたす。 gotoPrevElem / gotoNextElemナヌティリティ関数、カスタム関数を䜿甚するこずもできたす。



実際のケヌスでは、ベヌスラむブラリを展開したす。







NavigationTreeの䟋を䜿甚したブロック構成ドロップダりンツリヌ

 new MouselessBlock({ selector: "#navigationTree", childSelector: "li > a:visible", ring: true, keys: [ new MouselessAction({key: ncKey.KEY_LEFT, action: ncKey.gotoPrevBlock, ctrl: true}), new MouselessAction({key: ncKey.KEY_RIGHT, action: ncKey.gotoNextBlock, ctrl: true}), new MouselessAction({key: ncKey.KEY_UP, action: ncKey.gotoPrevElem, ctrl: false}), new MouselessAction({key: ncKey.KEY_DOWN, action: ncKey.gotoNextElem, ctrl: false}), new MouselessAction({key: ncKey.KEY_RIGHT, action: openNavTreeNode, ctrl: false}), new MouselessAction({key: ncKey.KEY_LEFT, action: closeNavTreeNode, ctrl: false}) ]});
      
      





これで、ツリヌを䞊䞋に移動し、ブランチを巊右に開くこずができたす。 openNavTreeNode / closeNavTreeNode関数は、Mouselessの実装前に䜜成されたしたツリヌぞのapiずしお公開されたした。



したがっお、この堎合でも、新しいコヌドを蚘述する必芁はなく、簡単な構成で十分です。

CSSはあらゆるトピックに簡単に眮き換えられたす。アクティブ化された芁玠ずアクティブな芁玠を匷調衚瀺するルヌルを蚘述するだけです。 特定のブロックたたは芁玠に察しお、独自のより耇雑なものを远加できたす。



合蚈



゜リュヌションにマりスレスを実装したこずで、䞀方ではキヌボヌドナビゲヌションの玠早い基本的なサポヌトを提䟛し、他方では最倧限の効率ず䜿いやすさを実珟するための詳现なチュヌニングを可胜にするラむブラリを手に入れたした。



远加のボヌナスは、W3Cの「Webコンテンツアクセシビリティガむドラむン」 www.w3.org/TR/WCAG20 の䞀郚をカバヌしたこずです。



この方向での䜜業は終了しおいたせん。私たちは継続し、コミュニティの反応を埅っおいたす。



All Articles