Ostatnio bardzo popularny stał się efekt, który polega na płynnym pojawianiu się jakiegoś elementu, kiedy najedziemy myszką na inny. Obecny jest on również na głównym szablonie Wioski (kiedy najedziemy kursorem na kwadraciki wysunie się z góry tekst). A teraz chciałabym przedstawić wam, jak zrobić ten efekt.
Całość opiera się głównie na pseudoselektorze :hover oraz poleceniu transition. Jeżeli mieliście już do czynienia z tymi dwiema rzeczami, zrozumienie tej instrukcji przyjdzie wam jeszcze łatwiej.
A oto efekt, do którego wspólnymi siłami postaramy się dojść.
Tytuł
Tekst, który się pojawia z dołu (nieco jak widmo), ale fajnie wygląda, prawda?
Na początek wygląd htmlu:
<div class="tytul">Tytuł</div>
<div class="dd" id="d2">Tekst, który się pojawia z dołu (nieco jak widmo), ale fajnie wygląda, prawda?</div>
</div>
Co nie wygląda zbyt efektownie, a mianowicie tak:
Tytuł
Tekst, który się pojawia z dołu (nieco jak widmo), ale fajnie wygląda, prawda?
Powinniśmy się skupić na dwóch divach o id d1 oraz d2, ponieważ to one będą tworzyć ten efekt. Istotne jest, że drugi div jest włożony do tego pierwszego. (Takie dwa pudełka, jedno w drugim.) Dzięki temu będziemy mogli wpływać na drugi div, używając pseudoelementu :hover dla diva pierwszego (będziemy zmieniać wewnętrzne pudełko posługując się zewnętrznym).
Najlepiej powyższy opis wyjaśnią obramowania. Czerwone dla zewnętrznego pudełka, zielone dla tego w środku.
Tytuł
Tekst, który się pojawia z dołu (nieco jak widmo), ale fajnie wygląda, prawda?
A teraz sprawmy, żeby to ładnie wyglądało i zaserwujmy obu divom jakiś zgrabny css.
#d1{margin:0 auto;}
.tytul {background-color:#777; padding:10px; text-align:center; color:#fff; }
#d2 {color:#777; background-color:#ddd; padding:10px; }
Tytuł
Tekst, który się pojawia z dołu (nieco jak widmo), ale fajnie wygląda, prawda?
Wygląd już mamy. Teraz zacznie się prawdziwa zabawa, więc skupcie się mocno. Jak już wcześniej wspomniałam, będziemy zmieniać ustawienia diva numer dwa - tego w środku - przy pomocy :hover dla diva zewnętrznego. Czyli nasz kod, który będzie odpowiadał za akcję (ruch), będzie zaczynał się od:
margin-top: 50 px;
position: absolute;
}
#d1:hover #d2 {margin-top:0;}
Użycie position:absolute sprawia, że zmiana nie wpływa na położenie pozostałej treści. Gdybyśmy tego nie zastosowali, wraz z przesunięciem diva drugiego przesunęłoby się wszystko, co było pod nim (u nas byłaby to zdecydowania większość treści tej instrukcji). Uwierzcie mi na słowo, to nie wygląda dobrze. Zastosujmy jeszcze magiczne transition, które da nam oczekiwany przez wszystkich efekt animacji.
Tytuł
Tekst, który się pojawia z dołu (nieco jak widmo), ale fajnie wygląda, prawda?
Nie sądzicie, że to już wygląda całkiem nieźle? Teraz nie pozostało nam nic innego, jak ukrycie naszego diva drugiego, kiedy go widzieć nie potrzebujemy. I oczywiście sprawienie, aby stawał się widoczny, gdy tego chcemy.
opacity:0;
visibility:hidden;
}
#d1:hover #d2{
opacity:1;
visibility:visible;
}
Obawiam się, że coś więcej na ten temat można poczytać tylko po angielsku. Jeżeli ktoś byłby chętny, zapraszam do wpisania w google tooltip using css only.
Na koniec jeszcze cały kod css razem:
#d1{margin:0 auto;}
#d2 {color:#777; background-color:#ddd; padding:10px; position:absolute; margin-top:50px; opacity:0; visibility:hidden; z-index:2; transition:0.3s; }
#d1:hover #d2 { margin-top:0; opacity:1; visibility:visible;}
.tytul { background-color:#777; border-bottom:#333; padding:10px; text-align:center; color:#fff; }
Twoje instrukcje ratują życie. <3
OdpowiedzUsuńNie przesadzaj :D
UsuńA można sie obejść bez tego HTMLu? Po prostu dodać z zwykły widget?
OdpowiedzUsuńhttp://instruktazowo.blogspot.com/2015/04/efekt-wypywania-elementu-po-najechaniu_20.html <- Część druga tej instrukcji.
UsuńBardzo fajny pomysł :D myślę, że nie jednej osobie ułatwi on życie :D
OdpowiedzUsuńLecę patrzeć, co jest w drugiej części ;)
Pozdrawiam!
Natx z lost souls
Dzięki, przydało się choć do czegoś innego :)
OdpowiedzUsuń