2012-07-25 10 views
10

Obracam monetę wzdłuż osi Y o 90 ° do CSS. Czy istnieje sposób, aby pokazać grubość monety po jej obróceniu, myślałem, że mogę się skalować po obróceniu monety wzdłuż osi Y, ale to nie działa. Proszę sugerować sposób, aby zrobić to samo, jeśli to możliwe. link_on_js fiddle za to samo. Użyj przeglądarki Webkit, aby otworzyć link.chcesz pokazać grubość elementu podczas obracania

CSS

.coin { 
    display: block; 
    background: url("url-to-image-of-coin.jpg"); 
    background-size: 100% 100%; 
    width: 100px; 
    height: 100px; 
    margin: auto; 
    border-radius: 100%; 
    transition: all 500ms linear; 
} 

.flip { 
    transform: rotateY(180deg); 
} 

HTML

<div class="coin"></div> 

jQuery

$('.coin').click(function() { 
    $(this).toggleClass('flip'); 
}); 

Fi DDLE

http://jsfiddle.net/7EtLu/22/

+1

Co masz na myśli mówiąc o „grubości z moneta"? To tylko 2D, nie ma prawdziwej osi Z. – Armin

+0

ponieważ używam obrazu 2-D dla monety, ale w rzeczywistości monetą jest obiekt 3-D, więc gdy powinienem go obrócić wzdłuż osi Y, powinienem również zobaczyć grubość, aby uzyskać realistyczny efekt. Czy można to zrobić z samym CSS? – manyu

+0

Ah w porządku. Myślę, że CSS nie pasuje do twoich wymagań. Wygląda to jak zadanie dla Canvas. Ale nie mam z tym żadnego doświadczenia. – Armin

Odpowiedz

26

można użyć pseudo-elementy, aby dać efekt podobny. Oto przykład: http://jsfiddle.net/joshnh/y7rQL/

<div class="coin"></div>
body { 
    transform: perspective(500px); 
    transform-style: preserve-3d; 
} 
.coin { 
    background-image: url("http://www.coolemails4u.com/wp-content/uploads/2010/10/indian_rupee.png"); 
    background-size: 100% 100%; 
    border-radius: 100%; 
    height: 100px; 
    margin: 50px auto; 
    position: relative; 
    transition: .5s linear; 
    transform-style: preserve-3d; 
    width: 100px; 
} 
.coin:after { 
    background-color: #262626; 
    background-image: -webkit-linear-gradient(hsla(0,0%,100%,.25), hsla(0,0%,0%,.25)); 
    bottom: 0; 
    content: ''; 
    left: 45px; 
    position: absolute; 
    top: 0; 
    transform: rotateY(-90deg); 
    transform-origin: 100% 50%; 
    width: 5px; 
    z-index: -10; 
} 
.coin:before { 
    background-color: #262626; 
    background-image: -webkit-linear-gradient(hsla(0,0%,100%,.25), hsla(0,0%,0%,.25)); 
    border-radius: 100%; 
    content: ''; 
    height: 100px; 
    left: 0; 
    position: absolute; 
    top: 0; 
    transform: translateZ(-5px); 
    width: 100px; 
} 
.coin:hover { 
    transform: rotateY(90deg); 
}​ 

Również tutaj jest wersja, która obraca się o 180 stopni (to nie jest tak ładnie, choć): http://jsfiddle.net/joshnh/Bz22S/

+1

+1 Bardzo miło !;) – Christoph

+1

@joshnh bardzo dziękuję, twoja odpowiedź naprawdę pomogła :) ..... Naprawdę niesamowite, jak to zrobiłaś ... – manyu

+0

+1, dobry :) – sandeep