Wyszukaj / o blogu

CSS - Responsive Web Design

Opublikowano pon 06 kwietnia 2020 w css • 2 min read

RWD

RWD - treść stara dopasować sie do wyświetlacza

alternatywnie istnieje jeszcze...

ADW - Adaptive Web Design -> desing w którym na sztywno tworzy się szerokość strony przypisaną do przedziałów szerokości ekranu (np. 600, 900, 1200px). To pod tą ograniczoną ilości szerokości tworzony jest layout, a ten jest wyświetlana dla zdefiniowanych przedziałów szerokości ekranu.

Relatywne jednostki

rem- root element odwołuje się do roota, warto wówczas zdefiniować wysokość w html - domyślnie wynosi 16px

html {
    font-size:20px;
}

Reszta w rem i html zmieniać w zależności od wielkości ekranu

em - odnosi się do rodzica, ale w przypadku rozmiaru fontu inne wartości em odwołają się do bieżącej wartości em danego elementu

% - może odwoływać się do różnych wartości, w przypadku szerokości będzie odwoływać się procentowo do rodzica. Ta sama zasada odwołuje się do wielkości fontu, jednak w przypadku wysokości obiektu wówczas będzie odwoływać się do wielkości fontu danego obiektu.

p {
    font-size: 10%;
    line-height: 120%; // 12px
}

vh - view hight -> przyjmuje wysokość wyświetlacza vw- view width -> przyjmuje szerokość wyświetlacza

1vmin = 1% (przyjmie tą wartość która jest mniejsza) 1vmax = 1wv (przyjmie wartość większą)

Treść jak woda

@media queries - zapytanie o media (ekran)

Ustawienia w html tagu meta w head oraz zdefiniowanie content na width=device-width oznacza, to że treść dopasuje się do szerokości ekranu, na którym dana strona jest przeglądana

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

Zapytanie o wielkość ekranu osoby korzystającej ze strony poprzedzone jest słowem kluczowym @media następnie należy zapisać warunek oraz przypisać konkretne deklaracje do selektorów wskazujące na zachowanie się układu strony w momencie gdy warunek zostanie spełniony

Częścią warunku/reguły może być jedno ze słów kluczowych odwołujących się do urządzenie lub ekranu tv (telewizor), screen (ekran), all (wszystkie), print (drukarki), speech (urządzenia czytające), viewport (ekran/domyślnie) lub inne odwołujące się do jego orientacji pionowej (portrait) lub poziomej (landscape)

orientation=portrait

orientation=landscape

Operatory and/,(or)/not/only

Operator Znaczenie
and oba warunki muszą być spełnione
or przy pomocy przecinka ,
not - spełniony jeśli jest negatywny
only tylko dla

Atrybuty

Atrybut Cecha
min-width minimalna szerokość, od której obowiązują deklaracje
mix-width maksymalna szerokość
min-height minimalna wysokość
max-height maksymalna wysokość

Przykładowe zastosowanie:

@media (min-width: 1024px) {
    aside {
        width: 16vw;
    }
    }

Łączenie przy pomocy operator and

@media (min-width: 768px) and (max-width: 1024px) {
    main {
        width: 80vw;
        /* left: 25vw; */
    }
    aside {
        width: 20vw;
    }
    aside div {
        padding: 25px 2px;
    }
}

Użycie operatora only oraz wskazanie na jedynie ekrany

    @media only screen and (max-width: 600px) {
    body {
        background-color: gray;
    }
    }

Punkty graniczne -> break points

Punkty, w których zmienia się układ strony dla których należy stworzyć kolejne zapytani

Klasyczne punkty graniczne max-width: 600px (smartfon), 768px (tablet), 992px/1024px(tablet poziomo, małe i starsze laptopy), 1200px(większe ekrany)


CSS

Deklaracje dla poszczególnych szerokości ekranu można przechowywać w osobnych plikach css wówczas należy również dodać właściwość media i wpisanie odpowiedniego warunku w tagu link a następnie przypisać mu konkretny css

<link rel="stylesheet" media="(min-width: 640px)" href="min-640px.css">

@media queries w Sass

Można warunki wpisać do zmiennej a następnie je interpolować lub stworzenie mixina, który zastępuje media-query (@content)

    @mixin tablet-up {

    @media only screen (min-width: 768px) { @content; }

    }

Źródła:

https://css-tricks.com/viewport-sized-typography/

https://generatedcontent.org/post/21279324555/viewportunits

https://developers.google.com/web/fundamentals/design-and-ux/responsive?hl=pl

http://blog.kamilbrenk.pl/meta-tag-viewport-kiedy-i-jak-uzywac/

https://getflywheel.com/layout/css-breakpoints-responsive-design-how-to/#:~:text=CSS%20breakpoints%20are%20points%20where,adapts%20to%20the%20screen%20size.

https://www.w3schools.com/howto/howto_css_media_query_breakpoints.asp

Pełna lista zapytań zw. z ekranem

https://www.w3schools.com/cssref/css3_pr_mediaquery.asp