ホームページ > 記事 > ウェブフロントエンド > 高さが不明な画像を垂直方向の中央に配置する方法
この記事では主に、高さが不明な画像の垂直方向の中央揃えを設定する詳細な方法を紹介します。練習するときは、IE ブラウザーでの表示状況に特に注意してください。必要な場合は、それを参照してください。
標準ブラウザーは引き続き外部コンテナー #box を使用します。 IE6/IE7では表示モードをdisplay:table-cellに設定しています
の為、実際の効果はimgタグの前に空タグを挿入します。ブラウザごとに解析が異なるため、ブラウザごとに 1px ~ 3px の誤差が生じます。
方法1:
この方法は、外部コンテナの表示モードをdisplay:tableに設定し、imgタグの外側にspanタグをネストし、spanの表示モードをdisplay:table-cellに設定します。もちろん、これは標準ブラウザ上でのみであり、IE6/IE7 では位置決めを使用する必要があります。
HTML コード
<p id="box"> <span><img src="images/demo.jpg" alt="" /></span> </p>
CSS コード
<style type="text/css"> #box{ width:500px;height:400px; display:table; text-align:center; border:1px solid #d3d3d3;background:#fff; } #box span{ display:table-cell; vertical-align:middle; } #box img{ border:1px solid #ccc; } </style> <!--[if lte IE 7]> <style type="text/css"> #box{ position:relative; overflow:hidden; } #box span{ position:absolute; left:50%;top:50%; } #box img{ position:relative; left:-50%;top:-50%; } </style> <![endif]-->
方法 2:
方法 2 と方法 1 の実装原則は似ており、方法 1 は条件付きコメントを使用し、方法 2 は CSS を使用します。ハック。
CSSコード
#box{ width:500px;height:400px; overflow:hidden; position:relative; display:table-cell; text-align:center; vertical-align:middle; border:1px solid #d3d3d3;background:#fff; } #box span{ position:static; *position:absolute; /*针对IE6/7的Hack*/ top:50%; /*针对IE6/7的Hack*/ } #box img { position:static; *position:relative; /*针对IE6/7的Hack*/ top:-50%;left:-50%; /*针对IE6/7的Hack*/ border:1px solid #ccc; }
この方法には欠点があります。標準ブラウザでは、外部コンテナ#boxの表示モードがdisplay:table-cellであるため、#boxはmargin属性を使用できず、IE8では枠線の設定も無効です。 。
方法 3:
IE6/IE7 では、引き続き、外部コンテナー #box の表示モードを、img タグの前に空のタグのペアを挿入する方法を使用します。
HTML コード
<p id="box"> <i></i><img src="images/demo.jpg" alt="" /> </p>
CSS コード
<style type="text/css"> #box{ width:500px;height:400px; display:table-cell; text-align:center; vertical-align:middle; border:1px solid #d3d3d3;background:#fff; } #box img{ border:1px solid #ccc; } </style> <!--[if IE]> <style type="text/css"> #box i { display:inline-block; height:100%; vertical-align:middle } #box img { vertical-align:middle } </style> <![endif]-->
方法 4:
p タグを img タグの外側でラップします。標準ブラウザでは、これを実現するために、p タグの疑似クラス属性が使用されます。互換性を実現するための CSS 式。
HTML コード
<p id="box"> <p><img src="images/demo.jpg" alt="" /></p> </p>
CSS コード
#box{ width:500px;height:400px; text-align:center; border:1px solid #d3d3d3;background:#fff; } #box p{ width:500px;height:400px; line-height:400px; /* 行高等于高度 */ } /* 兼容标准浏览器 */ #box p:before{ content:"."; /* <a href="http://casinogreece.gr/">????????????</a> 具体的值与垂直居中无关,尽可能的节省字符 */ margin-left:-5px; font-size:10px; /* 修复居中的小BUG */ visibility:hidden; /*设置成隐藏元素*/ } #box p img{ *margin-top:expression((400 - this.height )/2); /* CSS表达式用来兼容IE6/IE7 */ vertical-align:middle; border:1px solid #ccc; }
使用: beforr このメソッドは、標準ブラウザではより強力で副作用はありませんが、IE6/IE7 では、パフォーマンス要件がより高い場合、CSS 表現メソッドの使用には注意してください。
方法 5:
この方法は、IE6/IE7 用です。標準ブラウザでは、互換性を確保するために、画像の外部コンテナのフォント サイズを高さの 0.873 倍に設定します。構造も比較的似ています。
HTMLコード
<p id="box"> <img src="images/demo.jpg" alt="" /> </p>
CSSコード
#box{ width:500px;height:400px; text-align:center; border:1px solid #d3d3d3;background:#fff; /* 兼容标准浏览器 */ display: table-cell; vertical-align:middle; /* 兼容IE6/IE7 */ *display:block; *font-size:349px; /* 字体大小约为容器高度的0.873倍 400*0.873 = 349 */ *font-family:Arial; /* 防止非utf-8引起的hack失效问题,如gbk编码 */ } #box img{ vertical-align:middle; }
フォントサイズの設定方法が奇妙に感じられ、合理的な説明を見たことがありませんが、picture要素には他の要素とは異なるいくつかの特徴があることだけがわかります。 IE6/IE7 、この方法は非常に強力です。
考察: 多くのメソッドは、垂直方向のセンタリングを実現するために、外部コンテナの表示モードを table に設定することに依存しています。つまり、テーブルをシミュレートするための属性が CSS にあれば素晴らしいでしょう。
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
position:fixed 属性を使用して DIV を中心に配置する方法
以上が高さが不明な画像を垂直方向の中央に配置する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。