1. Wyłączanie mechanizmu automatycznego skalowania strony
Coraz więcej przeglądarek (np. iOS, Android, Opera Mobile) rozpoznają specjalne elementy meta viewport, które nadpisują mechanizm automatycznego dopasowania strony do ekranu. Wystarczy dodać znacznik w elemencie head dokumentu HTML i zdefiniować w nim określoną szerokość, np. w pikselach lub skali, np. 2.0:
<meta name="viewport" content="initial-scale=2.0,width=device-width" />
Kod w pliku resize.css:
body {
background-color: blue;
}
@media screen and (max-width: 960px) {
body {
background-color: green;
}
}
@media screen and (max-width: 768px) {
body {
background-color: orange;
}
}
@media screen and (max-width: 640px) {
body {
background-color: yellow;
}
}
@media screen and (max-width: 320px) {
body {
background-color: red;
}
}3. Równanie Ethan’a Marcotte’a:
element docelowy : kontekst = wynik * 100
gdzie:
- kontekst – najbardziej zewnętrzny div strony (#wrapper)
- element docelowy – obliczany element (#slider)
- wynik – wartość wprowadzona do arkusza css (%)
przykład:
- #wrapper – 960px
- #slider – 930px
- #slider wynik – 96,875%
Plik index.html w <head>:
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
Uzupełnij index.html po <body>:
<nav> <a href="#" class="menu-icon"><i class="fa fa-bars"></i></a> <ul class="menu"> <li><a href="#">Prezenty</a></li> <li><a href="#">Przepisy</a></li> <li><a href="#">O Mikołaju</a></li> <li><a href="#">Kontakt</a></li> </ul> </nav>
Plik index.html przed </body>:
<!-- <script>
var button = document.getElementsByClassName("menu-icon")[0];
button.onclick = function() {
document.getElementsByClassName("menu")[0].classList.toggle("show");
return false;
}
</script> -->Plik style.css:
nav .menu-icon {
display: none;
margin: 15px 0 0;
font-size:2.5em;
}
Plik resize.css:
nav ul {
display: none;
}
nav ul.show {
display: block;
}
nav .menu-icon {
color: white;
text-decoration: none;
}
nav .menu-icon:hover {
color: #c1c1c1;
}
nav .menu-icon {
display: inline-block;
}
nav ul li {
display: block;
float: none;
padding:0px;
margin:0;
}
nav ul li a {
padding:5px 20px 5px 5px;
}
Responsive Web Design. Projektowanie elastycznych witryn w HTML5 i CSS3