JS と jQuery スニペットを数年間使用した後、imagefillを置き換える独自の小さな関数を作成しました。このコードを恥じる必要がありますか、それとも問題ありませんか? どうすればよいでしょうか?基本的な機能ではなく、スタイルに(あなたの目には)明らかな間違いがありますか?
function fillsensible(maxWidth, maxHeight, container) {
var img = $(container).find('img');
var container = $(container);
img.css("opacity", "0");
img.load(function() {
var ratio = 0;
var containerHeight = container.height();
var containerWidth = container.width();
if(img.width() > maxWidth) {
ratio = maxWidth / img.width();
img.css("width", maxWidth);
img.css("height", img.height() * ratio); // Scale height based on ratio
} else if (img.height() > maxHeight) {
ratio = maxHeight / img.height();
img.css("height", maxHeight);
img.css("width", img.width() * ratio); // Scale height based on ratio
};
container.css('position', 'relative');
img.css('position', 'absolute');
marginTop = (containerHeight - img.height())/2;
marginLeft = (containerWidth - img.width())/2;
img.css({
"top": marginTop,
"left": marginLeft,
"opacity": "1"
});
});
}
最初から明確でない場合: これは、DOM 内の特定のコンテナー要素を調べて img を取得し、元のサイズに比例して指定された最大サイズ (ピクセル単位) にスケーリングし、コンテナーの中央に配置します。
これは、背景画像ではすべて簡単ですが、私の知る限り img-elements では不可能です。
ご意見ありがとうございます。