HTMLの隠された機能


110

最も広く使用されている言語(少なくともマークアップ言語として)であるHTMLは、正当な評価を得ていません。
何年も前から存在していることを考えると、FORM / INPUTコントロールのようなものは、新しいコントロールが追加されておらず、同じままです。

だから、少なくとも既存の機能から、あまり知られてないが非常に便利な機能を知っていますか?

もちろん、この質問は次のとおりです。

JavaScriptの
非表示機能CSSの
非表示機能C#の
非表示機能VB.NETの
非表示機能Javaの
非表示機能ASPの
非表示機能ASP.NETの
非表示機能Pythonの
非表示機能TextPadの
非表示機能Eclipseの非表示機能

HTML 5.0はワーキングドラフトであるため、機能については言及しないでください。

回答ごとに1つの機能を指定してください

回答:


244

プロトコルに依存しない絶対パスを使用する:

<img src="//domain.com/img/logo.png"/>

ブラウザがHTTPS経由のSSLでページを表示している場合は、httpsプロトコルでそのアセットをリクエストします。それ以外の場合は、HTTPでリクエストします。

これにより、IEの「このページには安全なアイテムと安全でないアイテムの両方が含まれています」というエラーメッセージが表示されなくなり、すべてのアセットリクエストが同じプロトコル内に保持されます。

警告:<link>または@importでスタイルシートを使用すると、IE7およびIE8 はファイルを2回ダウンロードします。ただし、他のすべての用途は問題ありません。


29
これはHTML機能ではなく、URL / URI機能です。
ガンボ

44
@ガンボ:確かに、これはURI機能ですが、ルールを曲げてここに含めるだけで十分だと思いました。そして、私はいつでもすぐにURI仕様の隠し機能を期待していません。:)
ポールアイリッシュ

2
1つのスラッシュは、プロトコル部分からではなく、ドメイン部分からの相対です
SztupY

2
IEは信じられないほどDUMBです!なぜf ***地獄はファイルを2度DLするのですか?

5
主な欠点が1つあります。ファイルがディスクに保存され、file:プロトコルを使用してアクセスされると、ブラウザはリソース(CDNなどの外部サーバー)を見つけることができません。
Marcel Korpel、2010

138

labelタグは、「for」属性を使用してフォーム要素とラベルを論理的にリンクします。ほとんどのブラウザは、これを関連フォーム要素をアクティブにするリンクに変えます。

<label for="fiscalYear">Fiscal Year</label>
<input name="fiscalYear" type="text" id="fiscalYear"/>

24
はい、驚くほど多くのサイトがこれを積極的に使用しています。私はこれを行うためにjsを使用しているサイトを見てきました...
Boris Callens '05 / 06/05

2
最近これを発見しました。
Arnis Lapsa、

4
cagdas、HTMLには隠された機能はありません。これは指定された標準です。
まぶたがない

54
答えに展開するには、1にも属性のラベルの付いた入力をラップし、省略することができます:<ラベル>会計年度<入力名=「fiscalYear」タイプ=「テキスト」/> </ label>は
eyelidlessness

32
それなしでチェックボックスとラジオボタンを使用することは犯罪です。
Kornel

136

(IE、Firefox、Safari)のcontentEditableプロパティ

<table>
    <tr>
      <td><div contenteditable="true">This text can be edited<div></td>
      <td><div contenteditable="true">This text can be edited<div></td>
    </tr>
</table>

これでセルが編集可能になります!信じられない場合は試してみてください。


7
この質問には、HTML5で導入されていない機能が必要です
Quentin

15
David Dorwardさん、contentEditableはMSによってIE 5.5で導入されたので、HTML5で導入されたと言うのは厳密には公平ではありませんが、HTML5まで標準化されていません。Tyson&Steve、contentEditableはバージョン2.0でSafariに導入されましたが、多くの重要なフォーマットメソッドは3.xまで追加されませんでした。Victor H Valle、あなたのDoctypeに依存します。HTML 4は、折りたたまれたときに「true」に展開する必要があります。
まぶたがない

2
try itリンクは適切な例につながりません
Gordon Gustafson

4
@Binoj-絶対にありません。「contenteditable属性は、キーワードが空の文字列、true、falseである列挙型属性です」-w3.org/TR/html5/editing.html
Quentin

2
さらに、ブックマークレットとして次のコードを追加して、現在開いているWebページを編集できるようにします。javascript:document.body.contentEditable = 'true'; document.designMode = 'on'; void(0);
Amro、

102

私はoptgroupタグだと思いますはあまり使われない機能の1つ。私が話すほとんどの人は、それが存在することに気づかない傾向があります。

例:

<select>
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>

残念ながら、メニュー階層のブラウザー実装には、まだ多くの要望があります。optgroupは、関連するユースケースがほとんどなく、あまり使用されていないためと思われます。
まぶたがない

1
すべてのブラウザで1つのレベルをサポートする必要があります。私が別の場所にいるWebフォーラムでは、いくつかの画面でそれを使用して、フォーラムリストをメインページで使用されているのと同じセクションに分割しています。
staticsan

@staticsan。いくつかのアイテムを細かく分類するのに便利だと思います。
RichardOD 2009

5
@eyelidlessness:要素をインデントしたり、のような「ヘッダー」テキストを使用したりするドロップダウンが常に表示されます---category---
DisgruntledGoat

4
これは私が知らなかったすてきな機能です!
Chrisb、2009

100

私のお気に入りのビットはベースタグです。これは、ルーティングやURL書き換えを使用したい場合のライフセーバーです...

次の場所にいるとします。

www.anypage.com/folder/subfolder/

以下は、このページからのリンクのコードと結果です。

通常のアンカー:

<a href="test.html">Click here</a>

につながる

www.anypage.com/folder/subfolder/test.html

ベースタグを追加すると

<base href="http://www.anypage.com/" />
<a href="test.html">Click here</a>

アンカーは次につながる:

www.anypage.com/test.html

48
/images/image.pngを先頭にスラッシュを付けて使用することもできます。:-)
molf 2009年

46
ベースタグは核となるオプションです。これは#defineと同等です。追跡しない場合は、将来の開発者に明確にし、サイトアーキテクチャの非常に低レベルな部分にして、イライラさせる可能性があります。明らかでないバグ。私はこれを必要としなかったので、注意して使用してください。
annakata

2
はい、CSSファイルをページに動的にロードしようとすると、ベースタグがJavaScriptに干渉することも確認しました。また、IE6のバグでは、タグ(</ base>)を明示的に閉じる必要がありますが、これは無効です。条件付きコメントはそれを助けることができます。
avdgaag

4
ベースURLは、相対URLパスだけでなく、すべての相対URLに適用されることに注意してください。したがって、参照#topはルートインデックスドキュメントの「トップ」と同じドキュメントの「トップ」に解決されます。
ガンボ

17
「ソースを表示」し、ページのHTMLをダウンロードして操作する必要がある場合に、これは非常に便利です。ソースがダウンロードされたら、適切なhref属性を持つBASE要素を追加できます。この方法では、ソースHTMLのみをダウンロードした後でローカルで作業できます。すべてのJavaScript、CSS、および画像をダウンロードする必要はありません。
アンディフォード

99
<img onerror="{javascript}" />

onerror 小さな赤い十字(IE)の画像が表示される直前に発生するJavaScriptイベントです。

これを使用して、壊れた画像を有効な代替コンテンツで置き換えるスクリプトを作成できます。これにより、ユーザーは赤十字の問題に対処する必要がなくなります。

一見すると、これは完全に役に立たないと見なすことができます。なぜなら、画像がそもそも利用可能であったかどうか、以前にあなたは知らないのですか?しかし、あなたが考えるならば、このことについて完璧な有効なアプリケーションがあります。たとえば、自分が管理していないサードパーティのリソースから画像を提供しているとします。SOの私たちのgravatarのように... http://www.gravatar.com/から提供されます。これは、stackoverflowチームがまったく制御しないリソースです-信頼性はありますが。http://www.gravatar.com/がダウンした場合、stackoverflowはを使用してこれを回避できonerrorます。


ああ...これがそうだと思うなら、本当に必要なときに、もっと早く知っておくべきです。:/
Arnis Lapsa

明確にするために、onerrorはJavaScriptイベント(onclickと同様)であり、画像の読み込みに失敗したときに何かを実行できます。
ジェヒヤ、

1
ダニエル・シルベイラ、これが実際に壊れた(例えば404)画像の場合にエラーコードを実行することを明確にしますか?いずれにしても、これはDOM機能であり、HTML機能自体ではありません。
まぶたがない

2
私はnumptyにこれを使用させて、存在しないイメージを指し示し、再帰的な誰か???
ファラバス2009

96

<kbd>キーボード入力をマークアップするための要素

Ctrl+ Alt+Del


<kbd>には、別のフォント形式以外に特別なものはありますか?ここにない場合、他のフォーマットタグのリストはありますか?w3schools.com/tags/tag_phrase_elements.asp
お友達のケン

特にありませんが、よく知られていないと思います
Russ Cam

3
デフォルトでは何もありませんが、SOのようにCSSで要素をマークアップする方がきれいです。
Agent_9191 2009年

1
それが存在することに気づかなかった、それは楽しいです。
Kzqai

85
<blink>

サイトで重要なものに使用する必要があります。最も重要なサイトは、すべてのコンテンツを瞬時にラップします。

<marquee>

電子書籍などに最適な、リアルなスクロール効果を作成します。

編集:簡単なやつ、これは単なるユーモアの試みでした


62
おそらく、質問は、リストは、私たちがしたいことを特徴としないことを指定しているべきままに隠さ。
ベンブランク

12
... <blink>を、div表示コードの疑似端末スタイリングの一部として使用しました(:before {content: "drthomas @ house:〜$";}:after {content: "_"; text -decoration:blink;} ...素晴らしかったです。おそらく私は助けを求める必要があります。=]
Davidはモニカを

2
<marquee> <blink>これまでで最も面倒なHTMLタグ!!! </ blink> </ marquee>これらは非表示ではなく、理由のために使用されていないだけです。
あなたの友達ケン

2
私はちょうどそのクールだから、私はマーキーと点滅で私のページ全体を包む
Sphvn

3
お願いします。<blink>の唯一の合法的な使用法は次のとおりです。シュレーディンガーの猫は死んで<blink>いない</ blink>。(これはxkcdにあると思っていましたが、現時点では見つかりません。)
クリストファー・クロイツィヒ

84

あまりよく知られていませんが、画像の読み込み中にlowsrc表示される画像を指定できます。lowsrcsrc

<img lowsrc="monkey_preview.png" src="monkey.png" />

これは、インターレース画像を好まない人に適したオプションです。

ちょっとした豆知識:ある時点では、このプロパティはあいまいで、2000年頃のHotmailの悪用に使用されていました。


これは知りませんでした。「読み込み」アニメーションに使用できますか?
Boris Callens

2
Operaの「エクスプロイトHotmail」リンクから詐欺警告を受けています。:O
jrista

2
これはセキュリティWebサイトであり、安全です。
ジョーイロバート

27
しかし、この属性は独自のものです。msdn.microsoft.com/library/ms534138(VS.85).aspx
Gumbo

17
この属性はHTML4から非推奨になりました-プロダクションWebサイトでは使用しないでください。
ベン・ハル

67

DELそして、INSマークに削除された内容を挿入します:

HTML <del>sucks</del> <ins>rocks</ins>!

10
確かに十分に使用されていません。
まぶたがない

2
@eyelidlessness:削除/挿入されたテキストにマークを付けることがそれほど便利ではない状況が単にあります。
DisgruntledGoat

2
StackOverflowが使用されたこと<ins><del>、[リビジョン]ページでしばらく前に使用したことを誓うことができましたが、現在はとを使用<span class="diff-add">してい<span class="diff-delete">ます。:(
システムの一時停止

1
@DisgruntledGoatウィキの改訂履歴?そのための多くのユースケース
HorusKol

3
@ホルス:確かにあなたは用途を見つけることができますが、物事の壮大な計画では、それはまだ大量の状況ではありません。
DisgruntledGoat

58

ボタンタグは新しくinput submitタグと多くの人々はまだそれに慣れていません。ボタンのテキストは、たとえば、buttonタグを使用してスタイルを設定できます。

<button>
    <b>Click</b><br />
    Me!
</button>

2行のボタンをレンダリングします。最初の行は「クリック」を太字で示し、2番目の行は「私!」を示します。こちらでお試しください。


15
IE <8でそれが壊れているのは残念です。問題を回避することは可能ですが、それは痛みを伴う可能性があり、Webサーバーとサーバー側のプログラミング環境の間で実行されているセキュリティ保護にぶつかることがあります。
クエンティン

6
しかし、IE <8は、その値ではなく要素のコンテンツを送信します。一部のバージョンでは、(クリックされなかった場合でも)常に正常なコントロールとして扱われると思います。
クエンティン

4
<button contenteditable>にすると、ボタンのテキストも変更できます。有効な使用法を見つけることができる人を指します。:)
ギャビン

4
「入力」タイプの送信が行われる理由を理解できませんでした。何も入力せず、他のフィールドで入力した内容を送信するだけです。
DisgruntledGoat

3
@DisgruntledGoat:名前と値のペアが実際に送信されます。フォームに複数のボタン(編集、削除、移動など)があり、押されたボタンを区別したい場合に便利です。残念ながら、これはbuttonIE <8では機能しません。驚くべきことに、すべてのbutton要素の名前と値のペアを送信します。
BalusC 2009

56

印刷用のCSSを指定します

<link type="text/css" rel="stylesheet" href="screen.css" media="screen" />
<link type="text/css" rel="stylesheet" href="print.css"  media="print" />

1
数週間前に発見
ダニエルモウラ

41
本当に隠しイモではありません。
ドミトリファルコフ2009

これは一般的な使用法です。
UpTheCreek 2010年

これまでに対処したことがない場合は、これまでに制作Webサイトを作成したことがないことを願っています...
Kzqai

これはどのように隠されていると見なすことができますか?
Marin

54

<dl> <dt><dd>アイテムはしばしば忘れられ、彼らは、定義リスト、定義用語と定義のために立っています。

順不同リスト(<ul>)と同様に機能しますが、単一のエントリではなく、キー/値リストに似ています。

<dl>
  <dt>What</dt><dd>An Example</dd>
  <dt>Why</dt><dd>Examples are good</dd>
</dl>

さらに、dl / dt / ddセマンティクスは、同様のリストに適しています(たとえば、構造はダイアログで推奨されています)。
まぶたがない

2
デフォルトの表示はあまり良くありませんが、CSSを使用して要素をさまざまな方法でスタイル設定できることを人々は忘れています。
DisgruntledGoat

18
しばしば忘れられるより興味深いのは、形式がキー/値/値/値/値/キー/値であるということです
Quentin

1
@D_N、私は、意見の相違があるところは、提案された使用法は、それから分離して矛盾するのではなく、定義と意味論の一部であると考えることだと思います。
まぶたのない状態

1
@D_Nと@eyelidlessness -意味的に会話をマークアップのブルースローソンノートチェックアウト...プラス陪審は、HTML5のダイアログ要素のうち、まだです... brucelawson.co.uk/2006/...
フェントン

52

完全に隠されているわけではありませんが(これはIEのせいです)、私の好みに合わせてthead、tbody、tfootについて知る人が足りません。そして、マークアップでtfootがtbodyのに表示されることになっていることを知っている人はどれくらいいますか?


1
ボリス・カレン、そう、tad、tbody、tfootのいずれも存在しない場合、tbodyは暗示されます。
まぶたがない

2
IE5がTBODYを適切に実装していれば、より多くの人々がそれを使用するでしょう。これが数年前の主な問題でした。MozillaとOperaはスクロールTBODYをサポートしました。残念ながら、IE5はそうしませんでした。
staticsan

9
彼らはそれが入れなければならないので、印刷に便利ですtheadし、tfoot各ページの上部と下部に。thead長い長いテーブルがある場合、ブラウザで繰り返すためのメカニズムがないのは残念です。
DisgruntledGoat

1
私はtfootがtbodyより上にあることを知っていました、そしてそれはかなり愚かだと思います。私は自分のtfootを下に配置し、妥当な場所にバリデーターエラーが発生し、tfootをtbodyの上に移動しました(混乱していますが、常に準拠しています)。テーブルをハイライト表示しようとすると、ブラウザは(少なくともFF)、足をボディの前にハイライト表示します。その後!!!テキストエディタにコピーすると、視覚的に本文の上に表示されます。完全に任意のルール。
アンソニー

3
@Anthony:接続が遅い場合に意味があります。つまり、テーブルのコンテンツの読み込み中にすべてのヘッダーとフッターを表示できます。
me_and 2009

50

wbrまたは単語ブレークタグ。Quirksmodeから:

(ワードブレーク)は、「必要に応じて、ブラウザはここに改行を挿入する場合があります。」ブラウザーは、改行が必要であるとは考えないため、何も起こりません。

<div class="name">getElements<wbr>ByTagName()</div>

ブラウザに改行を追加するオプションを提供します。これは、テーブルに十分なスペースがある場合、非常に大きな解像度では必要ありません。ただし、解像度が小さい場合、このように戦略的に配置された改行により、テーブルがウィンドウより大きくなり、水平スクロールバーが発生しなくなります。

&shy;同じページで言及されているHTMLエンティティもあります。これは同じですwbrが、区切りが挿入されると、区切り-を示すハイフン()が追加されます。印刷でどのように行われるのかというようなものです。

例:

TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText


2
このブラウザには貧弱なブラウザサポートがあるので注意してください
ChristopheEbléJun

7
「IE8 as IE8」はそれをサポートしておらず、Safari 3.0 for windowsではバグがあります。それ以外はかなり良いです。リンクの互換性チャートを参照してください。
aleemb 2009年

うーんサイトポイント参照は、このタグを非推奨で役に立たないものとしてマークしました、誰が正しいですか?reference.sitepoint.com/html/wbr
ChristopheEblé

HTML仕様の一部としては推奨されない可能性がありますが、ブラウザでは引き続き機能します。疑わしいときはいつでも、QuirksModeの判定(現在Googleが提供する互換性テーブル)を使用してください。
aleemb 2009年

これは次のCSS標準に含めるのに非常に役立つものだと思われます!
ジェームズ

43

あまり使用されていない機能は、ページに表示されるコンテンツを提供するほぼすべての要素が 'title'属性を持つことができるという事実です。

このような属性を追加すると、要素の上にマウスを置いたときに「ツールチップ」が表示され、ページが混雑しないように、必須ではないが便利な情報を提供できます。 。(または、既に混雑しているページに情報を追加する方法になる場合があります)


はい、「title」属性は非常に便利です。特に、クリックすることを意図した要素の場合はそうです。
スティーブハリソン

6
表示されるツールチップはブラウザ固有です。すべてのブラウザがタイトル属性を同じように表示するわけではありません。しかし、それは私が確かに使用する素晴らしい機能です。
トラビス

8
title属性は便利ですが、適切に使用された場合のみです。ほとんどのブラウザは、ツールチップが消える前に数秒間しかレンダリングしません。タイトル属性を3行または4行のテキストで埋める必要があるとデザイナーが感じたときは、マウスを上に移動し、もう一度マウスをオンにして残りを読む必要があると思うと、私はそれを嫌います。
priestc 2009

これをjQueryと組み合わせて使用​​することは、すばらしいことです。
Levi Morrison

Levi-いくつかの例を挙げられますか?
belugabob 2011

38

1つのタグに複数のhtml / cssクラスを適用する。同じ投稿はこちら

<p class="Foo Bar BlackBg"> Foo, Bar and BlackBg are css classes</p>

22
これらはHTMLクラスであり、CSSクラスではありません。CSSにはクラスがありません(クラスセレクターがあります)。HTMLクラスは、CSS以外のものにも役立ちます。
クエンティン

36
うわー!私は、これが「隠された」機能であると人々が感じるという事実を克服することはできません。これを支持した人たちはおそらくDTDの拡張の意味を理解することすらできないので、「本当に隠された」機能を投稿するのは馬鹿げていると思いますか。
aleemb 2009年

5
d03boy、p.foo、p.varはp.foo.barと同じではありません。前者はクラス「foo」または「var」のいずれかを持つ段落を選択し、後者は両方のクラスを持つ段落を選択します。
まぶたがない

5
HTMLクラスに関することは良い点です。それは私をポイントに導くので、htmlはcssを認識してはならないということです。htmlを作成し、それなしでデザインを実装できるデザイナーに渡すことができるはずです。 htmlを変更する必要があります(まだそうではありません;))。これは、名前付けとクラスの使用方法に帰着します.. CSSプロパティをターゲットとするクラスを作成しないでください。クラスを使用して、要素が何であるかを識別します'。
meandmycode

1
技術的には、「Foo Bar BlackBg」は単一のクラスであり、p.fooはp [class〜= foo]の構文糖衣です(specを参照)。ただし、複数のクラスがあると考える方が簡単です。
Tgr

34

私たちは皆、DTDまたはドキュメントタイプ宣言(ページをW3Cバリデーターで失敗させるもの)について知っています。ただし、DTDを拡張することは可能です。カスタム要素の属性リストを宣言することによりです。

たとえば、タグに追加されているため、W3Cバリデーターはこのページで失敗します。ただし、次のようにすることで成功させることができます。behavior="mouseover"<p>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
[
<!ATTLIST p behavior CDATA #IMPLIED>
]>

QuirksModeのカスタムDTDの詳細については、を参照してください。


10
もちろん、これにより、「XHTML 1.0 Transitional」ではなく「有効:カスタムマークアップ言語」になります
Quentin

3
+1。これが-1だった理由がわかりません。とにかく、ブラウザのサポートはほとんどないことに注意してください。
まぶたがない

Operaはこれをサポートしています。
リッチブラッドショー

2
@eyelidlessness XHTMLでのみ機能します。text / HTMLとして送信されたmake-believe XHTMLでは機能しません。
Kornel

2
Eesh、これのファンではありません。私にとって、HTMLの価値は、地球上のすべての人がそれが何を意味するかを(多かれ少なかれ)知っていることです。なぜなら、私たちはすべて同じタグと属性を使用しているからです。class属性が十分な拡張性を備えていない理由がわかりません。
ポールD.ウェイト

28

base 64でエンコードされた文字列を、画像、JavaScript、iframe、リンクのsource / href属性として割り当てることができます

例えば

<img alt="Embedded Image" width="297" height="246" 
  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA..." />

div.image {
  width:297px;
  height:246px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...);
}

<image>
  <title>An Image</title>
  <link>http://www.your.domain</link>
  <url>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASkA...</url>
</image>

<link rel="stylesheet" type="text/css"
  href="data:text/css;base64,LyogKioqKiogVGVtcGxhdGUgKioq..." />

<script type="text/javascript"
  href="data:text/javascript;base64,dmFyIHNjT2JqMSA9IG5ldyBzY3Jv..."></script>

参考文献

HTMLマークアップを使用して画像を作成するにはどうすればよいですか?

バイナリファイルからBase64エンコーダー/トランスレーター


4
残念ながら、IE <8はこれをサポートしていません。ただし、これらのブラウザーでは、代わりにMHTMLを使用できます。phpied.com
Mathias Bynens

26

最近、フィールドセットとラベルタグについて知りました。上記のように、非表示ではありませんが、フォームに役立ちます。

<fieldset>説明

例:

<form>
  <fieldset>
    <legend>Personalia:</legend>
    Name: <input type="text" size="30" /><br />
    Email: <input type="text" size="30" /><br />
    Date of birth: <input type="text" size="10" />
  </fieldset>
</form>

これを使用したサンプルを提供してください。
Binoj Antony


aspnet mvcサンプルページからフィールドセットを発見しました。^^
Arnis Lapsa、

2
これについては知りませんでした。Heres W3c仕様:w3.org/TR/html401/interact/forms.html#h-17.10
MitMaro

フィールドセットと伝説は素晴らしいです。フォームをマークアップする本当に良い方法です。
Neil Aitken

25

object代わりにタグを使用iframeして、ページに別のドキュメントを含めることができます。

<object data="data/test.html" type="text/html" width="300" height="200">
  alt : <a href="data/test.html">test.html</a>
</object>

57
これは、サポートが不十分で機能が少ないことを除いて、iframeとほぼ同じように機能します。
クエンティン

iframeは非推奨になりました。うまくいけば、すぐにサポートが改善されるでしょう
Gordon Gustafson

12
iframeはHTML 5では非推奨ではありません
Zach

埋め込みページからのXSS攻撃を防ぎますか?
匿名の臆病者、

1
iframeと同様にSOPを使用していると思います。
Zach、

25

<optgroup>セグメント化された<select>リストを作成するときに、見落としがちな素晴らしいものです。

<select>
  <optgroup label="North America">
    <option value='us'>United States</option>
    <option value='ca'>Canada</option>
  </optgroup>
  <optgroup label="Europe">
    <option value='fr'>France</option>
    <option value='ir'>Ireland</option>
  </optgroup>
</select>

の代わりに使用する必要があります

<select>
  <option value=''>----North America----</option>
  <option value='us'>United States</option>
  <option value='ca'>Canada</option>
  <option value=''>----Europe----</option>
  <option value='fr'>France</option>
  <option value='ir'>Ireland</option>
</select>

25

また、ほとんどの場合、名前と値のペアを指定するだけで押されたフォームボタンを区別できるという事実を認識していません。例えば

<form action="process" method="post">
     ...
     <input type="submit" name="edit" value="Edit">
     <input type="submit" name="delete" value="Delete">
     <input type="submit" name="move_up" value="Move up">
     <input type="submit" name="move_up" value="Move down">
</form>

サーバー側では、ボタン名に関連付けられた要求パラメーターの存在を確認するだけで、押された実際のボタンを取得できます。そうでない場合null、ボタンが押されました。

私が見てきた多く不必要を JSハック/回避策を見ました。たとえば、フォームのアクションを変更したり、押されたボタンに応じて非表示の入力値を事前に変更したりします。それは単に驚くべきことです。

また、テーブルの行のように、複数のチェックボックスのうちのチェックされたものを収集するために、ほぼ同じくらい多くのJSハック/回避策を見てきました。JSは、テーブルの行を選択/チェックするたびに、非表示の入力要素のカンマ区切りの値に行インデックスを追加し、サーバー側でさらに分割/解析されます。これは、複数の入力要素を指定できることに気づいていないためです。同じ名前で異なる値を指定できること、およびサーバー側で配列としてそれらに引き続きアクセスできることを知らないためです。例えば

<tr><td><input type="checkbox" name="rowid" value="1"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="2"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="3"></td><td> ... </td></tr>
...

気づかないと、各チェックボックスに異なる名前が付けられ、値属性全体が省略されます。一部のJSハック/回避策のない状況では、不必要に圧倒的な魔法もいくつか見ました、チェックされた項目を区別するために、サーバー側のコードにます。


1
こんにちは..これは明らかにHTMLのもう1つの隠し機能です:/;)
BalusC '14年

1
フォームに複数の送信ボタンがあり、ユーザーが1つをクリックすると、特定のバージョンのInternet Explorerは、すべてのボタンがクリックされたことをサーバーに明るく通知します。素晴らしい。
2010

1
@detly::)の<button type="submit">代わりに使用する場合のみ<input type="submit">
BalusC

1
... buuuuut IE6にも問題はありません<input type="submit">か?(この問題の私の記憶はかすんでいる-私は雇用者が内部WebアプリのIEの互換性について心配する必要がないと長い間確信していたので、それはもはや私の問題ではありません。 )
確実に

2
それは国際化にあまり適していません。
zneak

22

コルグループタグ

<table width="100%">
    <colgroup>
        <col style="width:40%;" />
        <col style="width:60%;" />
    </colgroup>
    <thead>
        <tr>
            <td>Column 1<!--This column will have 40% width--></td>
            <td>Column 2<!--This column ill have 60% width--></td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Cell 1</td>
            <td>Cell 2</td>
        </tr>
    </tbody>
</table>

15
私の経験では、コルグループのサポートはせいぜい不安定です。
まぶたがない

驚くほど似ているのはWPFグリッド
Binoj Antony、

18

for属性<label>タグ指定されていない暗黙的に最初の子として設定されます<input>、すなわち

<label>Alias: <input name="alias" id="alias"></label>

に相当

<label for="alias">Alias:</label> <input name="alias" id="alias">

4
しかし、これはfor属性よりもブラウザのサポートが少ない
Quentin

4
@David —それを裏付けるドキュメントはありますか?ブラウザがこの使用法をサポートしていないのを見たことがないと思います。私はIE6 / 7、FF2 / 3、Safari 3、およびChrome 1/2で個人的にテストしました。私はOperaで自分自身をテストしていませんが、それがうまくいかなかったら非常に驚きます。この動作は、元のHTML 4.0仕様、最初より11年以上前に出版さの一部です:w3.org/TR/1998/REC-html40-19980424/interact/forms.html#adef-for
ベン・ブランク

また、ラベルの内側に入力を置くことは無効であり、DOHはどちらの例でも入力タグを閉じていません。
アンソニー

5
両方の点で間違っています。これは有効な方法であり、終了タグは入力要素を禁止されています。
moo

15

リンクとしてのボタン、JavaScriptなし

フォームアクションにはあらゆる種類のファイルを配置でき、リンクとして機能するボタンがあります。onclickイベントなどを使用する必要はありません。フォームに「ターゲット」を貼り付けることで、新しいウィンドウでファイルを開くこともできます。私はその技術をアプリケーションにあまり見かけませんでした。

これを交換

<a href="myfile.pdf" target="_blank">Download file</a>

これとともに:

<form method="get" action="myfile.pdf" target="_blank">
    <input type="submit" value="Download file">
</form>

27
ボタンには「ファイルに名前を付けて保存」オプションがありません。これは、Adobe Acrobatがブラウザーを引き継ぐことを好まないユーザーが必要とする場合があります。
Kornel

PDFファイルにアクセスする場合、デフォルトのブラウザー動作で動作します。HTMLファイル、Wordファイル、ZIPファイルなど、必要に応じて何でもかまいません。
Wadih M.

アンカータグにはどのような状況でonclickイベントが必要ですか?そして、なぜ3行のhtmlが1行よりも優れているのでしょうか?リンクの代わりにボタンを持つことができるという考えですか、それはボタンのようにいいですか?私はこれについて不機嫌そうに聞こえますが、ユーザーが要求するとファイルが動的に作成されるため、リンクではなくボタンを使用するページが実際にあります。私はそのルートをたどることができたかもしれませんが、スクリプトがファイルに与えるファイル名の代わりにファイル生成スクリプトを名前として持つファイル名を危険にさらしたくありませんでした。
アンソニー

1
<a>タグをボタンのようにスタイル設定しないのはなぜですか?これはあなたのマークアップにたくさんのジャンクのようです。
UpTheCreek

2
@UpTheCreek一部のWebアプリケーションはOSと同じに見たいと思っています。たとえば、ユーザーがWindowsを使用している場合は見苦しいボタン、ユーザーがMac OS Xを使用している場合は美しいボタン

13

X秒でページを更新する最も簡単な方法- メタ更新

<meta http-equiv="refresh" content="600">

contentの値は、ページを更新するまでの秒数を示します。
[編集]

<meta http-equiv="refresh" content="0; url=foobar.com/index.html">

単純なリダイレクトを行うには!
(@rlbに感謝)


13
もちろん、どの要素を更新する必要があるかを調べ、AJAXを介して更新すると、ユーザーエクスペリエンスが大幅に向上します...
Steve Harrison

11
METAリフレッシュは、ユーザーフォームのアクティビティの王もいるページでは、ユーザーのフォームの入力を中断してすべての作業を破棄する可能性があるため、実際には効果がありません。この種の更新が最適な場合はめったにありません。これは通常の簡単な方法です。
Robert Koritnik 2009年

11
/ meは、そのように更新されるページが嫌いです...禁止する必要があります= /
Svish

3
これは、セッションがタイムアウトして削除されたことをユーザーに通知するために、セッションタイムアウトより少し小さい値に設定した場合にも役立ちます。
fforw 2009年

1
短いタイムアウトはボタンを壊します。
Kornel

12

<html><head>および<body>タグはオプションです。それらを省略すると、パーサーによって適切な場所に黙って挿入されます。それをです完全に有効な暗黙のと同じように(HTMLでそうします<tbody>)。

理論的には、HTMLはSGMLアプリケーションです。これはおそらく最も短い有効な HTML 4ドキュメントです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<title//<p/

上記はW3C Validator以外では機能しません。ただし、有効な最短のHTML5 text/htmlドキュメントはどこでも機能します。

<!DOCTYPE html><title></title>

4
宣伝する内容には注意が必要です。上記のコードは、w3cバリデーターで4つの警告を伴う検証に合格しますが、DocTypeはHTML 4.0です。HTML 4がSGMLの子孫であり、したがってこのゆるい検証標準を維持しているのはかなり見事ですが、そのDTDをXHTML 1.0 STRICTに変更すると、文字数にほぼ等しい15のエラーが発生します。XHTMLが開発されたのは、HTMLが非常に遅延している(したがって安全ではない)ため、これを利用したくないからです。
アンソニー

3
HTML / SGMLドキュメントのDOCTYPEをXHTML / XMLに変更すると、無意味な混合が発生します。それは非常に明白であり、なぜそれを指摘しているのかわかりません。
Kornel

3
この例は、技術的には有効なHTML 4である可能性がありますが、ブラウザはその省略されたSGML構文をサポートしていません。以下は、実際にサポートしていないどのブラウザで、最短有効なHTML 5文書である:<!DOCTYPE html><title></title>
ブライアン・キャンベル

検証の観点からだけでなく、head/ を省略することの互換性はどのように考えられますbodyか?
kibibu

@kibibu:ブラウザはこれで問題はありません。古いバージョンのOpera <head>はDOMで省略されることがありましたが、ヘッドコンテンツはDOMであり、とにかく機能しました。私が見つけた最大の問題は、OpenIDクライアント<head>が明示的に存在する必要があることです。
Kornel

11

lang属性はあまり知られていませんが、非常に便利です。この属性は、ドキュメント全体または単一の要素でコンテンツの言語を識別するために使用されます。言語コードは、ISO 2文字の言語コード(つまり、英語の場合は「en」、フランス語の場合は「fr」)で指定されます。

引用符などの表示を調整できるブラウザに便利です。スクリーンリーダーも、lang 属性と検索エンジンの恩恵を受けます。

Sitepointにはlang属性について素晴らしい説明があります。

langDOMの下位レベルの別の属性でオーバーライドされない限り、ドキュメント全体で英語になる言語を指定します。

<html lang="en">

次の段落の言語をスウェーデン語に指定します。

<p lang="sv">Ät din morgongröt och bli stor och stark!</p>

10

"!DOCTYPE"宣言。隠された機能だとは思わないでください。しかし、あまり知られていませんが、非常に便利です。

例えば

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">

10
そして、「最新のマークアップ言語では必須であり、1つがないと、ドキュメントを確実に検証することは不可能です」... validator.w3.org/docs/help.html#faq-doctype
Svish

これはもう「よく知られていない」とは思わない。IE 6とIE 7の間の時間で、doctypeの使用は約1%から> 50%になりました。
まぶたがない

@eyelidlessnessほとんどのIDEにはこのタグが含まれているため、その使用が増加しました。このタグはよく知られていないと思います。
ダニエル・モウラ

6
厳密なdoctypeを使用すると、ブラウザの不整合の95%が修正されます。
DisgruntledGoat

3
標準の一部であり、99%の開発者が使用しているものは、「隠された機能」のようには聞こえません。
WhyNotHugo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.