chevron-left chevron-right

Piotr Nalepa Frontend, architektura i AI

[CSS] Przezroczystość z użyciem CSS

Ta wersja
blog.piotrnalepa.pl/2009/10/06/css-przezroczystosc-z-uzyciem-css
Opublikowano
Autor
, Staff Software Engineer
Kategoria
CSS
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 17 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

W dzisiejszym tutorialu przedstawię sposoby na wykorzystanie przezroczystości na stronach WWW z użyciem samego CSS, bez użycia obrazków. Wykorzystamy do tego nową technikę CSS3 czyli pobieranie kolorów z palety RGBA, a także technikę bez użycia tej palety (ta technika jest wymuszona przez IE).

Sekcja 1Przezroczystość czcionek

Aby uzyskać przezroczyste czcionki należy skorzystać z następującego kodu CSS:

Przykład 1CSS
1
2
3
4
5
#bg p {
    padding: 5px;
    color: rgba(255,255,255,0.5);
    filter: alpha(opacity=50);
}

Taki zapis ustawia kolor czcionki na biały z pół-przezroczystością (wartości 0.5 oraz 50). filter: alpha(); odpowiada za przezroczystość w IE. Przykład działania kodu powyżej można zobaczyć na stronie z demo. Taką efektownie wyglądającą czcionkę można zastosować na przykład w w animowanym tooltipie.

Sekcja 2Przeźroczystość tła - wszystkie przeglądarki poza IE

W tym przypadku użyjemy następującego kodu:

Przykład 2CSS
1
2
3
4
5
6
7
8
9
#bg2 p {
    padding: 10px;
    width: 300px;
    height: 300px;
    overflow: hidden;
    margin: auto;
    background: rgba(255, 255, 255, 0.5);
    filter: alpha(opacity=50);
}

Ten przypadek jest podobny do powyższego, tyle że stosujemy paletę kolorów RGBA do background zamiast color. Przykładowe działanie można zobaczyć na stronie z demo 2.

Sekcja 3Przezroczystość tła (inny sposób) - wszystkie przeglądarki

Tu musimy użyć nastepujących konstrukcji:

Przykład 3HTML
1
2
3
<div id="transbox">
    <div>Etiam varius, quam interdum augue. Maecenas nunc. Phasellus a pellentesque leo. Donec eu turpis vulputate tortor et lorem. Sed neque. Maecenas pharetra lobortis magna diam, tincidunt enim. Sed fringilla odio. Suspendisse eu pulvinar gravida, nisl risus, consequat faucibus, tortor venenatis consequat. Nulla facilisi. Class aptent taciti sociosqu ad litora torquent per inceptos hymenaeos.</div>
</div>

Kod CSS do tego przykładu:

Przykład 4CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#transbox {
    width: 300px;
    margin: 0 auto;
    background-color: #fff;
    filter:alpha(opacity=50);
    opacity: 0.5;
    -moz-opacity:0.5;
}
#transbox div {
    padding: 20px;
    color: #000;
    filter:alpha(opacity=100);
    opacity: 1;
    -moz-opacity:1;
}

Jak widać, odeszliśmy tu od palety kolorów RGBA, a zaczęliśmy korzystać z filtrów które są specyfiką każdej z przeglądarek. To znaczy -moz-opacity dla Mozilla Firefox, opacity dla Opery oraz filter:alpha() dla Internet Explorera. Przykład działania powyższego kodu można znaleźć na: Demo 3.

Sekcja 4Podsumowanie

Mam nadzieję, że jasno opisałem sposoby na otrzymanie efektu przezroczystości w przeglądarkach. W razie jakichkolwiek pytań, proszę pisac w komentarzach.

Sekcja 4.1Aktualizacja - 12.10.2017

Obecnie, w większości przypadków aby ustawić by dany element był pół-przezroczysty wystarczy wykorzystać: opacity: 0.5; w kodzie CSS. Będzie to działało we wszystkich przeglądarkach.

Gdybyśmy jednak chcieli zrobić pół-przezroczyste tło danego elementu, np. tło dla popupu (np. jako kompontentu napisanego za pomocą React), to wystarczy temu elementowi przypisać wartość CSS: background: rgba(0,0,0, .5);. Tym samym uzyska on pół-przezroczyste czarne tło.

Udostępnij
Uwagi

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!