2016-04-28 10 views
2

リサイズ可能な関数を使用していくつかの画像を操作していますが、コンテナDIV(具体的には.CONTAINER)を使用して画像を囲むことができますか?その内部の画像とともに動的にサイズを変更します。私が行っていることの例については、JSFIDDLEを参照してください。内部の画像に基づいてコンテナDIVの動的リサイズを行う

HTML

<div class="container"> 
    <div class="resizable" class="ui-state-active"> 
     <img src="http://41.media.tumblr.com/3e99c08237117645f55cd1c4bdbf3180/tumblr_mky50dQmXI1s56exfo1_500.png" alt="doge"> 
    </div> 
</div> 

$(function() { 
    $(".resizable").resizable({ 
     containment: ".container", 
     aspectRatio: 150/200 
    }); 
}); 

もともとCSS

.container { width: auto; height: auto; } 

.resizable { background-position: top left; width: 150px; height: 200px; } 
    .resizable, .container { padding: 0.5em; } 
     .resizable img {width:100%;} 

JSは、私は多分置くことを考えましたコンテナの幅/高さがAUTOに設定されている場合は、DIVの長さの100%にすぎません。

思考?

+0

あなたは、サイズ変更可能なサイズに基づいてイベントや変更幅と高さのサイズを変更使用しようとすることができます。 http://api.jqueryui.com/resizable/#event-resize – jcubic

+0

[aspectRatio'を 'true'に設定する](https://jsfiddle.net/jmarikle/kcod5rsa/)のように[なぜ?ドキュメント](http://api.jqueryui.com/resizable/#option-aspectRatio)? –

+0

これがあなたの目的に役立つかどうか確認してください。 https://jsfiddle.net/vasi_32/6y1x9dwp/5/ – brk

答えて

2

これを変更すると動作します。コンテナの幅と高さをautoに設定し、親幅全体を取らないようにインラインブロックを表示する。

CSS

.container { width: auto; height: auto; display: inline-block; } 

.resizable { background-position: top left; width: 150px; height: 200px; } 
    .resizable, .container { padding: 0.5em; } 
     .resizable img {width:100%;} 

はまた、あなたはあなたのjsの封じ込めラインを削除する必要があります。

JS

$(function() { 
    $(".resizable").resizable({ 
     aspectRatio: 150/200 
    }); 
}); 
+0

それはトリックですが、あなたが呼び出したアイテムに基づいてこれを拡張してみましょう。 あなたが見た封じ込めJSは、私が取り組んでいる副次的な部分の一部でした。上記で強調した変更を加えました.-注:私は自分のコードでコンテナJSを削除しませんでした。イメージはコンテナ内にまだ残っているため、リサイズ時にコンテナを破ることができました。あなたは、その封じ込めで完全にそれらを保持する上のあなたのアップデートを使用して示唆を持っていますか? – Cutter

+0

@ JDCutter封じ込めが定義されていると、サイズ変更が拡大できないようです。おそらく、サイズ変更の矢印を押しながらマウスをドラッグしてコンテナのサイズを動的に変更するなど、回避策を見つける必要があります。 –

関連する問題