Szukaj…


Wprowadzenie

Zmienne CSS pozwalają autorom tworzyć wartości wielokrotnego użytku, które mogą być używane w całym dokumencie CSS.

Na przykład w CSS często stosuje się jeden kolor w całym dokumencie. Przed zmiennymi CSS oznaczałoby to wielokrotne użycie tej samej wartości koloru w dokumencie. Za pomocą Zmiennych CSS wartość koloru można przypisać do zmiennej i odwoływać się do niej w wielu miejscach. Ułatwia to zmienianie wartości i jest bardziej semantyczne niż stosowanie tradycyjnych wartości CSS.

Składnia

  • : root {} / * pseudoklasa, która pozwala na bardziej globalną definicję zmiennych * /
  • --variable-name: wartość ; / * zdefiniuj zmienną * /
  • var (- nazwa zmiennej, wartość domyślna ) / * użyj zdefiniowanej zmiennej z rezerwową wartością domyślną * /

Uwagi

Zmienne CSS są obecnie uważane za technologię eksperymentalną.


WSPARCIE PRZEGLĄDARKI / KOMPATYBILNOŚĆ

Firefox: wersja 31 + (domyślnie włączona)

Więcej informacji z Mozilli

Chrome: wersja 49 + (domyślnie włączona) .

„Tę funkcję można włączyć do testowania w wersji 48 Chrome, włączając experimental Web Platform funkcję experimental Web Platform . Wpisz chrome://flags/ na pasku adresu Chrome, aby uzyskać dostęp do tego ustawienia.”

IE: nieobsługiwany.

Edge: Under Development

Safari: wersja 9.1+

Zmienny kolor

:root {
  --red: #b00;
  --blue: #4679bd;
  --grey: #ddd;
}
.Bx1 {
  color: var(--red);
  background: var(--grey);
  border: 1px solid var(--red);
}

Zmienne wymiary

:root {
  --W200: 200px;
  --W10: 10px;
}
.Bx2 {
  width: var(--W200);
  height: var(--W200);
  margin: var(--W10);
}

Zmienna kaskada

Zmienne CSS kaskadowo działają podobnie jak inne właściwości i można je bezpiecznie przekształcić.

Możesz zdefiniować zmienne wiele razy i tylko definicja o najwyższej specyficzności będzie zastosowana do wybranego elementu.

Zakładając ten HTML:

<a class="button">Button Green</a>
<a class="button button_red">Button Red</a>
<a class="button">Button Hovered On</a>

Możemy napisać ten CSS:

.button {
  --color: green;
  padding: .5rem;
  border: 1px solid var(--color);
  color: var(--color);
}

.button:hover {
  --color: blue;
}

.button_red {
  --color: red;
}

I uzyskaj ten wynik:

Trzy warianty przycisków

Prawidłowe / nieprawidłowe

Nazywanie Nazwy zmiennych CSS zawierają tylko litery i myślniki, podobnie jak inne właściwości CSS (np .: wysokość linii, -moz-box-zmiana rozmiaru), ale powinny zaczynać się od podwójnych myślników (-)

//These are Invalids variable names
--123color: blue;
--#color: red;
--bg_color: yellow
--$width: 100px;

//Valid variable names
--color: red;
--bg-color: yellow
--width: 100px;

W zmiennych CSS rozróżniana jest wielkość liter.

/* The variable names below are all different variables */
--pcolor: ;
--Pcolor: ;
--pColor: ;

Pusta przestrzeń Vs

/* Invalid */
    --color:;

/* Valid */
  --color: ; /* space is assigned */

Konkatenacje

    /* Invalid - CSS doesn't support concatenation*/
    .logo{
        --logo-url: 'logo';
        background: url('assets/img/' var(--logo-url) '.png');
    }

    /* Invalid - CSS bug */
    .logo{
        --logo-url: 'assets/img/logo.png';
        background: url(var(--logo-url));
    }

    /* Valid */
    .logo{
        --logo-url: url('assets/img/logo.png');
        background: var(--logo-url);
    }

Ostrożnie podczas korzystania z jednostek

    /* Invalid */
    --width: 10;
    width: var(--width)px;

    /* Valid */
    --width: 10px;
    width: var(--width);

    /* Valid */
    --width: 10;
    width: calc(1px * var(--width)); /* multiply by 1 unit to convert */
    width: calc(1em * var(--width));

Z zapytaniami o media

Możesz ponownie ustawić zmienne w zapytaniach o media i sprawić, by te nowe wartości były kaskadowane wszędzie tam, gdzie są używane, co jest niemożliwe w przypadku zmiennych przedprocesowych.

Tutaj zapytanie o media zmienia zmienne użyte do utworzenia bardzo prostej siatki:

HTML

<div></div>
<div></div>
<div></div>
<div></div>

CSS

:root{
    --width: 25%;
    --content: 'This is desktop';
}
@media only screen and (max-width: 767px){
    :root{
        --width:50%;
        --content: 'This is mobile';
    }
}
@media only screen and (max-width: 480px){
    :root{
        --width:100%;
    }
}

div{
    width: calc(var(--width) - 20px);
    height: 100px;
}
div:before{
    content: var(--content);
}

/* Other Styles */
body {
    padding: 10px;
}

div{
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight:bold;
    float:left;
    margin: 10px;
    border: 4px solid black;
    background: red;
}

Możesz spróbować zmienić rozmiar okna w tej wersji demonstracyjnej CodePen

Oto animowany zrzut ekranu zmiany rozmiaru w akcji:

Zmiana rozmiaru ekranu



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow