Home > Webmastering > Przeźroczystość w CSS

Przeźroczystość w CSS

Jeśli chcecie uzyskać efekt przeźroczystości na swojej stronie www, a jednocześnie nie chcecie kombinować z kodem JavaScript albo jeszcze gorzej, tworzyć odpowiednio spreparowanej grafiki (jak za dawnych czasów), to dobrym wyjściem będzie skorzystanie z dobrodziejstw arkuszy stylów w wersji trzeciej.

Niestety nie wszystkie przeglądarki obsługują w pełni CSS 3, dlatego posłużymy się pewnymi sztuczkami, aby efekt docelowy mógł być widoczny dla jak największej ilości odbiorców.

Na potrzeby tego wpisu, stworzyłem sobie prostą stronę z jednym elementem graficznym, oraz warstwą w jego wnętrzu o kolorze czarnym. Jeśli chciałbym teraz aby czarny prostokąt stał się przeźroczysty, wystarczy że zastosuje dla niego następującą klasę CSS:

.transparent
{
  opacity: 0.5;
}

W efekcie otrzymamy przeźroczysty w 50% czarny kwadrat.

CSS 3 Opacity - 100% CSS 3 Opacity - 50%
Przed i po zastosowaniu klasy .transaprent

Właściwość opacity jest jednym z elementów CSS 3, dlatego, aby uodpornić się na inne przeglądarki, dodamy nieco dodatkowych właściwości, które niestety nie są zgodne z specyfikacją CSS w żadnej wersji. Nie mniej, nasza strona będzie poprawnie wyświetlana w większości popularnych przeglądarek (FF, Opera, IE, Chrome, inne oparte o silnik WebKit).

.transparent
{
  opacity: 0.5;
  filter: alpha(opacity=50);
  -moz-opacity: 0.5;
  -khtml-opacity: 0.5;
}
  1. pedro
    17 stycznia 2010 at 09:12 | #1

    Istnieje drobny problem z tym przykładem, który pokazałeś. Nie tylko tło, ale również tekst dostały 50% przeźroczystość, a to jest efekt niepożądany, bo zmniejsza czytelność.

  2. 17 stycznia 2010 at 09:17 | #2

    Prawdopodobnie tekst dziedziczy atrybuty przeźroczystości, spróbuj umieścić go w jakimś elemencie blokowym (np: p lub div) i wymusić że ma być nieprzeźroczysty. Nie sprawdzałem tego ale prawdopodobnie uzyskasz dzięki temu to o czym mówisz.

  3. ips
    1 lutego 2010 at 01:06 | #3

    M@ster :
    Prawdopodobnie tekst dziedziczy atrybuty przeźroczystości, spróbuj umieścić go w jakimś elemencie blokowym (np: p lub div) i wymusić że ma być nieprzeźroczysty. Nie sprawdzałem tego ale prawdopodobnie uzyskasz dzięki temu to o czym mówisz.

    Ja proponuje uzyc dla tla koloru rgba(0,0,0,0.5); Mozna dzieki temu uniknac problemu, ktory opisal pedro.

  1. Brak jeszcze trackbacków