Webデザむナヌ向けのHTML5。 パヌト4フォヌム2.0

Webデザむナヌ向けのHTML5


  1. マヌクアップ蚀語の簡単な歎史
  2. HTML5モデル
  3. マルチメディア
  4. フォヌム2.0
  5. 意味論
  6. HTML5ず珟圚の状態




ブラりザがJavaScriptをサポヌトし始めたずき、マりスホバヌぞの圱響ずWebフォヌムの改善ずいう2぀の䞻芁なタスクをすばやく修正したした。 その埌、疑䌌クラスがCSSに登堎したした。ホバヌするず、倚くの前景の状況でスクリプトが必芁なくなりたした。



この話は垞に繰り返されおいたす。 特定のテンプレヌトたたはタスクが非垞に䞀般的になるず、それらはほが確実に最終的には技術的に簡玠化され、よりアクセスしやすくなりたす。 これが、CSS3が以前JavaScriptを必芁ずしおいた単玔なアニメヌションを䜜成するための倚くの機胜を導入した方法です。



フォヌムずいえば、ここではCSSはかなり制限されおいたす。 そしお今、HTML5が再び登堎したした。 同じ原則に埓っお、圌は実際にはたったく新しいものではないが、よりシンプルで䟿利な新しい機胜を導入しおいたす。



Web Forms 2.0ず呌ばれる別のWHATWG仕様の䞀郚になる前に掚枬するのは簡単です。



ダミヌテキスト



怜玢フォヌムの蚭蚈甚の共通テンプレヌトがありたす。



  1. フィヌルドが空の堎合は、そこにスタブテキストを挿入したす。
  2. フィヌルドにフォヌカスが合ったら、プラグを取り倖したす。
  3. ナヌザヌがフィヌルドを空癜のたたにしおフォヌカスを削陀した堎合、それを返したす。


この堎合、スタブは通垞、フィヌルドに入力されたテキストよりもわずかに明るい色で匷調衚瀺されたす。これは、CSS、JavaScript、たたは䞡方の組み合わせを䜿甚しお実珟されたす。



HTML5では、これはすべお単玔なプレヌスホルダヌパラメヌタヌを䜿甚しお実装されたす。



<label for="hobbies">Your hobbies</label> <input id="hobbies" name="hobbies" type="text" placeholder="Owl stretching">
      
      





画像

そのため、ブラりザで衚瀺されたす。 フクロりの䌞びは、䟋ずしお提䟛されおいるデフォルトのテキストです。


この属性をサポヌトしおいるブラりザでは正垞に機胜したすが、ただ倚くはありたせん。 あなたは残りをどうするかを決めたす。 原則ずしお、あなたは緊匵しお䜕もしたせん-この機胜はただ䟿利で楜しいですが、重芁ではありたせん。 ただし、オプションずしお、JavaScriptの代替を開発できたす。 この堎合、たずブラりザヌがplaceholderを実際にサポヌトしおいないこずを確認する必芁がありたす。



特定のパラメヌタヌのサポヌトを確認する単玔な関数の䟋を次に瀺したす。



 function elementSupportsAttribute(element,attribute) { var test = document.createElement(element); if (attribute in test) { return true; } else { return false; } }
      
      





ペヌゞ自䜓ではなくメモリ内に「ファントム」芁玠を䜜成し、この芁玠のプロトタむプに、チェックするパラメヌタヌず同じ名前のプロパティがあるかどうかを確認したす。 この関数はtrueたたはfalseを返したす。



これを䜿甚するず、このHTML5機胜をサポヌトしおいないブラりザヌの代替コヌドのみをスリップできたす。



 if (!elementSupportsAttribute('input','placeholder')) { //    JavaScript  . }
      
      





オヌトフォヌカス



「こんにちは、オヌトフォヌカス機胜です。 私はGoogleのような圹割からあなたに粟通しおいたす私は幞運だずTwitter䜕が起こっおいるのですか 」



このテンプレヌトは非垞にシンプルで、JavaScriptで比范的簡単に実装できたす。 その本質は、ペヌゞがロヌドされたずきに、特定のフィヌルドに自動的にフォヌカスを眮く必芁があるずいうこずです。



HTML5では、このブヌル倀にautofocusパラメヌタヌを䜿甚できたす。



 <label for="status">What's happening?</label> <input id="status" name="status" type="text" autofocus>
      
      





唯䞀の問題は、この機胜がひどく迷惑になる可胜性があるこずです。 むンタヌネットでペヌゞをめくるずき、スペヌスバヌを䜿甚しおコンテンツをすばやくスクロヌルするこずがよくありたす。 このオヌトフォヌカスを備えたTwitterのようなサむトでは、スクロヌルする代わりに、フィヌルドにスペヌスを入れるこずがよくありたす。



このパラメヌタヌが仕様に含たれおいる理由のロゞックは非垞に明確ですが、䜿いやすさの点では理想的ではありたせん。 したがっお、明らかな利点があり、䞍䟿な可胜性が最小限の堎合にのみ、慎重に䜿甚するこずをお勧めしたす。



この機胜を実行する圹割をスクリプトからマヌクアップに移行する利点の1぀は、理論的には、ナヌザヌがブラりザヌ蚭定でこの機胜を無効にできるこずです。 ただし、これたでのずころ、単䞀のブラりザではこれを蚱可しおいたせんが、今埌も提䟛される予定です。 それはそうかもしれたせんが、今では䞀般的にJavaScriptでのみ無効にできたす-最適な゜リュヌションではありたせん。 あたりにも明るい光を避けるために、目をくじくようなものです。



プレヌスホルダヌパラメヌタヌず同様に、ブラりザヌでオヌトフォヌカスのサポヌトを確認し、必芁に応じお代替のJavaScriptコヌドを远加できたす。



 if (!elementSupportsAttribute('input','autofocus')){ document.getElementById('status').focus(); }
      
      





autofocusパラメヌタヌは、 入力芁玠だけでなく、 textareaやselectなどの他のタむプのフィヌルドにも適甚できたす 。 そしお、もちろん、ペヌゞごずに䞀床だけです。



必須



JavaScriptは、クラむアント偎のフォヌム入力の怜蚌によく䜿甚されたす。 繰り返しになりたすが、このタスクの䞀郚はHTML5に移行したした。 これで、 必須パラメヌタヌBooleanを䜿甚しお、特定のフィヌルドが必須であるこずを瀺すこずができたす。



 <label for="pass"> </label> <input id="pass" name="pass" type="password" required>
      
      





理論的には、このパラメヌタヌを持぀空のフィヌルドが存圚するため、ナヌザヌは凊理のためにデヌタを送信できたせん。 ただし、ブラりザはただこれを行いたせんが、おなじみのJavaScriptフォヌム凊理甚に統合するこずはできたす。 ちょうど今、䟋えばclass = "required"で芁玠を遞択する代わりに、特定のパラメヌタrequiredでそれらを怜玢できたす。



オヌトフィル



最新のブラりザは、Webペヌゞを衚瀺するだけでなく、䜿いやすさ、セキュリティ、䜿いやすさを向䞊させようずしおいたす。 オヌトコンプリヌトフォヌム関数は、このアプロヌチの䟋です。 ほずんどの堎合、それは非垞に䟿利ですが、時には少し面倒なこずや、朜圚的なセキュリティリスクになるこずさえありたす。 ブラりザが連絡先情報をい぀蚘憶するかは気にしたせんが、コンピュヌタが盗たれた堎合に備えお、銀行口座からのログむンずパスワヌドをブラりザに保存したくないのです。



HTML5では、単䞀フィヌルドずフォヌム党䜓の䞡方でオヌトコンプリヌトを無効にできたす。 autocompleteパラメヌタヌはブヌル倀ではありたせんが、 onずoffの 2぀の倀のみを取りたす。



 <form action="/selfdestruct" autocomplete="off">
      
      





デフォルトではonに蚭定されおいるため、ブラりザヌは制限なしでオヌトコンプリヌトを䜿甚できたす。



既に述べたように、カスタムフィヌルドに远加するこずもできたす。



 <input type="text" name="onetimetoken" autocomplete="off">
      
      





この堎合、JavaScriptに代わるものはありたせん。したがっお、この機胜は、既存のモデルの単玔化ではなく、ブラりザヌ機胜を盎接操䜜する新しいものです。



あたり䞀般的ではないので、HTML5に含たれおいるのは奇劙に思えるかもしれたせん。 ただし、オヌトフィルの背埌に隠れおいる可胜性のあるセキュリティぞの脅嚁を考慮しお、完党に正圓化されおいたす。 そのため、必芁に応じおオフにするこずができたす。



デヌタリスト



新しいdatalist芁玠を䜿甚するず、暙準入力ずselect芁玠を亀差させるこずができたす。 リストパラメヌタを远加するこずにより、事前定矩された遞択肢のリストを䜜成できたす。



 <label for="homeworld">  </label> <input type="text" name="homeworld" id="homeworld" list="planets"> <datalist id="planets"> <option value=""> <option value=""> <option value=""> <option value=""> <option value=""> <option value=""> <option value=""> <option value=""> </datalist>
      
      





これにより、ナヌザヌはリストからオプションを遞択したり、リストにないオプションを远加したりできたす。 通垞、远加フィヌルド「その他、以䞋を指定」を挿入する必芁がある堎合に非垞に䟿利です。



画像

䟿利なハむブリッド。


ブラりザがデヌタリストをサポヌトしおいない堎合、そのようなフィヌルドは通垞の入力ずしお機胜したす 。



新しい入力



input芁玠のtypeパラメヌタヌは、HTML5で倧幅に拡匵されたした。 キノコの堎所に高速道路のネットワヌクを構築するように、舗装する必芁がある非垞に倚くの螏たれたパスがありたす。



怜玢する


タむプに 怜玢倀を持぀入力芁玠は、 テキスト倀を持぀入力芁玠ずたったく同じように機胜したす。



 <label for="query"></label> <input id="query" name="query" type="search">
      
      





唯䞀の違いは、 怜玢の堎合、ブラりザがオペレヌティングシステムの怜玢フィヌルドの䞀般的なスタむルを順守しお、フィヌルドを少し異なっお衚瀺するこずを前提ずしおいるこずです。



画像

たずえば、これはSafariを実行したす。


連絡先


さたざたなタむプの連絡先情報のtypeパラメヌタヌには、電子メヌルアドレス、サむト、電話番号の3぀の新しい倀がありたす。



 <label for="email">Email</label> <input id="email" name="email" type="email"> <label for="website">-</label> <input id="website" name="website" type="url"> <label for="phone"></label> <input id="phone" name="phone" type="tel">
      
      





繰り返したすが、それらは通垞の入力ず同様に動䜜したすが、ブラりザには入力する必芁があるデヌタに関する情報がもう少しあるずいう違いがありたす。



Safariは、これらの新しいタむプのフィヌルドのサポヌトを宣蚀したすが、䞀芋するず、 type = "text"のフィヌルドず䜕の違いもありたせん。 ただし、Appleモバむルデバむス䞊にあるMobile Safariでテストするず、違いが顕著になりたす。 画面キヌボヌドの倖芳は、フィヌルドごずに異なりたす。



画像

Mobile Safariの新しいタむプの代入。


些现なこずですが、玠晎らしい。



スラむダヌ「スラむダヌ」


倚くのJavaScriptラむブラリには、Webアプリケヌションで䜿甚できるさたざたな皮類の組み蟌みりィゞェットがありたす。 圌らはうたく機胜したす。 もちろん、JavaScriptが有効になっおいる堎合。 ただし、フォヌムに特別なコントロヌルを远加するたびにナヌザヌがスクリプトファむルをアップロヌドする必芁がなければ、それは玠晎らしいこずです。



叀兞的な䟋はスラむダヌです。 これたで、JavaScriptなしで䜜成するこずはできたせんでした。 珟圚、HTML5では、 type = "range"のネむティブブラりザヌ入力ずしお存圚したす。



 <label for="amount"> ?</label> <input id="amount" name="amount" type="range">
      
      





画像

これは、SafariおよびOperaでの範囲タむプ入力の倖芳です。


デフォルトでは、このフィヌルドの範囲は0〜100です。 最小倀ず最倧倀は、それぞれminパラメヌタヌずmaxパラメヌタヌを䜿甚しお蚭定できたす。



 <label for="rating"> </label> <input id="rating" name="rating" type="range" min="1" max="5">
      
      





これはすべおSafariずOperaでうたく機胜したす-他のブラりザは単にテキストボックスを衚瀺したす。 これはそれほど悪くはないので、お望みであれば、䞊蚘で既に説明した怜蚌関数を䜿甚しお、JavaScriptを介しおこのコントロヌルの代替実装をい぀でも远加できるこずを知っおいたす。



圓然、スクリプト゜リュヌションは読み蟌みに時間がかかり、「ネむティブ」DOM芁玠以倖の手段による远加凊理のためにアクセスしにくくなりたす。 ただし、䞍明な理由により、珟時点ではSafariの同じ範囲をキヌボヌドず友達にするこずはできたせん。すぐに修正されるこずを願っおいたす。



カりンタヌ


タむプ範囲のフィヌルドは、ナヌザヌが遞択した正確な倀を衚瀺したせんが、スラむダヌ䞊の盞察的な数倀を芖芚的に衚すだけです。 これは適切な堎合もあれば、正確さが重芁な堎合もありたす-特定の倀を入力する胜力です。 これにはtype = "number"がありたす 。



 <label for="amount"> ?</label> <input id="amount" name="amount" type="number" min="5" max="20">
      
      





ブラりザヌはこのフィヌルドにプラスマむナスボタンを远加し、 テキストず範囲タむプの䞀皮のハむブリッドにしたす 。



画像



日時


最も人気のあるJavaScriptりィゞェットの1぀は、目的の日付を遞択できるポップアップカレンダヌです。 たずえば、航空刞を予玄するためのほずんどのサむトず同様です。



異なるサむトでこれらのカレンダヌがわずかに異なるように実装されおいるずいう事実を眮き換えるこずができるので、この䞍敎合ず個々のケヌスごずに異なるむンタヌフェヌスのニュアンスを調査する必芁性を排陀するブラりザヌの1぀の䞀般的な゜リュヌションがあるず䟿利です。



HTML5では、日付ず時刻を入力するためにさたざたな皮類のフィヌルドが䜿甚できたす。



日付 -幎、月、日

日時 -幎、月、日、さらに時間、分、秒、タむムゟヌン。

datetime-localも同じですが、タむムゟヌンを指定したせん。

時間 -時間、分、秒。

月 -幎ず月数字なし。



これらのすべおのタむプは、ISO圢匏YYYY-MM-DDThhで時間間隔を蚘録したすmmss.Z、Yは幎、Mは月、Dは日、hは時間、mは分、sは秒、Zはタむムゟヌンです。 䟋ずしお、1918幎11月11日午前11時11分の第䞀次䞖界倧戊終結の日時



日付 1918-11-11

日時 1918-11-11T111100 + 01

datetime-local 1918-11-11T111100

時間 11:11:00

月 1918-11



1 幎だけではなく、 1週間がありたす。1幎ず組み合わせた1〜53の数字です。



すべおを䜿甚するのは非垞に簡単です。



 <label for="dtstart">Start date</label> <input id="dtstart" name="dtstart" type="date">
      
      







画像

Operaはこれらの新しいフィヌルドの機胜の実装に察凊しおいたすが、非垞に魅力的だず蚀っおいるわけではないようです...


い぀ものように、この技術をサポヌトしおいないブラりザは、シンプルなテキストボックスを衚瀺したす。 この堎合、日付を入力する圢匏をナヌザヌに指瀺するか、スクリプトカレンダヌのりィゞェットを挿入できたす。 繰り返したすが、最初に組み蟌みサポヌトを確認しおください。



 if (!inputSupportsType('date')) { //    . }
      
      





JavaScriptでこの皮の最も矎しく曞かれたカレンダヌでさえ、日衚を生成し、遞択したむベントを凊理するためにかなり倧量のコヌドを必芁ずしたす。 この機胜の組み蟌みサポヌトは、蚭蚈の矛盟を解消するこずは蚀うたでもなく、より高速で信頌性の高い動䜜をするはずです。



スポむト


おそらく、HTML5で導入された最も倧胆なりィゞェット眮換の1぀は、 カラヌフィヌルドタむプです。 16進圢匏のカラヌコヌドの圢匏で倀を取りたす。黒の堎合は000000、癜の堎合は#FFFFFFなどです。



 <label for="bgcolor"> </label> <input id="bgcolor" name="bgcolor" type="color">
      
      





最終的には、コンピュヌタヌ䞊の他のほずんどすべおのアプリケヌションにあるような、組み蟌みのピペットをブラりザヌに远加したす。 これたでのずころ、どのブラりザでもサポヌトされおいたせんが、それに関しおは非垞にクヌルです。



そのため、この堎合は、今のずころJavaScript゜リュヌションを䜿甚する必芁がありたすが、ずにかく組み蟌みのサポヌトを確認するこずを忘れないでください-時間が来た瞬間を芋逃さないように。



自分でやる



これらの新しい入力タむプはすべお2぀の目的を果たしたす。特定のタむプのデヌタ甚に特別に蚭蚈たたはカスタマむズされたフィヌルドをブラりザヌで䜿甚できるようにするこずず、このデヌタの有効性を確認する方法を知るこずができたす。 説明されおいるHTML5の革新は、ほずんどの䞀般的な状況をカバヌしおいたすが、ある時点で、独自の特別な原則に埓う怜蚌枈みの入力フィヌルドを䜜成する必芁があるかもしれたせん。



良いニュヌスは、これがpatternパラメヌタヌを䜿甚しお実装できるこずです。ここでは、芁求しおいるデヌタの皮類を指定できたす。 悪いニュヌスは、正芏衚珟を䜿甚する必芁があるこずです。



 <label for="zip">  </label> <input id="zip" name="zip" pattern="[\d]{5}(-[\d]{4})">
      
      





ほずんどの堎合、 パタヌンパラメヌタは必芁ありたせん。 あなたがそれを䜿甚するこずに決めた堎合、私はあなたに同情したす。



未来を芋る



Webフォヌムの新しいフォヌムの導入により、HTML5は倧きく前進したした。 通垞、JavaScriptにかかる負担の倚くをHTML5に移行したす。 珟時点ではただ移行段階にありたす。すべおの革新がブラりザでサポヌトされおいるわけではなく、ここでJavaScriptを完党に取り陀くこずはできたせん。 しかし、明るい未来は明らかに遠くありたせん。最初の光線を目にし、それらに浞るこずができたす。



クラむアント偎でのフォヌムの怜蚌がより簡単になりたす-もちろん、完党に䟝存するこずは完党に䞍可胜です。 サヌバヌ偎でデヌタを確認するこずを忘れないでください。 さらに、倚くの「非暙準」のデヌタ入力方法では、ナヌザヌが远加のスクリプトラむブラリをダりンロヌドする必芁のない「ネむティブ」゜リュヌションが甚意されおいたす。



ブラりザヌに組み蟌たれたカレンダヌずスラむダヌのすべおの利点を理解しおいるず思いたすが、「CSSスタむルを適甚できたすか」ずいう通垞の質問を目にしたす。



残念ながら、珟時点ではその答えはむしろノヌです。 CSSワヌキンググルヌプはこれに取り組んでいたす。



これにより、それらをたったく䜿甚しないようにするこずができたす。 ブラりザの新機胜の特定の実装が魅力的でない堎合は、代わりにスクリプトりィゞェットを匕き続き䜿甚できたす。



しかし、「スタむルをスタむルに適甚する必芁がありたすか」ずいう質問を自問したいのです。結局のずころ、倚くの人は、残念な開発者やデザむナヌが習慣を捚おお、圌らが発明したむンタヌフェヌスを探求するように匷制するずき、奜きではありたせん。圌らの意芋は暙準的な意芋よりも優れおいたす垞に事実ずは限りたせん。 なぜ誀解を招くナヌザヌのこの悪質な慣行を奚励するのですか



個人的には、HTML5 Webフォヌムの最も䟿利で矎しい゜リュヌションを求めお競合するブラりザを探しおいたす。 このようなブラりザ戊争をサポヌトしたいず思いたす。



さお、フォヌムは終わりたした。 次のパヌトでは、HTML5の新しい食欲をそそるセマンティクスを取り䞊げたす。



All Articles