内に正しく配置されるように画像を回転させようとしています。つまり画像の左上隅をdiv
。CSS:画像を回転して左上に揃えます
here( - >[rotate]
をクリックしてください)これは動作しません。これを修正する方法はありますか?
(私は回転画像のオフセットをハードコーディングすることはできませんので、私はオンラインの画像ビューアでこれを使用しているだろうことに注意してください。そこに類似の質問がたくさんありますが、私はこの正確な質問を見つけていません。)
内に正しく配置されるように画像を回転させようとしています。つまり画像の左上隅をdiv
。CSS:画像を回転して左上に揃えます
here( - >[rotate]
をクリックしてください)これは動作しません。これを修正する方法はありますか?
(私は回転画像のオフセットをハードコーディングすることはできませんので、私はオンラインの画像ビューアでこれを使用しているだろうことに注意してください。そこに類似の質問がたくさんありますが、私はこの正確な質問を見つけていません。)
私は単純な方法があるかどうかわかりませんが、このような回転の後に画像のマージンを設定することができます。
margin:68px -66px;
イメージの幅と高さを取得するためにjsを使用すると、イメージのサイズに応じて値が設定されます。私は手動で方法を使用しました。
EDIT:
あなたは
-webkit-transform-origin: 75px 75px;
-moz-transform-origin: 75px 75px;
-ms-transform-origin: 75px 75px;
-o-transform-origin: 75px 75px;
transform-origin: 75px 75px;
と常に混乱ここに見られるようにすることができます:いくつかのjQueryを使用してCSS "transform: rotate()" affecting overall design with "position: absolute" (not aligning properly)
を、あなたが引く、親のoffset
を得ることができますそれは新しい回転したoffset
からのもので、余白を使ってそれをコンテナに戻します。それはすべての回転で動作します。ここにはthe Fiddleがあります。
JS:画像を「再調整」するためにJavaScriptを使用していないよりも簡単な方法があることは、これまで私はそれを取る与えられた答えから
function rotate(elm, deg) {
var offsetContLeft, offsetContTop, offsetLeft, offsetTop, newLeft, newTop;
$(elm).css('transform', 'rotate('+ deg +'deg)');
// Get the container offset
offsetContLeft = $(elm).parent().offset().left;
offsetContTop= $(elm).parent().offset().top;
// get the new rotated offset
offsetLeft = $(elm).offset().left;
offsetTop = $(elm).offset().top;
// Subtract the two offsets.
newLeft = offsetContLeft - offsetLeft;
newTop = offsetContTop - offsetTop;
// Apply the new offsets to the margin of the element.
$(elm).css('margin-left', newLeft).css('margin-top', newTop);
}
$("#myrotate").click(function (e) {
// pass in the element to rotate and the desired rotation.
rotate('#myimage', 90);
});
サー、よろしくお願いいたします。 – Lomse
。私はので、私が使用して終了したアプローチを共有しましょう:
var step = 0;
$("#myrotate").click(
function (e) {
step += 1;
var img = $("#myimage");
img.css('transform', 'rotate('+ step*90 +'deg)'); // could be extended to work also in older browsers
var d = img.width() - img.height();
img.css('margin-left', -d/2*(step%2));
img.css('margin-top', d/2*(step%2));
}
);
myrotate
myimage
が回転する(推測)img
のid
で、私はスイッチとして虐待<a>
のid
です。
お試しくださいhere
スーパー!!!ありがとう...これは私の救いの恵みでした... –
あなたはそれがCSSで行うことにしたい場合は、これは方法です:
.rot90 {
-webkit-transform: translateY(-100%) rotate(90deg); /* Safari */
-moz-transform: translateY(-100%) rotate(90deg); /* Firefox 3.6 Firefox 4 */
/*-moz-transform-origin: right top; */
-ms-transform: translateY(-100%) rotate(90deg); /* IE9 */
-o-transform: translateY(-100%) rotate(90deg); /* Opera */
transform: translateY(-100%) rotate(90deg); /* W3C */
-webkit-transform-origin: left bottom;
-moz-transform-origin: left bottom;
-ms-transform-origin: left bottom;
-o-transform-origin: left bottom;
transform-origin: left bottom;
}
トリックは左下隅を中心に画像を回転させることです。一旦終わったら、それは高さの100%だけ下がります。それを翻訳して、今は大丈夫です。
逆回転のための同じ効果を得るには:あなたのdivにプロパティ..:(ホバーを変換するために)
div:hover #myimage {
-webkit-transform: translateX(-100%) rotate(-90deg); /* Safari */
-moz-transform: translateX(-100%) rotate(-90deg); /* Firefox 3.6 Firefox 4 */
-ms-transform: translateX(-100%) rotate(-90deg); /* IE9 */
-o-transform: translateX(-100%) rotate(-90deg); /* Opera */
transform: translateX(-100%) rotate(-90deg); /* W3C */
-webkit-transform-origin: top right;
-moz-transform-origin: top right;
-ms-transform-origin: top right;
-o-transform-origin: top right;
transform-origin: top right;
}
<div style="border: 1px solid red;">
<img id="myimage" src="http://upload.wikimedia.org/wikipedia/mediawiki/a/a9/Example.jpg" style="border: 3px solid silver;" />
</div>
-90度回転はいかがですか?他の価値は何を変える必要がありますか? –
@MrPabloは逆回転のスニペットを追加しました – vals
あなたは '隠れオーバーフロー' を使用しましたか? –
'overflow:hidden;'は画像の部分だけを切り取ってしまいますが、位置合わせを修正しません。 – fuenfundachtzig