HTML5とフレームボーダー


82

HTML5ドキュメントにiframeがあります。検証すると、の属性iframe frameBorderが廃止され、代わりにCSSを使用するというエラーが表示されます。

frameBorder="0"IEで境界線を取り除く方法を理解する唯一の方法だったので、ここにこの属性border:none;があります。運が悪かったので、CSSで試しました。これを修正するための準拠した方法はありますか?

ありがとう。

回答:


58

HTML 5は、frameborder、scrolling、marginwidth、marginheight(HTML 4.01でサポートされていた)などの属性をサポートしていません。代わりに、HTML5仕様ではシームレス属性が導入されています。シームレス属性を使用すると、インラインフレームを、含まれているドキュメントの一部としてレンダリングされているように見せることができます。たとえば、境界線とスクロールバーは表示されません。

MDNによると

frameborder HTML5以降廃止

1(デフォルト)は、このフレームの周囲に境界線を描画します。この値0はこのフレームの周囲の境界線を削除しますが、代わりにCSSプロパティborderを使用して境界線を制御する必要があります。

上記の引用が言うように、CSSで境界線を削除する必要があります。
インライン(style="border: none;")またはスタイルシート(iframe { border: none; })のいずれか。

そうは言っても、を使用しないiframeプロバイダーは1つもないようframeborder="0"です。YouTubeでさえ、この属性を引き続き使用し、frameborderがサポートされなくなった場合にiframeを下位互換性のあるものにするためのstyle属性も提供していません。属性はすぐにはどこにも行かないと言っても過言ではありません。これにより、3つのオプションが残ります。

  1. frameborderそれが機能することを確認するために、使用し続けてください(今のところ)
  2. CSSを使用して、「正しい」ことを行います
  3. 両方を使う。これは非互換性の問題を解決しませんが(オプション1と同様)、これまでおよび今後のすべてのブラウザーで機能します。

この10年前の答えの以前の状態について:

このseamless属性は非常に短い間サポートされているため(または一部のブラウザーではまったくサポートされていないため)、MDNはこの属性を非推奨の機能としてリストしていません。それを使用しないでください、そして以下のコメントによって混乱しないでください。


31
では、CSSでframeBorder = 0を生成する方法はありますか?
JD Isaacks 2010

1
それは本当に迷惑です。私は最新のChromeを使用していますが、機能しません。frameborder = "0"はそうですが。
RGBK 2010年

1
これを再考すると、シームレスはchromeffとsafariで機能します。次のようにiframeに配置します:<iframeシームレス
RGBK 2011年

8
あなたはを使用することになっていますがborder-width: 0px;、これはクロスブラウザとの互換性がないのではないかと思いiframesます。 seamlessまだすべてのブラウザでサポートされているわけではありません!これは、受け入れる必要がある数少ないHTML5の問題の1つです。frameborder="0"検証で使用して地獄!
Solomon Closson 2013

2
seamlessHTML5仕様から削除されたため、サポートされることはありません。@ForTheWatchの答えは今や最高です。
rvighne 2016

48

ここにある他の投稿によると、最善の解決策は、のCSSエントリを使用することです。

style="border:0;"

6
私は彼らがお勧めすると思います: border-width: 0pxTBH。 border: none;動作しないでしょう。
ソロモンクロッソン2013

5
@ cnotethegr8-IEおよびOpera(現在のバージョン)では機能せず、Chrome、Safari、Firefoxではテストされていません。私はくだらないブラウザをテストします。なぜなら、それがそれらで動作する場合、他のブラウザで動作することはほぼ確実だからです。
Solomon Closson 2013

2
@SolomonClossonI test for the crappy browsers, because if it works in them, than it is almost sure to work in the others.ナイーブな私の神。アプリがブラウザで動作することを確認したい場合は、そのブラウザでプレーンかつシンプルにテストする必要があります。保証はなく、癖だけです。
Jonathan Dumaine 2015

1
簡単に言うと、0pxの単位は冗長です。私はマージンを好む:0; または境界線:0; CSSに関しては0px == 0em == 0%== 0だからです。
csharpforevermore 2015

1
今ではseamlessこれが唯一の正解であるスペックから削除されました
rvighne

17

このframeborder属性はIEにのみ必要なので、バリデーターを回避する別の方法があります。これは、JavascriptやDOM操作を必要としない軽量の方法です。

<!--[if IE]>
   <iframe src="source" frameborder="0">?</iframe>
<![endif]-->
<!--[if !IE]>-->
   <iframe src="source" style="border:none">?</iframe>
<!-- <![endif]-->

3
これは、尋ねられた質問に対する最良の答えです。ただし、HTML5への準拠の目標(進行中であり、予告なしに変更される可能性があります)は、特にそのような準拠以外の目的を果たさず、コードをより複雑にするトリックを使用する場合は役に立ちません。frameBorder="0"インラインフレームの周囲に境界線を付けたくない場合は、使い続けるのが最善です。
Jukka K. Korpela 2014年

絶対に本当。frameborder attrは純粋に表示用であるため、標準がいくら変更されても、HTML標準に戻る可能性はほとんどありません。
リスター氏2014年

属性HTML5の「標準」にあります:w3.org/TR/html5/rendering.html#frames-and-framesets
Jukka K. Korpela 2014年

@ JukkaK.Korpela待って、何?では、なぜOPは検証エラーを受け取るのでしょうか?ああ、すみません、あなたがリンクしているページはframeframesetではなく、についてiframeです。この属性iframe要素で廃止されました。w3.org/TR/html5/obsolete.html#attr-iframe-frameborder
Mr Lister

機能が廃止されたと宣言されているため、検証エラーが発行されます。これは、実際にはメッセージの発行以上の意味はありません。この属性は引き続きHTML5で定義されており、HTML5 CRによると、ブラウザーは引き続きこの属性をサポートすることが期待されています。
Jukka K. Korpela 2014年


2

XHTMLでターゲット属性を固定することにより、Javascriptでバリデーターを「だます」ためのテクニックに同じものを使用するのはどう<a onclick="this.target='_blank'">ですか?

  • onsomething = "this.frameborder = '0'"

<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>

またはgetElementsByTagName]("iframe")1ページ上のすべてのiframeにこの属性を追加しますか?

9未満のIEではも機能していないことを意味する何かをしたので、これをテストしていません!:)それで私がそれを整理している間... :)


0

私はそれがIE7動作することを可能にする素晴らしい回避策をここで見つけました。frameBorder属性のバリデーターをバイパスしますが、投稿で説明されているように、将来のブラウザー用にcssを保持します。


JavaScriptを使用してiframeを生成しますか?CSS警告メッセージを削除するだけで、iframeコンテンツの読み込み時間をさらに延期します。受け入れられた回答が言うように、seamless代わりに属性を使用することをお勧めします。
ラプター

はい。ただし、IE7ではシームレスが機能していなかったため、私の投稿です。
2014年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.