私はワードプレスのウェブサイトを持っており、同じ小さな png アイコンを投稿の画像の右下隅に配置したいと考えています。
問題は、ユーザーのコンテンツに応じて HTML が生成されるため、投稿が動的であるということです (そのため、記事を書く前にいじることができる HTML はありません)。このため、写真が小さいか大きいか、左または右に整列するかどうかはわかりません。また、それらの位置を予測することもできません。言うまでもなく、投稿内の出現数を予測できないため、画像が検出されるたびにロゴ img タグを動的に生成する必要もあります。
投稿内の「img」タグをターゲットにして、その直後にロゴ img タグを追加すると、簡単に達成できると思います。しかし、ロゴに適用するためにユーザーの写真の位置を検出する唯一の方法は、「clientWidth」と「clientHeight」を使用することです。
それは機能しますが、clientWidth に関しては重大な欠陥があります。これはウィンドウに関連する絶対的な配置であるため、使用するブラウザーに応じて異なるオフセット結果が得られます (各ブラウザーがスクロールバーを管理する方法またはなにか..)。とにかく、このままでは行き止まりです。
したがって、表示中にウィンドウのサイズが変更された場合でも、正確な位置を別の位置に適用し、その方法を維持するために img の相対位置を「追跡」する方法はありますか?
これは私が試したものです(そしてほとんどうまくいきました)。
$(".status-publish img").each(function(index)
{
var theID= 'theID'+index;
$(this).attr('id', theID);
$(this).after('<img id="log'+index+'" src="logo.png" /> ');
var source = $('#theID'+index);
var sourceHeight = source.height()-22;
var sourcePosition = source.position();
var target = $('#log'+index);
var sourceClass=source.attr('class');
var mysplit=sourceClass.split(" ");
var first_part=mysplit[0];
var last_part= mysplit.pop();
if((first_part=="alignleft") || (last_part=="alignleft") )
{
var x = sourcePosition.left-2;
var y = sourcePosition.top + sourceHeight;
}
else if((first_part=="alignright") || (last_part=="alignright") )
{
var x = sourcePosition.left+10;
var y = sourcePosition.top + sourceHeight;
}
else if((first_part=="aligncenter") || (last_part=="aligncenter") )
{
var x = sourcePosition.left-2;
var y = sourcePosition.top + sourceHeight+2;
}
else if((first_part=="alignnone") || (last_part=="alignnone") )
{
var x = sourcePosition.left-2;
var y = sourcePosition.top + sourceHeight;
}
x -= (target.outerWidth() - source.outerWidth());
target.css({
position: 'absolute',
zIndex: 5000,
top: y,
left: x
});
});
(おそらく、これまでに見た中で最も純粋で効果的なコードではありませんが、私は開発者ではないことに注意してください...)