Blog (10)
Komentarze (45)
Recenzje (0)

Słów kilka o RWD... czyli od czego zacząć

@HitcHSłów kilka o RWD... czyli od czego zacząć19.05.2015 00:13

Czym jest to (nie)szczęsne RWD?

RWD to technika projektowania stron w taki sposób, aby dostosowywały się do urządzenia, dzięki czemu możemy na telefonie oglądać równie (lub mniej) funkcjonalną stronę jak na PC.

Nie jest to takie hop siup zrobić dobrą stronę RWD, a przy rozbudowanych serwisach wygodniejszym rozwiązaniem jest aplikacja mobilna. Ale nie wybiegajmy za daleko i skupmy się na podstawach RWD.

Czas start!

Na początek musimy sprawić, żeby nasza strona chciała się skalować na różnych urządzeniach. Używamy do tego specjalnego meta tagu:

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

Możemy również zablokować powiększanie, ale nie polecam :)

Mobile first

Pewnie nie raz słyszeliście to określenie - wiele frameworków reklamuje się, że są mobile first. Ale co to tak na prawdę znaczy i czemu warto się stosować do tego?

Zacznijmy od przykładu, zwykła strona którą właśnie tworzymy:

<div class="container">    
<div class="sidebar"></div>    
<div class="content"></div>
</div>

I CSS:

.container {    width: 100%;    max-width: 1200px;    margin: 0 auto;}
.sidebar {    width: 25%;    float: left;}
.content {    width: 75%;    float: right;}

Standardowy, prosty kod. Ale strona nie jest responsywna - na małym ekranie nadal będzie sidebar i content obok siebie.

Dodajmy teraz media queries.

  
@media screen and (max-width: 480px) {     
 .sidebar {          width: 100%;          float: none;      }      
.content {          width: 100%;          float: none;    }
}

I w tym momencie zachęcę Was do korzystania z mixinów w scss. Czy nie prostszy byłby taki zapis:

.container {   
 width: 100%;   
 max-width: 1200px;    
margin: 0 auto;
}
.sidebar {    
width: 25%;    
float: left;    
@include breakpoint(480) {        
float: none;        
width: 100%;    
}
}.content {    
width: 75%;    
float: right;    
@include breakpoint(480) {        
float: none;        
width: 100%;   
 }
}

Wygląda zdecydowanie lepiej - od razu widzimy jak dana klasa ma się zachować w innej rozdzielczości. Ale to nie jest mobile first.

Nadal wychodzimy od PC i zmniejszamy razem ze zmniejszaniem ekranu.

A w mobile first chodzi o to, żebyśmy zaczęli od telefonu. Dostajemy grafikę (wersję desktop tylko) i musimy sobie wyobrazić jak ma się zachować na telefonie/tablecie. Idziemy od mniejszej rozdzielczości (np. 480px) do większej (768px), stosujemy min-width, a nie max-width.

Czyli np. zamiast układu sidebar | content ma być przycisk menu i content.

Przeróbmy trochę nasz kod zatem.


.container {
	width: 100%;
	max-width: 1200px;

	margin:0 10px // (ustawmy sobie margines na zmniejszych ekranach na 10px, żeby nie przylegalo do krawędzi)    @include breakpoint(desktop) {
		margin: 0 auto;
		(a teraz go usuwamy i centrujemy stronę na 1200px +)
	}
}
.sidebar {
	display: none;

	// (ma nie być na małych ekranach więc chowamy)    @include breakpoint(tabletbig) {
		// powiedzmy, że na 980px+ czyli tablet 10" już ma być widoczne        display: block;
		width: 30% // (i ma zajmować 30%)        float:left;
	}
	@include breakpoint(desktop) {
		width: 25%;
		// a na 1200+ ma być już nasze domyślne 25%
	}
}
.content {
	width: 100%;

	// na małych ekranach na całą szerokość    @include breakpoint(tabletbig) {
		float: left;
		width: 70%;
	}
	@include breakpoint(desktop) {
		width: 75%;
		// a na 1200+ ma być już nasze domyślne 75%
	}
}
.menu-btn {
	position: absolute;
	top: 0;
	left: 0;

	@include breakpoint(tablet_big) {
		display: none;
		// wkońcu na tablecie 10" mamy już menu to przycisk niepotrzebny
	}

I odpowiedni mixin do tego (znaleziony gdzieś w sieci, ale ładnie się sprawdza)

@mixin breakpoint($point) {
		@if $point == desktopbig {
			@media (min-width:1400px) {
				@content;
			}
		}
		@else if $point == desktop {
			@media (min-width:1200px) {
				@content;
			}
		}
		@else if $point == tablet {
			@media (min-width:768px) {
				@content;
			}
		}
		@else if $point == tabletbig {
			@media (min-width:980px) {
				@content;
			}
		}
		@else if $point == phone_big {
			@media (min-width:480px) {
				@content;
			}
		}
		@else if $point == phone {
			@media (max-width:320px) {
				@content;
			}
		}
	}

Co nam to daje? Najważniejsze i wg. mnie najkorzystniejsze to, że nie musimy nadpisywać stylów, co czasem potrafiło być irytujące (np. dlaczego nadal mi bierze z tego, skoro w media jest inaczej!?). Drugi powód - mamy lepszą kontrole nad tym co dzieje się na danym ekranie (co po części wiąże się z 1.)

Jednak to czy będziesz się stosować do mobile first zależy od Ciebie. Wiem po sobie, że ciężko przejść, ale gdy dostałem większy projekt to sam to zrobiłem bez namowy bo szybciej(!), mimo prawie skończonej pracy, było mi dostosować projekt pod mobile first niż nadpisywać css media queries dla mniejszych rozdzielczości.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.