2015-09-30 17 views
5

Buduję menu 3d css cube. Kod here.Elementy w obrębie sześcianu 3d css nie mogą zostać wybrane. Dziwne

<button id="btn">flip button</button>  
<div class="signup-viewport"> 
    <div id="cube" class="cube animation"> 
     <div class="front">front <a href="">front link</a></div> 
     <div class="back">Back</div> 
     <div class="left">Left</div> 
     <div class="right">Right <a href="">right link</a></div> 
     <div class="bottom">Bottom</div> 
     <div class="top">Top</div> 
    </div> 
</div> 

Po obróceniu twarzy przyciskiem "Odwróć" nie można kliknąć łącza z prawej strony sześcianu.

Jakieś pomysły, dlaczego? W firefox link działa, ale na chromie i chromie nie działa.

+0

Wygląda na to, że nie dodajesz do lewej strony klasy "left-rotate", gdy klikniesz ponownie przycisk? –

+0

@Sterling Archer przycisk obrócić kostkę na prawą stronę. Z przodu można kliknąć łącze, ale po kliknięciu przycisku klapki nie można kliknąć łącza z prawej strony. Po najechaniu myszą na to łącze kursor nie zmienia się w wskaźnik. – Cristian

Odpowiedz

1

Po bardzo wielu zmaganiach udało mi się w końcu obejść problem, którego nie można kliknąć i nie można go wybrać.

Aby dokonać wyboru boków sześcianu, potrzebna jest właściwość "perspektywa" (zgodnie z sugestią @Cedric Reichenbacha); ale jako efekt uboczny pojawia się pixalacja z powodu renderowania perspektywy. Próbowałem pozbyć się pixalacji za pomocą dużej liczby perspektywicznej (10000px), ale pixalacja wciąż tam była. Zwiększając liczbę perspektyw, płaszczyzna renderowania znika "dalej", dając wrażenie mniejszej perspektywy.

Po dwóch dniach eksperymentowania z różnymi rodzajami rzeczy tak, jak podszedłem do perspektywy, użyłem bardzo dużej liczby dla perspektywy. (perspective: 10000000px;) Teraz efekt pixalacji zniknął, a boki kostki można klikać i wybierać.

Here to demonstracja rozwiązania.

1

Dzieje się tak, ponieważ powierzchnie mają height z 0, powodując przekształcenie tekstu w obszar wypełnienia. Firefox i Chrome wydają się traktować takie elementy inaczej pod względem zdarzeń myszy.

Jeśli używasz height: auto, działa zgodnie z oczekiwaniami, ale powinieneś zadbać o to, aby wysokość pozostała spójna ze zmieniającą się zawartością.

Oto zmodyfikowany JSFiddle demonstrujący to.

Aktualizacja:

Najwyraźniej chrom zachowuje się inaczej na różnych OS”(lub wersje).

Jednak problem wydaje się być związany z naturą 3D transformacji (transform-style: preserve-3D). Ustawiając wyraźną perspektywę, działa ona na moim komputerze, chociaż wciąż jest trochę chwiejna.

Updated JSFiddle

Można również zauważyć, że wszystko wygląda nieco rozmyte teraz, ponieważ 3D przekształca „odczepić” treści z siatki pikseli przez praktycznie podnoszenia samoloty bliżej widza.

+0

dziękuję za odpowiedź. Odwiedziłem link, ale wygląda na to, że nadal nie mogę kliknąć "odpowiedniego łącza". Użyłem tego haka wysokości, aby uzyskać wysokość = szerokość dla spraw wymagających reakcji. Mam nadzieję, że uszło mi to z wysokością = 0. – Cristian

+0

To dziwne; Testowałem na Linuksie i działało, ale w Windowsie wygląda na to, że zachowuje się inaczej ...Cóż, zawsze możesz użyć innego elementu wewnątrz z absolutnym pozycjonowaniem i z-index> 1, aby nie zepsuć wysokości rodziców. –

+1

(Znalazłem rozwiązanie i zaktualizowałem odpowiedź.) –