Zapewne każdy z was spotkał się na stronie internetowej z efektem rozwijającego /chowającego się (toggle) po kliknięciu np. fragment tekstu lub obrazka.
W większości przypadków do uzyskania takiego efektu wykorzystywany jest JavaScrip (lub jedna z bibliotek np. jquery). Jednak to nie jedyna możliwość uzyskania takiego efektu. Nieco mniej zaawansowany efekt, ale o podobnym zastosowaniu możemy bowiem uzyskać z pomocą CSS.
W związku z tym, że już od pewnego czasu zajmuję się na blogu pokazywaniem głównie efektów działania CSS3 przygotowałam kilka przykładów. Ilustrujących dość proste działanie toggle. Jeżeli jednak chcecie w kolejnym wpisie mogę pokazać również jak w jQuery wykonać podobny efekt.
W ramach przygotowania się do tego kursiku 🙂 przemrażałam kilka stron internetowych i forum. Na podstawie informacji na nich zawartych wybrałam kilka ciekawych przykładów.
Powiedzmy, że chcemy ukryć fragment naszego tekstu, ale w taki sposób by czytająca go osoba mogła go później rozwinąć. Taki efekt można czasem spotkać np. na forum, w komentarzach.
Poniżej zamieściłam przykładową realizację zawierającą 3 przykłady:
Zachęcam do kliknięcia w napis „Read more” czyli czytaj więcej! Jeżeli już to zrobiliście to wiecie, że każdy przykład działa nieco inaczej.
Powyższe przykłady posiadają część kodu CSS wspólnego. Chodzi np. o kontener je okalający.
@import url('https://fonts.googleapis.com/css?family=Lato:400,400i|Montserrat:400,400i&subset=latin-ext');
body{
background: #7db9e8; /* Old browsers */background: -moz-linear-gradient(top, #7db9e8 0%, #ffffff 100%); /* FF3.6-15 */background: -webkit-linear-gradient(top, #7db9e8 0%,#ffffff 100%); /* Chrome10-25,Safari5.1-6 */background: linear-gradient(to bottom, #7db9e8 0%,#ffffff 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7db9e8', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */ font-family: 'Lato', sans-serif;
}
.contener{
margin: 0 auto 50px;
width: 100%;
max-width: 500px;
padding: 10px;
border-bottom: 5px solid #1E5799;
background: #fff;
box-shadow: 6px 5px 19px 2px #3d3d3d;
} W pierwszym przykładzie będziemy ukrywać fragment tekstu. Po kliknięciu w „Read more” zostanie on jednak rozwinięty.
Struktura HTML:
<div class="contener">
<input type="checkbox" class="read-more-state" id="post-1" />
<p class="read-more-wrap">Lorem ipsum dolor sit amet, consectetur adipisicing elit. <span class="read-more-target">Libero fuga facilis vel consectetur quos sapiente deleniti eveniet dolores tempore eos deserunt officia quis ab? Excepturi vero tempore minus beatae voluptatem!</span></p>
<label for="post-1" class="read-more-trigger"></label>
</div> Jak widać na powyższym przykładzie niewidoczny fragment został umieszczony pomiędzy znacznikami <span> z klasą read-more-target.
Drugi przykład dotyczy już listy. Z pomocą CSS dzielimy listę na części. Kod HTML drugiego przykładu:
<div class="contener">
<input type="checkbox" class="read-more-state" id="post-2" />
<ul class="read-more-wrap">
<li>lorem</li>
<li>lorem 2</li>
<li class="read-more-target">lorem 3</li>
<li class="read-more-target">lorem 4</li>
</ul>
<label for="post-2" class="read-more-trigger"></label>
</div> W tym przypadku nie dodawałam już dodatkowego elementu jedynie ukrytym elementom dodałam klasę read-more-target jest to ta sama klasa co w wcześniejszym przykładzie.
Przykład 2 i pierwszy bazują praktycznie na tym samym kodzie CSS:
.read-more-state {
display: none;
}
.read-more-target {
opacity: 0;
max-height: 0;
font-size: 0;
transition: .25s ease;
}
.read-more-state:checked ~ .read-more-wrap .read-more-target {
opacity: 1;
font-size: inherit;
max-height: 999em;
}
.read-more-state ~ .read-more-trigger:before {
content: 'Read more';
}
.read-more-state:checked ~ .read-more-trigger:before {
content: 'Read less';
}
.read-more-trigger {
cursor: pointer;
display: inline-block;
padding: 0 .5em;
color: #1e5799;
font-size: .9em;
line-height: 2;
border: 1px solid #1e5799;
border-radius: .25em;
font-family: 'Montserrat', sans-serif;
} Ten przykład różni się od pozostałych dwóch. Wykorzystuje on bowiem jeden ze stanów (pseudo elementów) jakie może przyjmować element HTML – target.
Kod jaki został zastosowany dla przykładu:
.show-text {
display: none;
}
.show-text:target {
display: block;
} Jak widać w momencie kiedy obiekt osiągnie stan target będzie jego ustawienia ulegną zmianie.
Kod HTML przykładu:
<div class="contener">
<ul class="exemple">
<li><a href="#exemple-1">lorem</a>
<ul id="exemple-1" class="show-text">
<li>Some text</li>
<li>Some text</li>
<li>Some text</li>
</ul>
</li>
<li><a href="#exemple-2">lorem 2</a>
<ul id="exemple-2" class="show-text">
<li>Some text</li>
<li>Some text</li>
<li>Some text</li>
</ul>
</li>
<li><a href="#exemple-3">lorem 3</a>
<div id="exemple-3" class="show-text">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</div>
</li>
</ul>
</div> Koniecznie przeczytaj również: Jeśli chcesz wesprzeć moje działania:
Uzyskane w ten sposób fundusze będę przeznaczać na dalszy rozwój bloga (w tym różne opłaty związane z jego prowadzeniem).
Warto zobaczyć:
Jak w przypadku wielu różnych tematów tak i w przypadku marki osobistej pojawiło się przez…
Choć zabrzmi to może nieco dziwnie to wprowadzenie AI (sztucznej inteligencji) do naszego życia było…
Widmo Brockenu to dość rzadko spotykane zjawisko optyczne, najczęściej widywane w wysokich partiach gór. Można…
Zacznę może od tego, że relikwia, relikwii nie równa. Wiem jeśli nie ma się pojęcia…
Logo stanowi jeden z ważniejszych elementów tożsamości wizualnej praktycznie każdej firmy, marki czy projektu. Logo…
Budując własną markę osobistą lub chcąc ją zbudować trzeba liczyć się z wieloma wyzwaniami. Jednym…