私たちのWeb開発者の1人は、ドロップダウンリストのスタイルを設定するためのプレースホルダーとして次のhtmlを使用しています。
<a href="" class="arrow"></a>
これはアンカータグと見なされますか?
href値がないため、リンクチェッカーレポートの一部で壊れていると表示されます。
私たちのWeb開発者の1人は、ドロップダウンリストのスタイルを設定するためのプレースホルダーとして次のhtmlを使用しています。
<a href="" class="arrow"></a>
これはアンカータグと見なされますか?
href値がないため、リンクチェッカーレポートの一部で壊れていると表示されます。
回答:
この質問はすでに回答されていますが(tl; dr:はい、空のhref
値は有効です)、既存の回答のいずれも関連する仕様を参照していません。
空の文字列をURIにすることはできません。ただし、href
属性はURIを値として取るだけでなく、URI参照も受け取ります。空の文字列はURI参照の場合があります。
HTML 4.01 は RFC 2396を使用しており、セクション4.2で述べています。同じドキュメントの参照(太字の強調):
URIを含まないURI参照は、現在のドキュメントへの参照です。つまり、ドキュメント内の空のURI参照はそのドキュメントの先頭への参照として解釈され、フラグメント識別子のみを含む参照はそのドキュメントの識別されたフラグメントへの参照です。
RFC 2396は、によって廃止されたRFC 3986(現在はIETFのURI標準、)基本的に同じことを言います。
HTML5 は(スペースで囲まれている可能性のある有効なURL → 有効なURL)W3CのURL仕様を使用していますが、廃止されました。代わりにWHATWGのURL標準を使用する必要があります(最後のセクションを参照)。
HTML 5.1 は(スペースで囲まれた有効なURL → 有効なURL)WHATWGのURL標準(次のセクションを参照)を使用します。
WHATWGのHTMLの用途(潜在的にスペースで囲まれた有効なURL)の定義有効なURL文字列からWHATWGのURL標準それはそれができると言う、相対URL-とフラグメントの文字列以上でなければならない、相対URL文字列、これは、path-relative-scheme-less-URL stringにすることができます。これは、スキーム文字列の後にが続かないpath-relative-URL文字列であり:
、その定義は次のとおりです(太字強調):
パス相対URL文字列は、0以上のURLパスセグメント文字列で、U + 002F(/)で区切られている必要があり、U + 002F(/)で始まってはなりません。
有効です。
ただし、標準的な方法は、href="#"
またはを使用することhref="javascript:;"
です。
href="#"
、フォーカスがIEのページの一番上に移動するので、私href="javascript:;"
はより良い
他の人が言ったように、それは有効です。
ただし、各アプローチにはいくつかの欠点があります。
href="#"
ブラウザの履歴に追加のエントリを追加します(たとえば、戻るボタンを押すと面倒です)。
href=""
ページをリロードします
href="javascript:;"
問題がないようです(乱雑で無意味に見えること以外)-誰かが何か知っていますか?
特にonclickハンドラーを使用する場合、hrefを含めないことは完全に有効なHTMLである可能性がありますが、考慮すべき点がいくつかあります。tabindex値を設定しないと、キーボードにフォーカスできなくなります。さらに、IEは、tabindexが設定されているかどうかに関係なく、href属性のないアンカー要素はフォーカス不可と報告するため、Internet Explorerを使用してスクリーンリーダーソフトウェアにアクセスできなくなります。
したがって、以下は完全に有効である可能性があります。
<a class="arrow">Link content</a>
null効果のhref属性を明示的に追加する方がはるかに優れています
<a href="javascript:void(0);" class="arrow">Link content</a>
すべてのユーザーを完全にサポートするには、CSSでクラスを使用して画像をレンダリングする場合、何が起こっているかをテキストで説明するために、title属性などのテキストコンテンツも含める必要があります。
<a href="javascript:void(0);" class="arrow" title="Go to linked content">Link content</a>
href
するとアクセシビリティインターフェースが混乱することを説明していただきありがとうございます。
href
相対パスまたは絶対パス以外の値に設定すると、スクリーンリーダーの問題が発生することも追加します。この問題の回避策として、ハッシュ/ポンド記号を使用しないでください。スクリーンリーダーは(現在VoiceOverが行う)リンクをフラグメント識別子(現在のページのどこかにリンク)であると通知し、標準の観点からも有効です。参照w3.org/2001/tag/2011/01/HashInURI-20110115#NakedHash
現在のHTML5ドラフトでは、href属性を完全に省略することもできます。
a要素がhref属性を持たない場合、要素は、関連性があった場合にリンクが配置された可能性のある場所のプレースホルダーを表します。
あなたの質問に答えるには:はい、それは有効です。
<a>
、noの要素href
は慎重にスタイル設定されます。たとえば、「:hover」スタイルはChrome(およびその他の奇妙なもの)では機能しません
実際、空のままにすることができます(W3バリデーターは文句を言いません)。
アイデアをさらに一歩進めて、= ""を省略します。これの利点は、リンクが現在のページへのアンカーとして扱われないことです。
<a href>sth</a>
<a href></a>
→ 明示的な値がない属性href。この属性はIE7によって削除される場合があります。
W3のバリデーターは空のhref
属性について文句を言わないかもしれませんが、現在のHTML5草案では次のように指定しています。
および要素の
href
属性には、スペースで囲まれている可能性がある有効なURLの値が必要です。a
area
有効なURLはに準拠したURLであるURL標準。現在、URL標準は頭を混乱させるのに少し混乱していますが、URLが空の文字列である可能性があることをどこにも述べていません。
...つまり、空の文字列は有効なURLではありません。
ただし、HTML5ワーキングドラフトは次のように述べています。
注:および要素の
href
属性は必須ではありませんa
area
。これらの要素にhref
属性がない場合、ハイパーリンクは作成されません。
これは、href
属性を完全に省略できることを意味します。
<a class="arrow"></a>
あなたの意図は、これらのことであればhref
-less a
要素はまだキーボードinterractionを要求すべきである、あなたは割り当てるので、通常のルートを下る必要があるでしょうrole
し、tabindex
あなたの通常のクリック/ KeyDownイベントハンドラと一緒に:
<a class="arrow" role="button" tab-index="0"></a>
href
するとハイパーリンクではonclick
なくなり、キーボードユーザーが機能にアクセスできなくなります。