2013-08-22 12 views
7

mam ten przykład:Przewijany div nie jest przewijana po najechaniu na obrazek

<div class="container"> 
    <div class="box"> 
     <object class="object" data="http://www.marketingvox.com/wp/wp-content/uploads/2009/12/darpa-balloon.thumbnail.jpg"> 
     <img class="image" src="http://www.marketingvox.com/wp/wp-content/uploads/2009/12/darpa-balloon.thumbnail.jpg"> 
    </object> 
    </div> 
</div> 


.container { 
width: 200px; 
height: 500px; 
overflow: scroll; 
background: red; 
} 

.box { 
top: 20px; 
left: 20px; 
width: 50px; 
height: 1000px; 
position: relative;  
} 

.object { 
position: absolute; 
} 

.image { 
top: 50px; 
position: absolute; 
cursor: pointer; 
} 
} 

http://jsfiddle.net/aS972/1/

Najedź na obrazek, a nie będą mogli przewijać, unoszą się poza obrazem, a możesz przewijać. Muszę być w stanie przewijać nawet po najechaniu na obraz.

Co robię źle?

+4

Czemu przy użyciu '' elementu? – Mooseman

+2

Zamknij również znacznik '', ale to nie rozwiązuje problemu, ale dodaje '/' na końcu. '' – Tikkes

+0

Potrzebuję użyć elementu . @Mooseman –

Odpowiedz

0

Edytuj 2 Usunąłem object w tym skrzypcach. W tym przykładzie nie miało to żadnego celu, http://jsfiddle.net/aS972/6/. Jednakże, jeśli musisz go zostawić, użyj tego w bloku obiektu, jak ktoś już powiedział.

<param name="wmode" value="transparent"> 

Edit

Ok, Twój problem jest to, że zawartość nie może przekraczać 500px nawet więc nie możesz wiedzieć, czy jest przewijane, czy nie. Jeśli dodasz więcej treści, takich jak ten http://jsfiddle.net/aS972/5/, to działa dobrze. Ustawienie jednostki height na auto spowodowało rozszerzenie rozmiaru do rozmiaru .box, dzięki czemu można ją przewijać, ponieważ była tak wysoka.

Zmień swój kontener css, aby mieć "wysokość" jako "auto". Ustawienie wysokości ".box" jako większej, wydawało się zepsuć.

.container { 
width: 200px; 
height: auto; //this changes to auto 
overflow: scroll; 
background: red; 
position: relative; //add relative for good measure. 
} 
+0

Pojemnik powinien być przewijany. –

+0

I + 1'ed tę odpowiedź, ponieważ widziałem, że rozwiązuje to pytanie. Ale czy możesz wyjaśnić nam ten cud? Co się tutaj stało? – ygesher

+0

Uaktualniłem odpowiedź dla wszystkich –

1

Wiele razy z flash video trzeba dodać <param name="wmode" value="transparent" /> wewnątrz znacznika <object> dostać się do renderowania HTML nad nim i zdarzeń (takich jak przewijanie) zostać zwolniony.

Miejmy nadzieję, że ktoś może skierować kogoś do poprawnej odpowiedzi.

+0

To nie rozwiąże problemu w chrome. Pozostaje nie do przeskoczenia. – Tikkes

0

Znacznik obiektu powoduje problem. Jeśli wyświetlasz tylko obraz wewnątrz obiektu, dlaczego nie po prostu użyć tagu graficznego?

http://jsfiddle.net/bSaBm/

<div class="container"> 
    <div class="box"> 
     <img class="image" src="http://www.marketingvox.com/wp/wp-content/uploads/2009/12/darpa-balloon.thumbnail.jpg"/> 
    </div> 
</div> 
+0

Autor pytania zadeklarował już, że potrzebuje znacznika obiektu. To ignoruje problem, nie rozwiązuje go i było już wielokrotnie sugerowane. – Tikkes

+0

@Tikkes Autor nie podał jeszcze powodu DLACZEGO używa znacznika object. W ramach kodu, który podał, znacznik obiektu nie ma żadnego sensu. Dopóki autor nie poda racjonalnego uzasadnienia, jest to poprawna odpowiedź. –

+0

A fakt, że autor ustawił atrybut danych na obraz bez określania typu, ORAZ zawierał tag img wewnątrz obiektu, nie daje wiarygodności jego rozwiązaniu. –

Powiązane problemy