2011-07-05 23 views
10

Sorun: Bir div içindeki bir alt öğeye uygulanan css3 dönüştürmeleri, "overflow: auto;" işlevini kullanırken scrollHeight ve scroll içeren satırın kaydırma çubuğunu hesaplarken tarayıcı tarafından yok sayılır (FF5, Chrome12, IE9).taşma: auto, CSS3 dönüştürülmüş alt öğelerle çalışmaz. Önerilen geçici çözüm?

<style type="text/css"> 
div{ width: 300px;height:500px;overflow:auto; } 
div img { 
-moz-transform: scale(2) rotate(90deg); 
-webkit-transform: scale(2) rotate(90deg); 
-ms-transform: scale(2) rotate(90deg); 
} 
</style>  
<div><img src="somelargeimage.png" /></div> 

Birlikte istenmeyen davranış gösteren jsfiddle üzerinde küçük bir test koyduk.

http://jsfiddle.net/4b9BJ/

Esasen ben tam içeriğini görmek için kaydırma yapmak css3 döndürmek ve ölçek için dönüşümleri kullanarak basit bir web tabanlı resim görüntüleyici oluşturmak çalışıyorum ve muktedir sabit bir genişlik/yükseklik ile içeren div istiyorum içerdiği görüntü.

Bu sorunu ele almanın akıllıca bir yolu var mı, yoksa kaba bir çözüm mü? Herhangi bir yardım takdir edilir.

+0

Beklemiyorum, dönüşümlerin özelliklerinden biri, * düzeninizin kalan kısmını etkilememesidir. Dönüştürmeyi içeren 'div' öğesine uygulayabilir misiniz yoksa bu etkiyi mahveder mi? – robertc

+0

Hayır, bu, mevcut ekran alanından daha büyük olduğu yere yakınlaştırılmış görüntünün tam içeriğini görmek için gezinmek için noktayı yenecektir. – j0tt

cevap

3

Dönüşümlerin her birine ek bir boşluk ekledim ve bu divlar ve kırpma taşmaları için sabit genişlikler ayarlayarak onlara doğru boyutlarda olmalarını sağladım. Ama sonra pozisyon kullanmalıyım: göreli ve üst: blah; sol: görüntüleri doğru konuma kaydırmak için blah. http://jsfiddle.net/4b9BJ/7/

+0

Bu işe yaramış gibi görünüyor. Ortaya çıkan görüntü boyutuna göre ayarlanmış sabit boyutlarda bir iç div denedim, ancak üstünü ayarlamadım ve bunun gibi kaldı. Teşekkürler! – j0tt

+0

@ j0tt, görüntüyü dinamik olarak yakınlaştırmak ve uzaklaştırmak için javascript kullanmak istiyorsanız, nessicary top'u hesaplayabilmeniz gerekir: sol ve: nessicary olarak sadece birkaç/2 veya * 2 değerleri (belki bir çıkarma ve sonra) rotasyon durumunda a/2). – theguywholikeslinux

+0

aslında, 'top:' ve 'left:' değerleri için% 'yi kullanabilirsiniz. – theguywholikeslinux