CSS Expression
こんにちは、ゼノフィ渡部です。
CSS Expressionでmax-width、max-heightをIE6で使用する方法をご紹介いたします。
CSS ExpressionはCSS内にJavaScriptを記述できるCSSの拡張機能です。
プロパティの値にダイナミック・プロパティを書き入れてスクリプトを記述することがきます。
2行目から3行目はIE6以外のブラウザ、7行目から8行目はIE6用のプロパティです。通常、max-widthなどのプロパティはIE6が対応していないので効果がありませんが、IEの独自拡張であるCSS Expressionでそれらを可能にします。
1 2 3 4 5 6 7 8 9 | div.expression img { max-width: 340px; max-height: 240px; } div.expression img { _width: expression(this.width > 340 ? 340: true); _height: expression(this.height > 240 ? 240: true); } |
通常の大きさと高さを持った画像とCSSで最大の幅と高さを指定したソースを記述しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <p> 通常の画像 </p> <div> <img src="sky.jpg" alt="空" /> </div> <p> max-width、max-heightを指定した画像 </p> <div class="expression"> <img src="sky.jpg" alt="空" /> </div> |
CSS ExpressionのJavaScriptは強力ですが、パフォーマンスが落ちる、セキュリティホールができやすいなどのデメリットがあるため、多用はできません。 使用を避けられる状況にある場合は、Expressionの記述は控えた方がよいと思います。
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 | div { margin: 0 0 20px; } div.expression img { max-width: 340px; max-height: 240px; } div.expression img { _width: expression(this.width > 340 ? 340: true); _height: expression(this.height > 240 ? 240: true); } |
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <p> 通常の画像 </p> <div> <img src="sky.jpg" alt="空" /> </div> <p> max-width、max-heightを指定した画像 </p> <div class="expression"> <img src="sky.jpg" alt="空" /> </div> |