Задание по HTML к одиннадцатому уроку

Автор: | 22.09.2015

Шаблон главной страницы 

Примеры адаптивной верстки по ссылке1  и ссылке2  

код HTML

  1. <html>
  2. <head>
  3. <title>4 урок</title>
  4. <meta charset="utf-8">
  5. <link rel="stylesheet" href="style.css">
  6. <link rel="stylesheet" href="style.css" media="screen">
  7. <meta name="viewport" content="width=device-width, initial-scale=1" >
  8. </head>
  9. <body>
  10. <div class="wrapper">
  11. <div class="header">Блочный тег</div>
  12. <div class="sidebar"></div>
  13. <div class="content">
  14. <div class="col-3"><img src="images/colorwebdesign.jpg"></div>
  15. <div class="col-3">Блочный тег</div>
  16. <div class="col-3">Блочный тег</div>
  17. <div class="col-2"><img src="images/colorwebdesign.jpg"></div>
  18. <div class="col-2">Блочный тег</div>
  19. <div class="col-4">Блочный тег</div>
  20. <div class="col-4">Блочный тег</div>
  21. <div class="col-4">Блочный тег</div>
  22. <div class="col-4"><img src="images/colorwebdesign.jpg"></div>
  23. </div>
  24. <div class="footer"></div>
  25. </div>
  26. </body>
  27. </html>
<html>
    <head> 
       <title>4 урок</title>
     <meta charset="utf-8">
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="style.css" media="screen">
    <meta name="viewport" content="width=device-width, initial-scale=1" >		
  </head>
    
  <body> 
  <div class="wrapper">
    <div class="header">Блочный тег</div>
    <div class="sidebar"></div>
    <div class="content">
      <div class="col-3"><img src="images/colorwebdesign.jpg"></div>
      <div class="col-3">Блочный тег</div>
      <div class="col-3">Блочный тег</div>
      <div class="col-2"><img src="images/colorwebdesign.jpg"></div>
      <div class="col-2">Блочный тег</div>
      <div class="col-4">Блочный тег</div>
      <div class="col-4">Блочный тег</div>
      <div class="col-4">Блочный тег</div>
      <div class="col-4"><img src="images/colorwebdesign.jpg"></div>
    </div>
    <div class="footer"></div>
  </div>	
  </body>
</html>

код CSS

  1. body{
  2. font:100%/1.5em Arial,sans-serif;
  3. word-wrap: break-word;
  4. }
  5. .wrapper{
  6. max-width:90%;
  7. margin:0 auto;
  8. }
  9. .header{
  10. width:100%;
  11. clear:both;
  12. height:100px;
  13. background:#222;
  14. }
  15. .sidebar{
  16. width:300px;
  17. float:left;
  18. height:300px;
  19. background:#444;
  20. }
  21. .content{
  22. width:calc(100% - 300px);
  23. float:left;
  24. background:#777;
  25. }
  26. .footer{
  27. width:100%;
  28. clear:both;
  29. height:100px;
  30. background:#222;
  31. }
  32. .col-2{
  33. margin:2%;
  34. width:46%;
  35. float:left;
  36. background:blue;
  37. color:#fff;
  38. height:300px;
  39. }
  40. .col-3{
  41. margin:2%;
  42. width:29%;
  43. float:left;
  44. background:green;
  45. color:#fff;
  46. height:300px;
  47. }
  48. .col-4{
  49. margin:2%;
  50. width:21%;
  51. float:left;
  52. background:pink;
  53. color:#fff;
  54. height:300px;
  55. }
  56. img{
  57. max-width:100%;
  58. width:auto;
  59. }
body{
  font:100%/1.5em Arial,sans-serif;
  word-wrap: break-word; 
}
.wrapper{
  max-width:90%;
  margin:0 auto;
}
.header{
  width:100%;
  clear:both;
  height:100px;
  background:#222;
  
}


.sidebar{
  width:300px;
  float:left;
  height:300px;
  background:#444;
  
}
.content{
  width:calc(100% - 300px);
  float:left;
  background:#777;
  
}
.footer{
  width:100%;
  clear:both;
  height:100px;
  background:#222;
}
.col-2{
  margin:2%;
  width:46%;
  float:left;
  background:blue;
  color:#fff;
  height:300px;
}
.col-3{
  margin:2%;
  width:29%;
  float:left;
  background:green;
  color:#fff;
  height:300px;
}
.col-4{
  margin:2%;
  width:21%;
  float:left;
  background:pink;
  color:#fff;
  height:300px;
}
img{
  max-width:100%;
  width:auto;
}

 

Модальное окно

  1. <!DOCTYPE html>
  2. <head>
  3. <title>Creating a modal window with HTML5 &amp; CSS3</title>
  4. <style>
  5. .modalDialog {
  6. position: fixed;
  7. font-family: Arial, Helvetica, sans-serif;
  8. top: 0;
  9. right: 0;
  10. bottom: 0;
  11. left: 0;
  12. background: rgba(0,0,0,0.8);
  13. z-index: 99999;
  14. opacity:0;
  15. -webkit-transition: opacity 400ms ease-in;
  16. -moz-transition: opacity 400ms ease-in;
  17. transition: opacity 400ms ease-in;
  18. pointer-events: none;
  19. }
  20. .modalDialog:target {
  21. opacity:1;
  22. pointer-events: auto;
  23. }
  24. .modalDialog > div {
  25. width: 400px;
  26. position: relative;
  27. margin: 10% auto;
  28. padding: 5px 20px 13px 20px;
  29. border-radius: 10px;
  30. background: #fff;
  31. background: -moz-linear-gradient(#fff, #999);
  32. background: -webkit-linear-gradient(#fff, #999);
  33. background: -o-linear-gradient(#fff, #999);
  34. }
  35. .close {
  36. background: #606061;
  37. color: #FFFFFF;
  38. line-height: 25px;
  39. position: absolute;
  40. right: -12px;
  41. text-align: center;
  42. top: -10px;
  43. width: 24px;
  44. text-decoration: none;
  45. font-weight: bold;
  46. -webkit-border-radius: 12px;
  47. -moz-border-radius: 12px;
  48. border-radius: 12px;
  49. -moz-box-shadow: 1px 1px 3px #000;
  50. -webkit-box-shadow: 1px 1px 3px #000;
  51. box-shadow: 1px 1px 3px #000;
  52. }
  53. .close:hover { background: #00d9ff; }
  54. </style>
  55. </head>
  56. <body>
  57. <a href="#openModal">Open Modal</a>
  58. <div id="openModal" class="modalDialog">
  59. <div>
  60. <a href="#close" title="Close" class="close">X</a>
  61. <h2>Modal Box</h2>
  62. <p>This is a sample modal box that can be created using the powers of CSS3.</p>
  63. <p>You could do a lot of things here like have a pop-up ad that shows when your website loads, or create a login/register form for users.</p>
  64. </div>
  65. </div>
  66. </body>
  67. </html>
<!DOCTYPE html>
<head>
  <title>Creating a modal window with HTML5 &amp; CSS3</title>
  
  <style>
  .modalDialog {
    position: fixed;
    font-family: Arial, Helvetica, sans-serif;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: rgba(0,0,0,0.8);
    z-index: 99999;
    opacity:0;
    -webkit-transition: opacity 400ms ease-in;
    -moz-transition: opacity 400ms ease-in;
    transition: opacity 400ms ease-in;
    pointer-events: none;
  }

  .modalDialog:target {
    opacity:1;
    pointer-events: auto;
  }

  .modalDialog > div {
    width: 400px;
    position: relative;
    margin: 10% auto;
    padding: 5px 20px 13px 20px;
    border-radius: 10px;
    background: #fff;
    background: -moz-linear-gradient(#fff, #999);
    background: -webkit-linear-gradient(#fff, #999);
    background: -o-linear-gradient(#fff, #999);
  }

  .close {
    background: #606061;
    color: #FFFFFF;
    line-height: 25px;
    position: absolute;
    right: -12px;
    text-align: center;
    top: -10px;
    width: 24px;
    text-decoration: none;
    font-weight: bold;
    -webkit-border-radius: 12px;
    -moz-border-radius: 12px;
    border-radius: 12px;
    -moz-box-shadow: 1px 1px 3px #000;
    -webkit-box-shadow: 1px 1px 3px #000;
    box-shadow: 1px 1px 3px #000;
  }

  .close:hover { background: #00d9ff; }
  </style>
</head>

<body>

<a href="#openModal">Open Modal</a>

<div id="openModal" class="modalDialog">
  <div>
    <a href="#close" title="Close" class="close">X</a>
    <h2>Modal Box</h2>
    <p>This is a sample modal box that can be created using the powers of CSS3.</p>
    <p>You could do a lot of things here like have a pop-up ad that shows when your website loads, or create a login/register form for users.</p>
  </div>
</div>

</body>
</html>

 

Задание

Создать простую фотогалерею, которая будет хорошо отображаться на различных экранах устройств.

1. Для начала создать обычное изображение, которое будет растягиваться на всю ширину экрана.

  1. <div>
  2. <img src="../images/1.jpg">
  3. </div>
<div>
    <img src="../images/1.jpg">
</div>

Предельно просто. Всего лишь обернули изображение в контейнер.

  1. div {
  2. width: 100%;
  3. text-align: center;
  4. }
  5. div img {
  6. width: 100%;
  7. height: auto;
  8. }
div {
    width: 100%;
    text-align: center;
}
div img {
    width: 100%;
    height: auto;
}

Мы задаем ширину изображению, равную ширине контейнера div. Благодаря этому, если уменьшается div, то уменьшается img.
В итоге мы получили изображение, которое растягивается на весь экран, будь-то экран 320*240 пикселей или экран с разрешением 1920*1080 пикселей.

Untitled-68

Максимальная и минимальная ширина
Как видно в примере, если у нас очень большой экран или наоборот очень маленький, то изображение будет либо слишком сильно растягиваться с потерей качества, либо слишком сильно сжиматься.
Чтобы решить данную проблему зададим изображению определенную максимальную и минимальную ширину.

  1. div {
  2. margin: 0 auto;
  3. width: 1000px;
  4. max-width: 90%; /* контейнер не превышает 90% ширины экрана */
  5. min-width: 500px;
  6. }
  7. div img {
  8. max-width: 100%;
  9. height: auto;
  10. }
div {
    margin: 0 auto;
    width: 1000px;
    max-width: 90%; /* контейнер не превышает 90% ширины экрана */
    min-width: 500px;
}
div img {
    max-width: 100%;
    height: auto;
}

Теперь контейнер, а следовательно и изображение будут изменяться в разумных пределах от 500 до 1000 пикселей по ширине.

Фотогалерея
2. Попробуем создать минигалерею.
Будем использовать уже известные нам принципы.

  1. <div class="image_gallery">
  2. <div>
  3. <img src="../images/1.jpg" title="Деревья, листики..." />
  4. </div>
  5. <div>
  6. <img src="../images/2.jpg" title="Зима" />
  7. </div>
  8. <div>
  9. <img src="../images/3.jpg" title="Озеро" />
  10. </div>
  11. <div>
  12. <img src="../images/4.jpg" title="Райский остров" />
  13. </div>
  14. </div>
<div class="image_gallery">
    <div>
        <img src="../images/1.jpg" title="Деревья, листики..." />
    </div>
    <div>
        <img src="../images/2.jpg" title="Зима"  />
    </div>
    <div>
        <img src="../images/3.jpg" title="Озеро"  />
    </div>
    <div>
        <img src="../images/4.jpg" title="Райский остров"  />
    </div>
</div>

В HTML мы лишь добавили несколько изображений и завернули все в один div.

  1. div.image_gallery {
  2. margin: 0 auto;
  3. width: 1000px;
  4. text-align: center;
  5. max-width: 90%; /* контейнер не превышает 90% ширины экрана */
  6. min-width: 500px;
  7. }
  8. img {
  9. float: left;
  10. max-width: 48%;
  11. height: auto;
  12. padding: 1%; /* небольшие оступы для изображений */
  13. }
div.image_gallery {
    margin: 0 auto;
    width: 1000px;
    text-align: center;
    max-width: 90%; /* контейнер не превышает 90% ширины экрана */
    min-width: 500px;
}
img {
    float: left;
    max-width: 48%;
    height: auto;
    padding: 1%; /* небольшие оступы для изображений */
}

Каждое изображение в галерее теперь будет изменять свой размер в зависимости от контейнера. Так же мы добавили небольшой отступ по 1% с каждой стороны для красоты.

Untitled-69

Итог
Итак, мы создали маленькую фотогалерею, которая хорошо отображается на различных экранах. Мы добились адаптивности.
Но это еще не все.
В данном примере можно выделить большой минус: на мелких экранах изображения будут либо слишком мелкими, либо появится скролл в браузере.

 

Задание 2

Доработать галерею используя медиа запросы:

  1. <h1>...</h1>
  2. <div class="image_gallery">
  3. <div>
  4. <img src="../images/1.jpg" title="Деревья, листики..." />
  5. </div>
  6. <div>
  7. <img src="../images/2.jpg" title="Зима" />
  8. </div>
  9. ...
  10. </div>
<h1>...</h1>
<div class="image_gallery">
    <div>
        <img src="../images/1.jpg" title="Деревья, листики..." />
    </div>
    <div>
        <img src="../images/2.jpg" title="Зима"  />
    </div>
    ...
</div>
  1. h1 {
  2. font-size: 24px;
  3. text-align: center;
  4. }
  5. div.image_gallery {
  6. margin: 0 auto;
  7. width: 1000px;
  8. text-align: center;
  9. max-width: 90%; /* контейнер не превышает 90% ширины экрана */
  10. min-width: 500px;
  11. }
  12. img {
  13. float: left;
  14. max-width: 31%;
  15. height: auto;
  16. padding: 1%; /* небольшие оступы для изображений */
  17. }
h1 {
    font-size: 24px;
    text-align: center;
}
div.image_gallery {
    margin: 0 auto;
    width: 1000px;
    text-align: center;
    max-width: 90%; /* контейнер не превышает 90% ширины экрана */
    min-width: 500px;
}
img {
    float: left;
    max-width: 31%;
    height: auto;
    padding: 1%; /* небольшие оступы для изображений */
}

Что получилось? Смотрим:

Untitled-70

При небольшом разрешении картинки становятся слишком мелкими, а текст в заголовке огромным.
Решим нашу проблему!

  1. /* прошлый CSS */
  2. h1 {}
  3. div.image_gallery {}
  4. img {}
  5. @media screen and (max-width: 768px) { /* разрешение планшета */
  6. h1 {
  7. font-size: 20px;
  8. }
  9. div.image_gallery {
  10. min-width: 320px;
  11. }
  12. img {
  13. max-width: 48%; /* 2 изображения в ряд */
  14. height: auto;
  15. padding: 1%; /* небольшие оступы для изображений */
  16. }
  17. }
/* прошлый CSS */
h1 {}
div.image_gallery {}
img {}
 
@media screen and (max-width: 768px) { /* разрешение планшета */
    h1 {
        font-size: 20px;
    }
    div.image_gallery {
        min-width: 320px;
    }
    img {
        max-width: 48%; /* 2 изображения в ряд */
        height: auto;
        padding: 1%; /* небольшие оступы для изображений */
    }
}

Мы добавили проверку на разрешение. Если разрешение экрана меньше или равно 768 пикселей, то наша галерея перестраивается. В ряд у нас умещается теперь по 2 изображения (width 48% + padding 2%).

Untitled-71

В результате фотографии на экране планшета стали выглядеть намного лучше!

Теперь разберемся с экраном поменьше.

  1. @media screen and (max-width: 480px) { /* разрешение смартфона */
  2. h1 {
  3. min-width: 320px;
  4. font-size: 16px;
  5. }
  6. div.image_gallery {
  7. width: 320px;
  8. min-width: 320px;
  9. }
  10. img {
  11. max-width: 98%;
  12. height: auto;
  13. padding: 1%; /* небольшие оступы для изображений */
  14. }
  15. }
@media screen and (max-width: 480px) { /* разрешение смартфона */
    h1 {
        min-width: 320px;
        font-size: 16px;
    }
    div.image_gallery {
        width: 320px;
        min-width: 320px;
    }
    img {
        max-width: 98%;
        height: auto;
        padding: 1%; /* небольшие оступы для изображений */
    }
}

После добавления этого кода при разрешении экрана меньше либо равного 480 пикселей, изображения вновь перестраиваются и теперь отображаются по одному в ряд.

Untitled-72

Итог
Теперь мы имеет фотогалерею, которая удобно подстраивается под устройства. При желании можно добавить и другие разрешения (320 пкс, 960 пкс и т.д.).
Ничего сложного и такая хорошая возможность подстроить наш сайт под разные экраны!

 

  1. <h1>...</h1>
  2. <div class="image_gallery">
  3. <div>
  4. <img src="../images/1.jpg" title="Деревья, листики..." />
  5. </div>
  6. <div>
  7. <img src="../images/2.jpg" title="Зима" />
  8. </div>
  9. ...
  10. </div>
<h1>...</h1>
<div class="image_gallery">
    <div>
        <img src="../images/1.jpg" title="Деревья, листики..." />
    </div>
    <div>
        <img src="../images/2.jpg" title="Зима"  />
    </div>
    ...
</div>
  1. h1 {
  2. font-size: 24px;
  3. text-align: center;
  4. }
  5. div.image_gallery {
  6. margin: 0 auto;
  7. width: 1000px;
  8. text-align: center;
  9. max-width: 90%; /* контейнер не превышает 90% ширины экрана */
  10. min-width: 500px;
  11. }
  12. img {
  13. float: left;
  14. max-width: 31%;
  15. height: auto;
  16. padding: 1%; /* небольшие оступы для изображений */
  17. }
h1 {
    font-size: 24px;
    text-align: center;
}
div.image_gallery {
    margin: 0 auto;
    width: 1000px;
    text-align: center;
    max-width: 90%; /* контейнер не превышает 90% ширины экрана */
    min-width: 500px;
}
img {
    float: left;
    max-width: 31%;
    height: auto;
    padding: 1%; /* небольшие оступы для изображений */
}

Что получилось? Смотрим:

Untitled-70

При небольшом разрешении картинки становятся слишком мелкими, а текст в заголовке огромным.
Решим нашу проблему!

  1. /* прошлый CSS */
  2. h1 {}
  3. div.image_gallery {}
  4. img {}
  5. @media screen and (max-width: 768px) { /* разрешение планшета */
  6. h1 {
  7. font-size: 20px;
  8. }
  9. div.image_gallery {
  10. min-width: 320px;
  11. }
  12. img {
  13. max-width: 48%; /* 2 изображения в ряд */
  14. height: auto;
  15. padding: 1%; /* небольшие оступы для изображений */
  16. }
  17. }
/* прошлый CSS */
h1 {}
div.image_gallery {}
img {}
 
@media screen and (max-width: 768px) { /* разрешение планшета */
    h1 {
        font-size: 20px;
    }
    div.image_gallery {
        min-width: 320px;
    }
    img {
        max-width: 48%; /* 2 изображения в ряд */
        height: auto;
        padding: 1%; /* небольшие оступы для изображений */
    }
}

Мы добавили проверку на разрешение. Если разрешение экрана меньше или равно 768 пикселей, то наша галерея перестраивается. В ряд у нас умещается теперь по 2 изображения (width 48% + padding 2%).

Untitled-71

В результате фотографии на экране планшета стали выглядеть намного лучше!

Теперь разберемся с экраном поменьше.

  1. @media screen and (max-width: 480px) { /* разрешение смартфона */
  2. h1 {
  3. min-width: 320px;
  4. font-size: 16px;
  5. }
  6. div.image_gallery {
  7. width: 320px;
  8. min-width: 320px;
  9. }
  10. img {
  11. max-width: 98%;
  12. height: auto;
  13. padding: 1%; /* небольшие оступы для изображений */
  14. }
  15. }
@media screen and (max-width: 480px) { /* разрешение смартфона */
    h1 {
        min-width: 320px;
        font-size: 16px;
    }
    div.image_gallery {
        width: 320px;
        min-width: 320px;
    }
    img {
        max-width: 98%;
        height: auto;
        padding: 1%; /* небольшие оступы для изображений */
    }
}

После добавления этого кода при разрешении экрана меньше либо равного 480 пикселей, изображения вновь перестраиваются и теперь отображаются по одному в ряд.

Untitled-72

Итог
Теперь мы имеет фотогалерею, которая удобно подстраивается под устройства. При желании можно добавить и другие разрешения (320 пкс, 960 пкс и т.д.).
Ничего сложного и такая хорошая возможность подстроить наш сайт под разные экраны!