Professional Documents
Culture Documents
Piu C7
Piu C7
asp
1.RWD - VIEWPORT
Viewport-ul este zona pe care o vede un utilizator dintr-o pagină web pe ecran. Viewport-ul
variază în funcție de device fiind mai mic în cazul unui telefon mobil și mai mare pentru
ecranul unui calculator
Odată cu utilizarea tabletelor si telefoanelor mobile paginile web de mărime fixă au fost prea
mari ca să încapă în viewport.
Pentru a înlătura acest inconvenient browser-ele scalează întregul conținut în jos astfel încât
tot conținutul să încapă pe ecranul de dimensiuni mai mici.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
initial-scale=1.0 – setează valoare inițială a nivelului de zoom când pagina este încărcată
prima dată de browser.
Multe pagini web se bazează pe grid-uri ceea ce implică împărțirea paginii în coloane.
Utilizarea grid-urilor ușurează proiectarea paginilor web prin faptul că face mai usoară
plasarea elementelor în pagină.
Exemplul de mai jos arată o pagină responsive cu 2 coloane una de 25% si cealaltă de 75%.
Exemplu
.menu {
width: 25%;
float: left;
}
.main {
width: 75%;
float: left;
}
Exemplul de mai sus este valid în cazul în care pagina web conține doar două coloane.
Dacă dorim să avem grid-uri fluide cu 12 coloane ca să controlăm mai bine pagina web
fiecare coloană va avea un procentaj de 100% / 12 columns = 8.33%.
Vom crea câte o clasă pentru fiecare dintre cele 12 coloane class=”col-” și un număr care
definește numărul de coloane peste care se întinde secțiunea.
CSS
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
CSS
[class*="col-"] {
float: left;
padding: 15px;
border: 1px solid red;
}
Fiecare rând va fi inclus într-un <div>. Numărul de coloane dintr-un rând poate crește până la
maxim 12.
HTML
<div class="row">
<div class="col-3">...</div> <!-- 25% -->
<div class="col-9">...</div> <!-- 75% -->
</div>
Toate coloanele dintr-un rând au opțiunea float left și vor fi scoase în afara flow-ului paginii
astfel încât alte elemente le vor lua locul ca si cum coloanele nu ar exista. Pentru a preveni
acest lucru putem adăuga un stil care să anuleze acest flow.
CSS
.row::after {
content: "";
clear: both;
display: table;
}
exemplu
html {
font-family: "Lucida Sans", sans-serif;
}
.header {
background-color: #9933cc;
color: #ffffff;
padding: 15px;
}
.menu ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.menu li {
padding: 8px;
margin-bottom: 7px;
background-color :#33b5e5;
color: #ffffff;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
.menu li:hover {
background-color: #0099cc;
}
EXEMPLU !!
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
*{
box-sizing: border-box;
}
.row::after {
content: "";
clear: both;
display: table;
}
[class*="col-"] {
float: left;
padding: 15px;
}
html {
font-family: "Lucida Sans", sans-serif;
}
.header {
background-color: #9933cc;
color: #ffffff;
padding: 15px;
}
.menu ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.menu li {
padding: 8px;
margin-bottom: 7px;
background-color: #33b5e5;
color: #ffffff;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
.menu li:hover {
background-color: #0099cc;
}
</style>
</head>
<body>
<div class="header">
<h1>Chania</h1>
</div>
<div class="row">
<div class="col-3 menu">
<ul>
<li>The Flight</li>
<li>The City</li>
<li>The Island</li>
<li>The Food</li>
</ul>
</div>
<div class="col-9">
<h1>The City</h1>
<p>Chania is the capital of the Chania region on the island of Crete. The city can be
divided in two parts, the old town and the modern city.</p>
<p>Resize the browser window to see how the content respond to the resizing.</p>
</div>
</div>
</body>
</html>
3.RWD – MEDIA QUERIES / Interogari media
Media query este o tehnică CSS introdusă în CSS3 care utilizează @media pentru a insera un
bloc de proprietăți CSS care să fie executate doar în cazul în care anumite condiții sunt
îndeplinite.
Exemplu – dacă fereastra de browser este mai mică sau egală cu 600 px culoarea de
background se va modifica în albastru deschis.
Folosind media queries putem defini diverse puncte în funcție de dimensiunea ecranului de la
care design-ul sa se comporte diferit.
Se poate adăuga/utiliza un breakpoint la 768 px, astfel încât atunci când ecranul/fereastra de
browser devine mai mică de 768 px fiecare coloană să aibă lățimea de 100%.
Exemplu
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
@media only screen and (max-width: 768px) {
/* For mobile phones: */
[class*="col-"] {
width: 100%;
}
}
Design mobile first – înseamnă proiectarea interfeței pentru mobil înainte de a proiecta
interfața pentru desktop sau orice alt dispozitiv. Avantajul acestui mod de proiectare este
faptul că pagina se va afișa mai repede pe echipamentele mai mici.
În acest caz trebuie sa modificăm un pic fisierul CSS. Astfel în loc să modificăm stilul în
momentul în care lățimea devine mai mică de 768px vom modifica design-ul în momentul în
care lățimea devine mai mare de 768px.
EXEMPLU
Putem adăuga oricât de multe puncte de breakpoint dorim. În exemplul de mai jos se adaugă
un nou breakpoint pentru tableta. Acest lucru se va realiza prin adăugarea unui nou media
query la 600px și se va adăuga un nou set de clase pentru dispozitive mai mari de 600 px dar
mai mici de 768px.
Exemplu – Se definesc două seturi de clase aproape identice singura diferență fiind numele
col- și col-s-.
HTML exemplu
Pentru desktop prima și a 3-a sectiune se vor extinde fiecare peste 3 coloane iar
sectiunea din mijloc peste 6 coloane.
Pentru tableta – prima secțiune se va extinde peste 3 coloane a doua secțiune peste 9
coloane iar secțiunea a 3-a se va afișa sub cele 2 secțiuni și se va extinde peste 12
coloane.
<div class="row">
<div class="col-3 col-s-3">...</div>
<div class="col-6 col-s-9">...</div>
<div class="col-3 col-s-12">...</div>
</div>
Deoarece există diverse dispozitive cu lungimi și lățimi diferite este destul de greu să definim
breakpoint-uri exacte pentru fiecare dispozitiv. Pentru a fi mai simplu putem defini 5 grupuri
majore.
/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {...}
/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {...}
Un alt mod de a utiliza media-queries este ascunderea/dispariția unor elemente pentru diverse
dimensiuni de ecran.
Media query poate fi utilizat pentru modificare dimensiune font în funcție de dimensiunea
ecranului.
/* If the screen size is 601px or more, set the font-size of <div> to 80px */
@media only screen and (min-width: 601px) {
div.example {
font-size: 80px;
}
}
/* If the screen size is 600px or less, set the font-size of <div> to 30px */
@media only screen and (max-width: 600px) {
div.example {
font-size: 30px;
}
}
Dacă setam proprietatea width a unei imagini ca procent și height auto imaginea va deveni
responsive si se va scala.
Exemplu
img {
width: 100%;
height: auto;
}
Scalarea în exemplul de mai sus se va realiza prin mărire față de dimensiunea originală. O
soluție mai bună este utilizarea proprietății max-width.
Dacă proprietatea max-width este setată la valoarea 100% imaginea se va scala în jos dar nu
va deveni niciodată mai mare decât dimensiunea originală/initială.
Exemplu
img {
max-width: 100%;
height: auto;
}
COD CSS
div {
width: 100%;
height: 400px;
background-image: url('img_flowers.jpg');
background-repeat: no-repeat;
background-size: contain;
border: 1px solid red;
}
COD CSS
div {
width: 100%;
height: 400px;
background-image: url('img_flowers.jpg');
background-size: 100% 100%;
border: 1px solid red;
}
COD CSS
div {
width: 100%;
height: 400px;
background-image: url('img_flowers.jpg');
background-size: cover;
border: 1px solid red;
}
O imagine mare este potrivită și utilă pentru un ecran de calculator dar inutilă pentru un
dispozitiv cu eran mic= telefon mobil. Astfel că în acest caz nu are rost să fie utilizată o
imagine mare care trebuie scalată/micșorată.
Pentru reducerea timpului de încărcare a imaginilor se pot utiliza media queries pentru a afișa
imagini de dimensiuni diferite în funcție de dispozitivul utilizat.
Imagine mare
imagine mica
Exemplu
Putem utiliza min-device-width din media query în loc de min-width, care verifică
lățimea/width echipamentului în loc de lățimea/width ferestrei de browser.
Exemplu
/* For devices smaller than 400px: */
body {
background-image: url('img_smallflower.jpg');
}
Elementul HTML5 <picture> permite definirea de imagini diverse din surse diferite și
funcționeaza asemănător elementelor <video> și <audio>.
Exemplu
<picture>
<source srcset="img_smallflower.jpg" media="(max-width: 400px)">
<source srcset="img_flowers.jpg">
<img src="img_flowers.jpg" alt="Flowers">
</picture>
Atributul srcset este necesar și definește sursa imaginii. Atributul media este opțional și
acceptă media querie-urile definite în CSS @media.
Este necesară și definirea unui element <img> pentru browser-ele care nu recunosc elementul
<picture>.