CSS で各行の最初の img をターゲットにすることは可能ですか。img 要素には次のプロパティがあります。
float: left;
margin-left: 20px;
各行の最初の img で margin-left を 0 に設定したいと思います。
ブラウザ ウィンドウが最大化および最小化されると、各行の最初の img が変更されることに注意してください。
出来ますか?
CSS で各行の最初の img をターゲットにすることは可能ですか。img 要素には次のプロパティがあります。
float: left;
margin-left: 20px;
各行の最初の img で margin-left を 0 に設定したいと思います。
ブラウザ ウィンドウが最大化および最小化されると、各行の最初の img が変更されることに注意してください。
出来ますか?
もちろん、各画像に 20px の左余白を与え、コンテナーに -20px の左余白を与えるだけです。
.container {margin-left:-20px}
.container img {margin-left:20px; float:left}
そうすれば、コンテナの左側にあるすべての img の実効マージンは 0 になります。
画像が行ごとに div に含まれていない場合は、JavaScript を使用する必要があります。jQueryでこれをやってみましたが、1つの問題を除いてうまくいきます。の正しい値が得られませんimgPerLine
に変更var imgWidth = $img.eq(0).outerWidth();
するvar imgWidth = $img.eq(0).outerWidth(true);
と、少しうまく機能します。
jQuery
var $img = $('img');
var imgWidth = $img.eq(0).outerWidth();
var totalImgs = $img.length;
$(window).on('resize', function() {
var windowWidth = window.innerWidth;
var imgPerLine = Math.floor(windowWidth/imgWidth);
console.log('imgPerLine:'+imgPerLine);
$img.each(function () {
$(this).css('margin-left', '10px');
});
for (var i = 0; i < totalImgs - 1; i++) {
if (i % (imgPerLine) === 0) {
$img.eq(i).css('margin-left', '0px');
}
}
});
CSS
body {
margin: 0;
}
img {
float: left;
width: 200px;
margin: 10px;
}
HTML
<img src="http://goo.gl/UEZSH"> * 8