Рубрика: HTML,CSS

  • Задание по HTML к седьмому уроку

    Пример работы 7 урок

    https://ot7.ru/html/7

     

    Работа с иконками

    Чтобы вставить иконки на сайт,необходимо подключить их, для этого перейдите по ссылке http://fortawesome.github.io/Font-Awesome/get-started/, скопируйте тег линк и разместите его в контейнер head

    Все иконки здесь: http://fortawesome.github.io/Font-Awesome/icons/.

     

    Эффекты для фото.

    Попробуйте создать собственную галерию на странице galereya.html с фотографиями.

    1. Переходи к эфектам первый эффект увеличение. Стиль:

    /*GROW*/
    .grow img {
    height: 300px;
    width: 300px;
    
    -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -o-transition: all 1s ease;
    -ms-transition: all 1s ease;
    transition: all 1s ease;
    }
    
    .grow img:hover {
    width: 400px;
    height: 400px;
    }

    И между тегами <body></body> изображение к которому нам небходимо применить стиль:

    <div class="grow pic">
    <img src="gorod.jpg" alt="portrait">
    </div>

    Результат:

    Untitled-33

    Само по себе изображение 400х400px, но мы его подгоняем под размеры блока 300x300px и указываем transition свойство, означающее что другие свойства будут изменяться плавно в течении одной секунды. Так как нам необходимо увеличение изображение то при наведении оно возвращается к исходным размерам.

    2. Второй эффект Это абсолютно противоположный эффект. Изначально изображение в полноценном размере, а при наведении уменьшается до 300х300px. таким образом создается эффект сжатия.
    Стиль:

    /*SHRINK*/
    .shrink img {
    height: 400px;
    width: 400px;
    
    -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -o-transition: all 1s ease;
    -ms-transition: all 1s ease;
    transition: all 1s ease;
    }
    
    .shrink img:hover {
    width: 300px;
    height: 300px;
    }

    И

    <div class="shrink pic">
    <img src="gorod1.jpg" alt="city">
    </div>

    Untitled-34

    3. Горизонтальное смещение, при наведении картинка смещается горизонтально в сторону.

    <div class="sidepan pic">
    <img src="gorod2.jpg" alt="kick"><br>
    </div>
    Стиль:
    /*SIDEPAN*/
    .sidepan img {
    margin-left: 0px;
    -webkit-transition: margin 1s ease;
    -moz-transition: margin 1s ease;
    -o-transition: margin 1s ease;
    -ms-transition: margin 1s ease;
    transition: margin 1s ease;
    }
    
    .sidepan img:hover {
    margin-left: -200px;
    }

    Все с помощью того же свойства transition мы плавно меняем, но уже свойство margin. При наведении смещаем картинку влево на 200px.

    Untitled-35

    4. Вертикальное смещение аналогичен предыдущему:

    <div class="vertpan pic">
    <img src="gorod3.jpg" alt="climb">
    </div>

    И стиль:

    /*VERTPAN*/
    .vertpan img {
    margin-top: 0px;
    -webkit-transition: margin 1s ease;
    -moz-transition: margin 1s ease;
    -o-transition: margin 1s ease;
    -ms-transition: margin 1s ease;
    transition: margin 1s ease;
    }
    
    .vertpan img:hover {
    margin-top: -200px;
    }

    Untitled-36

    5. Еще один эффект используя свойство transform , создадим наклон изображения, небольшой поворот изображения в результате наведения курсора мыши, повернув изображение на десять градусов.

    <div class="tilt pic">
    <img src="gorod4.jpg" alt="car">
    </div>

    Стиль:

    /*TILT*/
    .tilt {
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    -ms-transition: all 0.5s ease;
    transition: all 0.5s ease;
    }
    
    .tilt:hover {
    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    transform: rotate(-10deg);
    }

    обратите внимание, что эффект нацелен на сам класс, а не на изображение.

    Untitled-37

    6. Когда пользователь наводит на изображение, оно начинает вращаться. Пока изображение вращается, блок див трансформируется в круг.

    <div class="morph pic">
    <img src="gorod6.jpg" alt="beach">
    </div>

    И

    /*MORPH*/
    .morph {
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    -ms-transition: all 0.5s ease;
    transition: all 0.5s ease;
    }
    
    .morph:hover {
    border-radius: 50%;
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    transform: rotate(360deg);
    }

    Суть заключается в том, что для классы morph вращается на 360 градусов при наведении курсора мыши. В это же время, border-radius принимает значение 50%, в результате чего получается круг.

    Untitled-38

    7. Подобный эффект предыдущему, однако вращения не будет просто изображение закруглим и увеличим толщину границы.

    <div class="focus pic">
    <img src="gorod5.jpg" alt="cricket">
    </div>

    Стиль:

    /*FOCUS*/
    .focus {
    -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -o-transition: all 1s ease;
    -ms-transition: all 1s ease;
    transition: all 1s ease;
    }
    
    .focus:hover {
    border: 70px solid #000;
    border-radius: 50%;
    }

    Untitled-39

    В результате мы получим  такую галерею:

    Untitled-48

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

    Содержание:

    Верстка 1  https://ot7.ru/html/51

    Верстка 2 https://ot7.ru/html/urok5

    Верстка 1

    1. Создайте меню и фон как на  примере https://ot7.ru/html/51
    2. Код html
    <html>
      <head>
        <meta charset="utf-8">
        <title>Блочная верстка</title>
        <link rel="stylesheet" href="style.css">
      </head>
      <body>
        <div id="header">
          <div class="center">
            <div class="row">
              <div class="logo">
                <h3>
                <a href="index.html">IWebmaster.kz</a>
                </h3>
              </div>
              <div class="menu">
                <ul>
                  <li><a href="index.html">Главная</a></li>
                  <li><a href="">О нас</a></li>
                  <li><a href="">Услуги</a></li>
                  <li><a href="#">Контакты</a></li>
                </ul>
              </div>
            </div>
          </div>
        </div>
        <div id="content">
          <div class="block">
            <div class="center">
              <div class="row">content</div>
            </div>
          </div>
          <div class="block2">
            <div class="center">
              <div class="row">content</div>
            </div>
          </div>
          <div class="center">
            <div class="row">
            <p>
            Lorem ipsum dolor sit amet, essent insolens ad duo. His augue explicari at, per ad enim facete appetere. Labore virtute suscipit ex nec, per modo sonet lobortis ad. Mel ei homero dolorum dissentias. Eu quem solet tritani est, deserunt elaboraret mei ex. At est interesset cotidieque, has dicunt melius in, sed an prima clita scripserit. At eos omnis causae eligendi.
    
            Cum id graeci vidisse interesset. Tempor moderatius nam ea, ea vel scaevola liberavisse philosophia, evertitur voluptaria est at. Eum doming omittantur eu, munere ponderum percipitur at sit. Vis fugit adipisci abhorreant id, aeque clita qui ei. Audiam sensibus instructior mei ex. Apeirian consequuntur interpretaris ad vim.
    
            Ex hinc qualisque elaboraret his, integre nominati percipitur ius et. Pro esse luptatum at, mei in iisque alterum. Sit id porro ignota intellegebat, mei at ancillae gubergren. Vim odio labore voluptua ei.
    
            Has soluta aperiam disputationi ea, brute tation vix an. In qui habemus accumsan invidunt, sea commune adipisci aliquando et. At ius tacimates conclusionemque. Mea ea tota aliquid. An nostrum adolescens sententiae pri, sea ut duis vulputate referrentur, hinc postea patrioque eu sed. Has cu maiorum percipitur signiferumque, sea blandit lucilius reprehendunt id.
    
            Sea no solum graeco referrentur, doming percipitur in cum. Nemore diceret vis cu. No mundi similique ius, at nihil omnes omnesque vix, id iuvaret elaboraret est. Mea cu tota solet discere, diam erroribus mel at.
            </p>
            </div>
          </div>
        </div>
        <div id="footer">
          <div class="center">
            <div class="row">footer</div>
          </div>
        </div>
      </body>
    </html>
    

    Код файла style.css

    /* *-универсальный селектор - 0 баллов
      a,body,h1,p и т.д. - селекторы тегов(элементов) - 2 балла
      .content,.row и т.д. - селекторы классов - 10 баллов
      #header,#content,#footer - селекторы идентификаторов - 100 баллов
     */
    *{
      margin:0;
      padding:0;
      box-sizing:border-box;
      
    }
    a{
      text-decoration:none;
      
    }
    body{
      background:#ff0 url(images/pattern3.jpg) repeat;
    }
    /*задаем блокам резиновые свойства*/
    #header,#content,#footer{
      width:100%;
      float:left;
      border:1px solid #FFF;
    }
    #header,#footer{
      background:rgba(0,0,0,0.7);
    }
    /*задаем ширину рабочей области и оцентровываем ее*/
    .center{
      max-width:1124px;/**/
      margin:0 auto;
    }
    
    .row{
      float:left;
      width:100%;
      padding:20px;
    }
    .logo{
      float:left;
    }
    .menu{
      float:right;
    }
    .menu a,.logo a{
      color:#fff;
    }
    .menu li{
      float:left;
    }
    .menu a{
      padding:25px 20px;
      
    }
    /* :hover - псевдоселектор, изменяет отображение блока при наведении*/
    .menu a:hover{
      background:#fff;
      color:#000;
      border-bottom:5px solid red;
    }
    .block{
      float:left;
      width:100%;
      background:url(images/fon1.png) no-repeat;
      background-size:cover; /*размер фоновой картинки: ширина 100% и высота 100% блока*/
      background-position:50% 50%;/*оцентровываем картинку*/
      background-attachment:fixed; /*создаем параллакс эффект - фиксируем картинку*/
      height:100vh; /*100% высота окна*/
      
    }
    .block2{
      float:left;
      width:100%;
      background:url(images/pattern.jpg) no-repeat;
      background-size:cover;
      background-position:50% 50%;
      background-attachment:fixed;
      height:100vh;
      
    }
    

     


     

    Верстка 2

    1. Создайте меню и фон как на  примере https://ot7.ru/html/urok5
    2. Код html
      <html>
          <head> 
             <title> Блочная верстка </title>
           <meta charset="utf-8">
          <link rel="stylesheet" href="style.css">
          
        </head>
          
        <body> 
          <div id="wrapper">
            <div class="header">
            <div class="top">
              <div class="zapis"><a href="contact.html">Записaться</a></div>
              <div class="phone"><address>г.Караганда, ул.Бульвар мира 37, офис 412 | тел: +7 7212 421218, + 7 777 226 27 88</address></div>
            </div>
            <div class="logo"><a href="index.html"><img src="images/logo.png"></a></div>
            <div class="menu">
                <ul>
                  <li><a href="">Главная </a>	</li>
                  <li><a href="">Портфолио</a></li>
                  <li><a href="">Отзывы</a></li>
                  <li><a href="">Контакты</a></li>
                </ul>
            </div>
            </div>
            <div class="sidebar"> Сайдбар</div>
            <div class="content">Контент
            </div>
            <div class="footer">Футер</div>
          </div>
        </body>
      </html>
    3. Код style.css
      @import url(https://fonts.googleapis.com/css?family=Ubuntu+Condensed&subset=latin,cyrillic);
      body{
        margin:0;
        padding:0;
        font-family: 'Ubuntu Condensed', sans-serif;
        background:url(images/pattern.png);
        background-attachment:fixed;
        
      }
      img{
        max-width:100%;
        width:auto;
      }
      /*Внешняя оболочка сайта*/
      #wrapper{
        max-width:1200px;
        margin:0 auto;
      }
      /*шапка сайта*/
      .header{
        width:100%;
        background:#DE214B;
        float:left;
        border-bottom: 2px #fff solid;
      }
      /*верхняя часть шапки где указывается координаты*/
      .top{
        width:100%;
        float:left;
        background: #a73c53;
          color: #F5F5F5;
          border-bottom: 1px #fff solid;
          font-size: 12px;
      }
      /*ссылка записаться на курсы */
      .zapis{
        float:left;
        margin:10px 20px;
      }
      .zapis a{
        color:#fff;
      }
      /*контактные данные*/
      .phone{
        float:right;
        margin:10px 20px;
      }
      /*конец верхней части top*/
      
      /*логотип*/
      .logo{
        max-width:300px;/*максимальная ширина блока с логотипом*/
        float:left;
        margin:20px;
      }
        .logo img{
        width:100px;/*ширина картинки*/
      }
      /*меню*/
      .menu{
        max-width:820px;/*максимальная ширина блока*/
        margin:10px 0px;/*внешний отступ сверху и снизу 10px*/
        float:right;/*расположение справа*/
        font-size: 20px;/*размер шрифта*/
      }
      .menu ul{
        margin:10px 0px;/*внешний отступ блока со списком*/
        float:right;
      }
      .menu li{
        float:left;
        margin:5px 0px;
      }
      .menu a{
        padding:10px 20px;
        text-decoration:none;
        color:#fff;
        border-left:1px transparent solid;/*рамка слева с прозрачным цветом*/
        border-right:1px transparent solid;/*рамка справа с прозрачным цветом*/
      }
      /*правило для меню при наведении*/
      .menu a:hover{
        padding:25px 20px; 
        background:#a73c53;
        border-left:1px #fff solid;
        border-right:1px #fff solid;
      }
      .sidebar{
        width:300px;
        background:#666;
        float:left;
        padding:15px;
        box-sizing:border-box;
      }
      .content{
        width:calc(100% - 300px);
        min-width:300px;
        background:#777;
        float:left;
        padding:15px;
        box-sizing:border-box;
      }
      .footer{
        width:100%;
        background:#000;
        float:left;
        padding:15px;
        box-sizing:border-box;
        color:#fff;
      }

     

     

     

  • Задание по HTML к четвертому уроку. Блочная верстка

    В своей рабочей папке с уроками, создайте html документ index.html  и сверстайте страницу по шаблону

    или по лабораторной работе

    4 урок Лекционная часть

    1. Пропишите основную структуру документа
    2. В контейнере Body — создайте 6 блоков div: 1 оберточный блок wrapper, отвечаeт за общую ширину рабочего пространства и расположения страницы по середине. 5 остальных блоков — ячейки, каждый из них  будет нести свой функционал
      <div id="wrapper"> <!--обертка-->
          <div class="header"> Шапка </div>  
          <div class="menu"> Навигация </div>
          <div class="sidebar"> Сайдбар </div>
          <div class="content"> Контент </div>
          <div class="footer"> Футер </div>
      </div>
      
    3. В контейнере head — создайте парный тэг style,и внутри <style>…</style> опишите стили для созданных классов и идентификатора, а также обнулите внешние и внутренние отступы, которые заданы браузером по умолчанию.
    4. <style>
        body{margin:0;padding:0;}
        #wrapper{max-width:1200px;margin:0 auto;}
        .header{width:100%;background:#555;float:left;}
        .menu {width:100%;background:#666;float:left;}
        .sidebar{width:300px;background:#666;float:left;padding:15px;box-sizing:border-box;}
        .content{width:calc(100% - 300px);min-width:300px;background:#777;float:left;padding:15px;box-sizing:border-box;}
        .footer{width:100%;background:#000;float:left;padding:15px;box-sizing:border-box;color:#fff;}
        </style>

      Вот что у вас должно получиться
      блок

    5. Внутри контейнера header мы расположим по центру блок с классом logo, где будет располагаться логотип, максимальная ширина блока равна 300px
      <div class="logo"> Логотип </div>
      .logo{max-width:300px;margin:20px auto;background:#999;}

      блок2
      Итоговый код страницы

      <html>
          <head> 
             <title> Блочная верстка </title>
           <meta charset="utf-8">
        <!--Стили-->
          <style>
            body{margin:0;padding:0;}
            img{max-width:100%;width:auto;}
            #wrapper{max-width:1200px;margin:0 auto;}
            .header{width:100%;background:#555;float:left;}
              .logo{max-width:300px;margin:20px auto;background:#999;}
            .menu {width:100%;background:#666;float:left;}
              .main{max-width:100%;margin:10px;background:#999;}
            .sidebar{width:300px;background:#666;float:left;padding:15px;box-sizing:border-box;}
            .content{width:calc(100% - 300px);min-width:300px;background:#777;float:left;padding:15px;box-sizing:border-box;}
            .footer{width:100%;background:#000;float:left;padding:15px;box-sizing:border-box;color:#fff;}
          </style>
        <!------>
        </head>
          
        <body> 
          <div id="wrapper">
            <div class="header">
            <div class="logo">Логотип</div>
            </div>
            <div class="menu">Навигация
              <div class="main">Меню</div>
            </div>
            <div class="sidebar"> Сайдбар</div>
            <div class="content">Контент</div>
            <div class="footer">Футер</div>
          </div>
        </body>
      </html>

    Дополнительно

    В корневом каталоге создайте папку css и в нем файл style.css

    Перенесите стили с документа в отдельный файл style.css.

    В index.html вместо <style>…</style> подключите файл стилей style.css

    <link rel="stylesheet" type="text/css" href="css/style.css">
  • HTML урок 10. Виды и свойства блоков. Псевдоклассы и псевдоэлементы

    Как вы помните, элементы могут быть блочными и строчными. По умолчанию для каждого элемента его вид определен, так элементы div и p являются блочными, а span
    и a — строчными. Но иногда это необходимо изменить, для этого используется свойство display.
    Это свойство может принимать одно из четырех значений. Рассмотрим все четыре на примерах.

    display:block

    Это значение делает элемент блочным. Предположим, мы решили сделать вертикальное меню. Для этого на html-странице мы напишем
    следующий код:

    <html>
    <head>
    <title>css display</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <div id="menu">
    <a href="index.html">Главная</a>
    <a href="about_us.html">О нас</a>
    <a href="contact.html">Контакты</a>
    </div>
    </body>
    </html>

    Зададим на странице style.css стиль для наших ссылок, причем только для ссылок, которые находятся в div-е с id=»menu» (тогда другие ссылки на странице, если они будут, останутся без изменения или им можно будет задать другой стиль):

    #menu{
    width:200px;
    background:yellow;
    }
    #menu a{
    color:#2b3845;
    text-decoration:none;
    }
    #menu a:hover{
    color:#92A9BF;
    background:blue;
    }

    Сейчас наши ссылки выглядят так:

    Untitled-1

    Элемент a является строчным, поэтому наши ссылки расположились в одну строку и их размер зависит от текста.
    Но мы хотели сделать вертикальное меню, для этого мы и добавим нашим ссылкам свойство display:block:

    #menu{
    width:200px;
    background:yellow;
    }
    #menu a{
    color:#2b3845;
    text-decoration:none;
    display:block;
    }
    #menu a:hover{
    color:#92A9BF;
    background:blue;
    }

    Теперь наше меню выглядит так:

    Untitled-2

    Обратите внимание, так как теперь наши ссылки стали блочными элементами, то и размер у них стал одинаковый, равный ширине родительского div-а.

    display:inline

    Это значение делает элемент строчным. Предположим, мы хотим разместить на странице параграф, который должен начинаться с заголовка. На html-странице мы напишем следующий код:

    <html>
    <head>
    <title>css display</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <h5>Заголовок.</h5> <p>Текст параграфа</p>
    </body>
    </html>

    Сейчас наша страница выглядит так:

    Untitled-3

    Добавим на страницу style.css стили для наших элементов:

    h5, p{
    display:inline;
    }

    Теперь наша страница выглядит так, как мы и хотели:

    Untitled-4

    display:list-item

    Это значение делает любой элемент частью списка. Используется он редко, да и поддерживается браузерами не в полной мере. Но давайте все-таки посмотрим пример. Пусть у нас есть три заголовка одного уровня, и мы хотим оформить их списком. Для этого на html-странице мы напишем:

    <html>
    <head>
    <title>css display</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <ul>
    <h6>Заголовок</h6>
    <h6>Заголовок</h6>
    <h6>Заголовок</h6>
    </ul>
    </body>
    </html>

    Сейчас наши заголовки выглядят, как положено:

    Untitled-5

    На странице стилей напишем всего одно свойство:

    h6{
    display:list-item;
    }

    В результате получим список из заголовков:

    Untitled-6

    display:none

    Это значение убирает элемент со страницы. Очень часто используется для формирования раскрывающихся меню сайтов, например, с помощью языка javascript. Вы, наверно, встречали такие меню, где при щелчке по пункту меню раскрывается список подпунктов.
    Вот в таких меню и используется значение display:none.

    Надо сказать, что в CSS есть еще одно свойство на первый взгляд похожее на display:none. Это свойство, отвечающее за видимость блока — visibility. Оно может принимать два значения: visible (отображать) и hidden (сделать невидимым).
    Различия здесь следующее: display:none скрывает элемент, как будто его и не было, а
    visibility:hidden делает элемент прозрачным. Понятнее будет на примере.
    Пусть у нас есть пять параграфов:

    <html>
    <head>
    <title>css display</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <p>Параграф 1</p>
    <p id="p2">Параграф 2</p>
    <p>Параграф 3</p>
    <p id="p4">Параграф 4</p>
    <p>Параграф 5</p>
    </body>
    </html>

    Сейчас наша страница выглядит так:

    Untitled-7

    Давайте зададим для второго параграфа свойство display:none, а для четвертого — свойство visibility:hidden:

    #p2{
    display:none;
    }
    #p4{
    visibility:hidden;
    }

    Посмотрим, что получилось:

    Untitled-8

    Как видите, второй параграф отсутствует, а четвертый — невидим, но место под него оставлено. В этом и заключается разница.

    Свойство visibility так же, как и свойство display, чаще всего применяется совместно с javascript.

    Отображение содержимого блоков в разных браузерах

    Как вы думаете, что будет, если блочному элементу задать меньшие размеры, чем его содержимое? Ваш ответ будет зависеть от того, в каком браузере вы работаете. Предположим мы задали блоку размер 200х100 пикселов и поместили в него текст, явно превышающий эти размеры. Ниже приведен рисунок, где отображено поведение различных браузеров в такой ситуации:

    css60

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

    Конечно,лучшего всего контролировать размеры объектов, но это не всегда возможно. Как же быть тогда? Воспользоваться свойством overflow. Это свойство может принимать четыре значения:

    visible — если содержимое превышает размеры блока, оно все-равно останется на экране. Результат будет такой же, как на рисунке выше.

    hidden — браузер отрежет содержимое, которое превышает размер блока.

    css61

    scroll — блок будет снабжен полосами прокрутки, причем как горизонтальной, так и вертикальной.

    Untitled-9

    auto — блок будет снабжен только теми полосами прокрутки, которые необходимы.

    Untitled-10

    Надо сказать, что на практике свойство overflow используется редко, но знать о его существовании все-таки стоит.

    Псевдокласс :first-child

    Псевдокласс :first-child применяет стилевое оформление к первому дочернему элементу своего родителя.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>first-child</title>
      <style type="text/css">
        B:first-child {
         color: red; /* Красный цвет текста */
        }
      </style>
     </head>
     <body>
       <p><b>Lorem ipsum</b> dolor sit amet, <b>consectetuer</b> 
       adipiscing <b>elit</b>, sed diem nonummy nibh euismod tincidunt ut lacreet 
       dolore magna aliguam erat volutpat.</p>
       <p><b>Ut wisis enim</b> ad minim veniam, <b>quis nostrud</b> 
       exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea <b>commodo 
       consequat</b>.</p>
     </body>
    </html>

    Выделение цветом первого дочернего элемента абзаца

    Псевдокласс :last-child

    Псевдокласс :last-child задает стилевое оформление последнего элемента своего родителя.

    элемент:last-child { … }

    <!DOCTYPE html>
    <html>
     <head>
      <meta charset="utf-8">
      <title>last-child</title>
      <style>
       .block {
        background: #7da7d9; /* Цвет фона */
        color: #fff; /* Цвет текста */
       }
       .block :first-child {
        padding: 10px; /*  Поля вокруг текста */
       }
       .block :last-child { 
        background: #dda458 url(images/line.png) repeat-x; /* Параметры фона */
        height: 5px; /* Высота блока */
       }
      </style>
     </head>
     <body>
      <div class="block">
       <div>
        При истечении возможности понимания вышеизложенной информации вы
        имеете объективную возможность подать официальный запрос главному 
        субординатору локальной виртуальной вселенной.
       </div>
       <div></div>
      </div>
     </body>
    </html>

    Результат использования псевдокласса :last-child

    Псевдокласс :nth-child

    Псевдокласс :nth-child используется для добавления стиля к элементам на основе нумерации в дереве элементов.

    элемент:nth-child(odd | even | <число> | <выражение>) {…}

    Значения

    odd
    Все нечетные номера элементов.
    even
    Все четные номера элементов.
    число
    Порядковый номер дочернего элемента относительно своего родителя. Нумерация начинается с 1, это будет первый элемент в списке.
    выражение
    Задается в виде an+b, где a и b целые числа, а n — счетчик, который автоматически принимает значение 0, 1, 2…

    Если a равно нулю, то оно не пишется и запись сокращается до b. Если b равно нулю, то оно также не указывается и выражение записывается в форме an. a и b могут быть отрицательными числами, в этом случае знак плюс меняется на минус, например: 5n-1.

    За счет использования отрицательных значений a и b некоторые результаты могут также получиться отрицательными или равными нулю. Однако на элементы оказывают влияние только положительные значения из-за того, что нумерация элементов начинается с 1.

    В табл. 1 приведены некоторые возможные выражения и ключевые слова, а также указано, какие номера элементов будут задействованы.

    Табл. 1. Результат для различных значений псевдокласса
    Значение Номера элементов Описание
    1 1 Первый элемент, является синонимом псевдокласса :first-child.
    5 5 Пятый элемент.
    2n 2, 4, 6, 8, 10 Все четные элементы, аналог значения even.
    2n+1 1, 3, 5, 7, 9 Все нечетные элементы, аналог значения odd.
    3n+2 2, 5, 8, 11, 14
    -n+3 3, 2, 1
    5n-2 3, 8, 13, 18, 23
    even 2, 4, 6, 8, 10 Все четные элементы.
    odd 1, 3, 5, 7, 9 Все нечетные элементы.
    <html>
     <head>
      <meta charset="utf-8">
      <title>nth-child</title>
      <style>
       table { 
        width: 100%; /* Ширина таблицы */
        border-spacing: 0; /* Расстояние между ячейками */
       }
       tr:nth-child(2n) {
        background: #f0f0f0; /* Цвет фона */
       } 
       tr:nth-child(1) {
        background: #666; /* Цвет фона */
        color: #fff; /* Цвет текста */
       } 
      </style>
     </head>
     <body>
      <table border="1">
       <tr> 
        <td>&nbsp;</td><td>2134</td><td>2135</td>
        <td>2136</td><td>2137</td><td>2138</td>
       </tr>
       <tr> 
        <td>Нефть</td><td>16</td><td>34</td>
        <td>62</td><td>74</td><td>57</td>
       </tr>
       <tr>
        <td>Золото</td><td>4</td><td>69</td>
        <td>72</td><td>56</td><td>47</td>
       </tr>
       <tr>
        <td>Дерево</td><td>7</td><td>73</td>
        <td>79</td><td>34</td><td>86</td>
       </tr>
       <tr>
        <td>Камни</td><td>23</td><td>34</td>
        <td>88</td><td>53</td><td>103</td>
       </tr>
      </table> 
     </body>
    </html>

    Применение псевдокласса :nth-child к строкам таблицы

    Псевдоэлемент :before

    Псевдоэлемент :before применяется для отображения желаемого контента до содержимого элемента, к которому он добавляется. Работает совместно со свойством content.

    Для :before характерны следующие особенности.

    • При добавлении :before к блочному элементу, значение свойства display может быть только: block, inline,none, list-item. Все остальные значения будут трактоваться как block.
    • При добавлении :before к встроенному элементу, display ограничен значениями inline и none. Все остальные будут восприниматься как inline.
    • :before наследует стиль от элемента, к которому он добавляется.
    <html>
     <head>
      <meta charset="utf-8">
      <title>before</title>
      <style>
       li:before {
         content: "¶ "; /* Добавляем желаемый символ перед элементом списка */ 
       }
       li {
         list-style: none; /* Убираем исходные маркеры */ 
       }
      </style>
     </head>
     <body>
       <ul>
         <li>Альфа</li>
         <li>Бета</li>
         <li>Гамма</li>
       </ul>
     </body>
    </html>

    Псевдоэлемент :after

    Псевдоэлемент, который используется для вывода желаемого текста после содержимого элемента, к которому он добавляется. Псевдоэлемент :after работает совместно со свойством content.

    Для :after характерны следующие особенности.

    • При добавлении :after к блочному элементу, значение свойства display может быть только: block, inline, none,list-item. Все остальные значения будут трактоваться как block.
    • При добавлении :after к встроенному элементу, display ограничен значениями inline и none. Все остальные будут восприниматься как inline.

    Синтаксис

    элемент:after  { content: "текст"  }
    <html>
     <head>
      <meta charset="utf-8">
      <title>after</title>
      <style>
        p.new:after {
          content: "Новьё!"; /* Добавляемый текст */ 
          color: #333; /* Цвет текста */ 
          background-color: #fc0; /* Цвет фона */ 
          font-size: 90%; /* Размер шрифта */ 
          padding: 2px; /* Поля вокруг текста */ 
        }
      </style>
     </head>
     <body>
      <h2>Истории</h2>
      <p class="new">История о том, как необходимо было сделать могилу, 
         ее начали копать, а потом закапывать, и что из этого получилось.</p>
      <p>История о том, как возле столовой появились загадочные розовые
         следы с шестью пальцами, и почему это случилось.</p>
     </body>
    </html>
    Результат использования псевдоэлемента :after 
  • HTML урок 9. тег FORM

    Описание

    Тег <form> устанавливает форму на веб-странице. Форма предназначена для обмена данными между пользователем и сервером. Область применения форм не ограничена отправкой данных на сервер, с помощью клиентских скриптов можно получить доступ к любому элементу формы, изменять его и применять по своему усмотрению.

    Документ может содержать любое количество форм, но одновременно на сервер может быть отправлена только одна форма. По этой причине данные форм должны быть независимы друг от друга.

    Для отправки формы на сервер используется кнопка Submit, того же можно добиться, если нажать клавишу Enter в пределах формы. Если кнопка Submit отсутствует в форме, клавиша Enter имитирует ее использование.

    Когда форма отправляется на сервер, управление данными передается программе, заданной атрибутом action тега<form>. Предварительно браузер подготавливает информацию в виде пары «имя=значение», где имя определяется атрибутом name тега <input>, а значение введено пользователем или установлено в поле формы по умолчанию. Если для отправки данных используется метод GET, то адресная строка может принимать следующий вид.

    http://www.htmlbook.ru/cgi-bin/handler.cgi?nick=%C2%E0%ED%FF+%D8%E0%EF%EE%F7%EA%E8%ED&page=5

    Параметры перечисляются после вопросительного знака, указанного после адреса CGI-программы и разделяются между собой символом амперсанда (&). Нелатинские символы преобразуются в шестнадцатеричное представление (в форме %HH, где HH — шестнадцатеричный код для значения ASCII-символа), пробел заменяется на плюс (+).

    Допускается внутрь контейнера <form> помещать другие теги, при этом сама форма никак не отображается на веб-странице, видны только ее элементы и результаты вложенных тегов.

    Синтаксис

    <form action="URL">
      ...
    </form>

    Атрибуты

    accept-charset
    Устанавливает кодировку, в которой сервер может принимать и обрабатывать данные.
    action
    Адрес программы или документа, который обрабатывает данные формы.
    autocomplete
    Включает автозаполнение полей формы.
    enctype
    Способ кодирования данных формы.
    method
    Метод протокола HTTP.
    name
    Имя формы.
    novalidate
    Отменяет встроенную проверку данных формы на корректность ввода.
    target
    Имя окна или фрейма, куда обработчик будет загружать возвращаемый результат.

    Также для этого тега доступны универсальные атрибуты и события.

    Пример

    <!DOCTYPE HTML>
    <html>
     <head>
      <meta charset="utf-8">
      <title>Тег FORM</title>
     </head>
     <body>
    
     <form action="handler.php">
      <p><b>Как по вашему мнению расшифровывается аббревиатура &quot;ОС&quot;?</b></p>
      <p><input type="radio" name="answer" value="a1">Офицерский состав<Br>
      <input type="radio" name="answer" value="a2">Операционная система<Br>
      <input type="radio" name="answer" value="a3">Большой полосатый мух</p>
      <p><input type="submit"></p>
     </form>
    
     </body>
    </html>

    Тег <input>

    Тег <input> является одним из разносторонних элементов формы и позволяет создавать разные элементы интерфейса и обеспечить взаимодействие с пользователем. Главным образом <input> предназначен для создания текстовых полей, различных кнопок, переключателей и флажков. Хотя элемент <input> не требуется помещать внутрь контейнера <form>, определяющего форму, но если введенные пользователем данные должны быть отправлены на сервер, где их обрабатывает серверная программа, то указывать <form> обязательно. То же самое обстоит и в случае обработки данных с помощью клиентских приложений, например, скриптов на языке JavaScript.

    Основной атрибут тега <input>, определяющий вид элемента — type. Он позволяет задавать следующие элементы формы: текстовое поле (text), поле с паролем (password), переключатель (radio), флажок (checkbox), скрытое поле (hidden), кнопка (button), кнопка для отправки формы (submit), кнопка для очистки формы (reset), поле для отправки файла (file) и кнопка с изображением (image). Для каждого элемента существует свой список атрибутов, которые определяют его вид и характеристики. Кроме того, в HTML5 добавлено еще более десятка новых элементов.

    Атрибуты

    accept
    Устанавливает фильтр на типы файлов, которые вы можете отправить через поле загрузки файлов.
    accesskey
    Переход к элементу с помощью комбинации клавиш.
    align
    Определяет выравнивание изображения.
    alt
    Альтернативный текст для кнопки с изображением.
    autocomplete
    Включает или отключает автозаполнение.
    autofocus
    Устанавливает фокус в поле формы.
    border
    Толщина рамки вокруг изображения.
    checked
    Предварительно активированный переключатель или флажок.
    disabled
    Блокирует доступ и изменение элемента.
    form
    Связывает поле с формой по её идентификатору.
    formaction
    Определяет адрес обработчика формы.
    formenctype
    Устанавливает способ кодирования данных формы при их отправке на сервер.
    formmethod
    Сообщает браузеру каким методом следует передавать данные формы на сервер.
    formnovalidate
    Отменяет встроенную проверку данных на корректность.
    formtarget
    Определяет окно или фрейм в которое будет загружаться результат, возвращаемый обработчиком формы.
    list
    Указывает на список вариантов, которые можно выбирать при вводе текста.
    max
    Верхнее значение для ввода числа или даты.
    maxlength
    Максимальное количество символов разрешенных в тексте.
    min
    Нижнее значение для ввода числа или даты.
    multiple
    Позволяет загрузить несколько файлов одновременно.
    name
    Имя поля, предназначено для того, чтобы обработчик формы мог его идентифицировать.
    pattern
    Устанавливает шаблон ввода.
    placeholder
    Выводит подсказывающий текст.
    readonly
    Устанавливает, что поле не может изменяться пользователем.
    required
    Обязательное для заполнения поле.
    size
    Ширина текстового поля.
    src
    Адрес графического файла для поля с изображением.
    step
    Шаг приращения для числовых полей.
    tabindex
    Определяет порядок перехода между элементами с помощью клавиши Tab.
    type
    Сообщает браузеру, к какому типу относится элемент формы.
    value
    Значение элемента.

    Пример

    <!DOCTYPE HTML>
    <html>
     <head>
      <meta charset="utf-8">
      <title>Тег INPUT</title>
     </head>
     <body>
    
     <form name="test" method="post" action="input1.php">
      <p><b>Ваше имя:</b><br>
       <input type="text" size="40">
      </p>
      <p><b>Каким браузером в основном пользуетесь:</b><Br>
       <input type="radio" name="browser" value="ie"> Internet Explorer<Br>
       <input type="radio" name="browser" value="opera"> Opera<Br>
       <input type="radio" name="browser" value="firefox"> Firefox<Br>
      </p>
      <p>Комментарий<Br>
       <textarea name="comment" cols="40" rows="3"></textarea></p>
      <p><input type="submit" value="Отправить">
       <input type="reset" value="Очистить"></p>
     </form>
    
     </body>
    </html>

    Атрибут type

    button Кнопка.
    checkbox Флажки. Позволяют выбрать более одного варианта из предложенных. Пиво Чай Кофе
    file Поле для ввода имени файла, который пересылается на сервер.
    hidden Скрытое поле. Оно никак не отображается на веб-странице.
    image Поле с изображением. При нажатии на рисунок данные формы отправляются на сервер.
    password Обычное текстовое поле, но отличается от него тем, что все символы показываются звездочками. Предназначено для того, чтобы никто не подглядел вводимый пароль.
    radio Переключатели. Используются, когда следует выбрать один вариант из нескольких предложенных. Пиво Чай Кофе
    reset Кнопка для возвращения данных формы в первоначальное значение.
    submit Кнопка для отправки данных формы на сервер.
    text Текстовое поле. Предназначено для ввода символов с помощью клавиатуры.

    В HTML5 добавлены новые значения, представленные в табл. 2.

    Табл. 2. Значения type в HTML5
    Тип Описание
    color Виджет для выбора цвета.
    date Поле для выбора календарной даты.
    datetime Указание даты и времени.
    datetime-local Указание местной даты и времени.
    email Для адресов электронной почты.
    number Ввод чисел.
    range Ползунок для выбора чисел в указанном диапазоне.
    search Поле для поиска.
    tel Для телефонных номеров.
    time Для времени.
    url Для веб-адресов.
    month Выбор месяца.
    week Выбор недели.

     

  • HTML урок 4. Ссылки

    Блочные и строчные тэги

    Блочным называется элемент, который отображается на веб-странице в виде прямоугольника. Такой элемент занимает всю доступную ширину, высота элемента определяется его содержимым, и он всегда начинается с новой строки. К блочным элементам относятся теги <address>, <blockquote>, <div>, <fieldset>, <form>, <h1>,…,<h6>, <hr>,<ol>, <p>, <pre>, <table>, <ul> и некоторые устаревшие. Также блочным становится элемент, если в стиле для него свойство display задано как block, list-item, table и в некоторых случаях run-in.

    Для блочных элементов характерны следующие особенности.

    • Блоки располагаются по вертикали друг под другом.
    • На прилегающих сторонах элементов действует эффект схлопывания отступов.
    • Запрещено вставлять блочный элемент внутрь строчного. Например, <a><h1>Заголовок</h1></a> не пройдёт валидацию, правильно вложить теги наоборот — <h1><a>Заголовок</a></h1>.
    • По ширине блочные элементы занимают всё допустимое пространство.
    • Если задана ширина контента (свойство width), то ширина блока складывается из значений width, полей, границ, отступов слева и справа.
    • Высота блочного элемента вычисляется браузером автоматически, исходя из содержимого блока.
    • Если задана высота контента (свойство height), то высота блока складывается из значения height, полей, границ, отступов сверху и снизу. При превышении указанной высоты контент отображается поверх блока.
    • На блочные элементы не действуют свойства, предназначенные для строчных элементов, вроде vertical-align.
    • Текст по умолчанию выравнивается по левому краю.

    Не все блочные теги допустимо вкладывать один в другой, поэтому при создании структуры кода активную роль выполняет <div> как универсальный кирпичик вёрстки. Тег <div> допустимо вкладывать один в другой, другие блочные элементы также можно помещать внутрь <div>.

    Строчными называются такие элементы документа, которые являются непосредственной частью строки. К строчным элементам относятся теги <img>, <span>, <a>, <q>, <code> и др., а также элементы, у которых свойство displayустановлено как inline. В основном они используются для изменения вида текста или его логического выделения.

    По аналогии с блочными элементами перечислю их характерные особенности.

    • Внутрь строчных элементов допустимо помещать текст или другие строчные элементы. Вставлять блочные элементы внутрь строчных запрещено.
    • Эффект схлопывания отступов не действует.
    • Свойства, связанные с размерами (width, height) не применимы.
    • Ширина равна содержимому плюс значения отступов, полей и границ.
    • Несколько строчных элементов идущих подряд располагаются на одной строке и переносятся на другую строку при необходимости.
    • Можно выравнивать по вертикали с помощью свойства vertical-align.

    Строчные элементы удобно использовать для изменения вида и стиля текста, в частности, отдельных символов и слов. Для этой цели обычно применяется универсальный тег <span>, который самостоятельно никак не модифицирует содержимое, но легко объединяется со стилями через классы или идентификаторы. За счёт чего с помощью этого тега можно легко управлять видом и положением отдельных фрагментов текста или рисунков.

     

    Блочные и строчные элементы

    Каскадная таблица стилей CSS

    Для вёрстки строчные элементы применяются реже, чем блочные. Это связано в основном с тем, что внутрь строчных элементов не допускается вкладывать контейнеры <div>, <p> и подобные широко распространённые теги. Тем не менее, блочные и строчные элементы удачно дополняют друг друга, поскольку позволяют на всех уровнях менять вид составляющих веб-страниц

    Каскадные таблицы стилей (Cascading Style Sheets) предоставляют дополнительные возможности для разметки html-документа и свободу по созданию уникального дизайна для веб-страниц.

    Прежде чем приступить к изучению CSS, у вас уже должен быть небольшой опыт работы с HTML, имеется ввиду, что вы уже создавали простые страницы и знакомы с основными HTML тегами для разметки документа.

    Стили по умолчанию

    Когда браузер обрабатывает HTML-код, он использует встроенный по умолчанию стиль представления HTML-элементов на веб-странице. Чтобы понять, что такое «стиль по умолчанию» рассмотрим в качестве примера элементы <h1> — <h6>: заголовки являются блочными элементами, занимают всю доступную ширину в родительском элементе, имеют разрыв строки до и после элемента, текст заголовка отображается жирным начертанием и имеет определённый размер, в зависимости от уровня заголовка, всё это вместе является встроенным стилем для заголовков.

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

    Что такое CSS?

    • CSS — Каскадные Таблицы Стилей(Cascading Style Sheets)
    • Стиль — правило, описывающее форматирование отдельного элемента на странице
    • Стили были добавлены для решения проблемы оформления веб-страниц
    • Стили можно хранить в отдельных документах, что уменьшает размер HTML-кода

    Чем полезны таблицы стилей помещенные в отдельный документ? Ответ очень прост, можно собрать все стили, которые используются на сайте, в один внешний файл с расширением .css и связать его со всеми страницами сайта. После этого, когда вы будете редактировать стиль, изменения моментально затрагивают все элементы на страницах сайта, где есть ссылка на данный внешний файл со стилями. Таким образом, вы можете полностью изменить внешний вид путем редактирования единственного файла таблицы стилей, что существенно упрощает работу, нежели редактировать стили на каждой странице в отдельности.

    HTML и CSS

    CSS и HTML — это два разных языка для разных целей.

    При написании html-кода для CSS, выбирая теги, ориентируйтесь на роль, которую играет фрагмент текста на веб странице, а не на внешний вид, который текст приобретает благодаря этому тегу.

    Применяя CSS для дизайна веб-страницы, вы используете HTML только по его прямому назначению, то есть именно для разметки веб-страницы на логические фрагменты, не заботясь о форматировании и внешнем виде страницы.

    Добавление CSS-стилей к HTML-документу

    Таблицы стилей бывают двух видов — внутренние и внешние — в зависимости от того, где определены стили: непосредственно на самой странице или во внешнем файле, связанном с веб-страницей.

    Внешняя таблица стилей

    Внешняя таблица стилей — обычный текстовый файл, содержащий весь CSS-код. В его содержимое не должны входить никакие HTML теги, поэтому тег <style> там указывать не нужно, при сохранении текстового файла со стилями надо установить расширение «.css», имя файла может быть любым.

    Для подключения внешней таблицы стилей, вам нужно прикрепить ее к HTML-документу с помощью тега <link>, который должен располагаться внутри тега <head> или с помощью встроенного в CSS правила @import.

    Подключение стилей с помощью тега <link>

    <head>
      <link rel="stylesheet" type="text/css" href="styles.css">
    </head>

    тег <link> должен содержать три атрибута:

    • rel=»stylesheet» — указывает тип ссылки; в данном случае это ссылка на таблицу стилей
    • type=»text/css» — указывает тип файла, на который ссылается тег
    • href=»styles.css» — определяет путь к внешнему CSS-файлу, который может отличаться в зависимости от того, где вы его храните

    К страницам можно присоединять множество таблиц стилей, добавляя несколько тегов <link>, каждый из которых будет указывать на свой файл с таблицей.

    Подключение стилей с помощью правила @import

    В отличие от тега <link>, правило @import используется внутри тега <style>. Для подключения внешней таблицы стилей после ключевого слова @import используется url(), в скобках указывается путь к внешнему CSS-файлу, который может быть заключен в кавычки: url(«main.css»);. Использование url() для указания пути к CSS-файлу необязательно, можно просто написать: @import «путь_к_файлу»;, в этом случае путь обязательно должен быть указан в кавычках.

    Используя правило @import можно подключить любое количество внешних таблиц:

    <style>
      @import url(main.css);
      @import url(каталог/main2.css);
    </style>

    После правила @import можно добавлять обычные CSS-стили, если, например, вы хотите создать стиль, который нужно применить только к одной веб-странице, используя для форматирования остального содержимого таблицу стилей, описанную во внешнем CSS-файле:

    <style>
      @import url(main.css);
      @import url(каталог/main2.css);
      p { color: red;}
    </style>

    Примечание: правило @import не обязательно должно располагаться в теге <style>, его так же можно включать во внешние таблицы стилей.

    Плюс от использования внешней таблицы стилей заключается в том, что, если потребуется внести какие-либо изменения в CSS-код при большом количестве страниц на сайте, то отредактировать CSS-код придётся только в одном файле, а не во всех HTML-документах.

    Внутренняя таблица стилей

    Внутренняя таблица стилей — набор стилей, который является частью кода веб-страницы, которая всегда должна находиться внутри элемента <style> в теле тега <head>:

    <head>
      <style>
        hr { color: sienna; }
        p { margin-left: 20px; }
        body { background-image: url("images/back40.gif"); }
      </style>
    </head>

    Тег <style> сообщает браузеру, что данные, располагающиеся внутри, являются кодом CSS. Такие таблицы стилей являются не самым лучшим способом для проектирования дизайна сайта, состоящего из большого количества страниц. Во-первых, такой код придется копировать и вставлять в каждую страницу, а еще труднее будет потом это все редактировать при каких-либо новых изменениях. Во-вторых, каждый такой вставленный код во много раз увеличивает размер кода на странице в целом, в следствии чего, страница будет дольше загружаться для просмотра.

    Совет: если веб-страница имеет внутреннюю таблицу стилей, а вы хотите использовать внешнюю таблицу стилей, то всего лишь вырежьте CSS-код, расположенный между тегами <style> (без самих тегов). Потом создайте новый текстовый документ и вставьте в него CSS-код. Сохраните файл с расширением .css, например styles.css, и подключите его к вашей веб-странице, используя тег <link> или правило @import.

    Встроенный стиль

    Под встроенным стилем подразумевается использование глобального атрибута style непосредственно в том элементе, который необходимо стилизовать. В качестве значения атрибута указываются CSS-свойства:

    <div style="border: 1px solid red; background-color: yellow;">Элемент div</div>

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

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

    Синтаксис CSS

    Определение стиля в CSS, устанавливающего внешний вид для какого-либо элемента на веб-странице — это всего лишь правило, которое сообщает браузеру, что и каким образом будет отформатировано, например изменить цвет текста заголовка, выделить изображение красной рамкой, фиксированная ширина для меню в 200 пикселей и тд.

    Правила CSS

    CSS представляет из себя правило или набор правил, описывающих форматирование (изменение внешнего вида) отдельных элементов на веб-странице. Правило, состоит из двух частей: селектора и следующим за ним блоком объявлений. На изображении ниже показана структура (синтаксис) правила:

    синтаксис css свойств

    • Первым всегда указывается селектор, он сообщает браузеру, к какому элементу или элементам веб-страницы будет применен стиль.

      Примечание: на изображении в качестве селектора выступает селектор типа, во многих примерах самоучителя мы будем использовать именно этот селектор.

    • Далее следует блок объявлений, который начинается с открывающей фигурной скобки { и заканчивается закрывающей }, между фигурными скобками указываются форматирующие команды (объявления), которые используются браузером для стилизации выбранного селектором элемента. В блоке может быть указано сколько угодно объявлений. Сам блок объявлений так же называют просто стилем.
    • Каждое объявление состоит из двух частей: свойства и его значения. Объявление всегда должно заканчиваться точкой с запятой (;). Опустить указание «;» можно только в конце последнего объявления перед закрывающей фигурной скобкой.
    • Свойство — это команда форматирования, определяющая конкретный стилевой эффект для элемента. Само свойство представляет из себя слово или несколько написанных через дефис слов. Каждое свойство имеет свой предопределенный набор значений. После имени свойства указывается двоеточие, которое отделяет название свойства от допустимого значения.

    Пробельные символы

    Браузер игнорирует большинство пробельных символов в CSS-коде, поэтому их можно использовать с пользой для себя, придавая коду удобочитаемый вид. К пробельным символам относятся: символы табуляции, перенос строки и обычные пробелы, их можно использовать в любом количестве. Пробельные символы можно ставить между селектором и блоком объявлений, в самом блоке объявлений — между фигурной скобкой и свойством, между свойствами, свойством и значением.

    В примере представлен CSS-код, в котором используются пробельные символы:

    p {
      color: blue;
      font-size: 12px;
    }

    Пробельные символы в основном используют, когда в правиле указывается много свойств, чтобы легче было прочитать и представить, что именно делает тот или иной стиль. Код предыдущего примера можно написать и в одну строку, не используя пробельных символов, но такой код будет менее удобен для чтения и понимания:

    p{color:blue;font-size:12px;}

    Так обычно записывают правила, когда используется всего одно или два свойства, чтобы не разбивать код на несколько строк и тем самым не увеличивать размер кода.

    CSS комментарии

    Комментарий в CSS начинается с символов /* и заканчивается символами */ и может занимать несколько строк, его содержимое не влияет на работу кода и игнорируется браузерами.

    Комментарии можно использовать для пояснения каких-нибудь участков кода, это бывает особенно полезным, когда приходится возвращаться к коду спустя некоторое время.

    Ещё одна важная роль комментариев, которую часто используют на практике — это временное отключение некоторой части кода. Таким образом комментарии используют, когда бывает трудно определить местонахождение ошибки.

    /*Это комментарий.*/
                 
    p {
      color:green; /*это свойство задает зеленый цвет текста*/
    }
     
    /*
      это
      многострочный
      комментарий
    */

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

    ...
    /*
    p {
      color: red; /* цвет текста в абзацах - красный */
      background-color: black;
    }
    */
    ...

    Cелекторы СSS

    Селектор это часть CSS-правила, которая определяет элемент или элементы, к которым будет применён блок объявлений (стиль), содержащий форматирующие свойства.

    Любой селектор может состоять более чем из одного простого селектора. К простым селекторам относятся:

    • селектор типа
    • универсальный селектор
    • селекторы атрибутов
    • селектор идентификатора
    • селектор класса
    • псевдо-классы
    Селектор Пример Описание CSS
    .class .myclass Выбор всех элементов с class=»myclass». 1
    #id #main Выбор элемента с id=»main». 1
    * * Выбор всех элементов. 2
    элемент span Выбор всех элементов <span>. 1
    элемент,элемент div,span Выбор всех элементов <div> и всех элементов <span>. 1
    [атрибут] [title] Выбор элементов с атрибутом «title». 2
    [атрибут=значение] [title=cost] Выбор всех элементов с title=»cost». 2
    [атрибут~=значение] [title~=cost] Выбор элементов с атрибутом title, содержащим слово cost. 2
    [атрибут|=значение] [lang|=ru] Выбор всех элементов с атрибутом lang, значение которого начинается с «ru». 2
    [атрибут^=значение] a[src^=»https»] Выбор каждого элемента <a> с атрибутом src, значение которого начинается с «https». 3
    [атрибут$=значение] a[src$=».png»] Выбор каждого элемента <a> с атрибутом src, значение которого заканчивается на «.png». 3
    [атрибут*=значение] a[src*=»puzzleweb»] Выбор каждого элемента <a> с атрибутом src, в значении которого есть «puzzleweb». 3

    CSS селектор идентификатора

    Селектор идентификатора позволяет применить стиль к определённому элементу на странице, в котором указан необходимый идентификатор. Определение селектора идентификатора начинается с символа решётки «#», далее указывается имя идентификатора.

    #myid { color: blue; }

    Чтобы использовать селектор идентификатора, нужно указать, к какому элементу на странице вы хотите его применить, для этого надо добавить атрибут id в открывающем теге и указать в качестве значения имя нужного идентификатора. Ставить решётку перед именем идентификатора в HTML-коде (в значении атрибута id) не нужно.

    Примечание: идентификаторы не должны повторяться в рамках одного документа, т.е. определенный id может быть использован на странице только один раз с тегом, для которого он предназначен. Если вы хотите применять стиль более чем к одну элементу, следует использовать селектор класса.

    Селектор идентификатора имеет некоторые особенности:

    • В названии идентификатора разрешается использовать только буквы, числа, дефис и знак подчеркивания
    • Название идентификатора всегда должно начинаться с буквы
    • Имена идентификаторов чувствительны к регистру символов, например: #Menu и #menu это два разных идентификатора

    Пример:

    <!DOCTYPE html>
    <html>
      <head>
        <style type="text/css">
          #myname { color:red; }
        </style>
      </head>
     
      <body>
        <h1> Добро пожаловать! </h1>
     
        <div>
          <p id="myname"> Меня зовут Арни. </p>
          <p> Я играю в онлайн игры. </p>
        </div>
        <p> Моего кота тоже зовут Арни. </p>
     
      </body>
    </html>

    Результат данного примера:

    ex

    CSS селектор класса

    Описание

    Селектор класса применяет стиль ко всем элементам с указанным классом. Он определяется при помощи произвольного имени, перед которым ставится точка.

    .myClass { color: blue; }

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

    <p class="myClass">Текст абзаца.</p>

    В атрибуте class в качестве значения может быть указан не один, а несколько классов, в этом случае имена классов должны быть разделены пробелами, порядок следования имён классов не имеет значения.

    <p class="className1 className2 className3">Текст абзаца.</p>

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

    При выборе имени класса необходимо учитывать следующие правила:

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

    Примечание: если одинаковые значения атрибута class прописаны к нескольким разным элементам, но только к одной группе из них нужно применить дополнительный стиль, то перед именем класса нужно написать дополнительный селектор, который будет информировать к каким элементам применять заданный стиль:

    span.alert { font-weight: bold; }

    в этом случае только текст в элементах span со значение alert атрибута class будет выделен жирным шрифтом, остальные элементы с данным классом будут игнорировать этот стиль.

    Пример:

    <!DOCTYPE html>
    <html>
      <head>
        <style type="text/css">
          .myclass { color: blue; }
        </style>
      </head>
       <body>
        <h1> Добро пожаловать! </h1>
     
        <p class="myclass"> Меня зовут Арни. </p>
        <p class="myclass"> Я играю в онлайн игры. </p>
        <p> Моего кота тоже зовут Арни. </p>
     
      </body>
    </html>

    Наследование и каскадность

    Наследование

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

    Например, все элементы расположенные внутри элемента <body> являются его дочерними элементами и потомками. Если в стиле для <body> задать с помощью свойства color красный цвет текста, то цвет текста всех его дочерних элементов и потомков тоже станет красным.

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          body { color: red; }
        </style>
      </head>
      <body>
     
        <h1>Цвет текста заголовка красный</h1>
        <p>Цвет текста абзаца тоже красный.</p>
     
      </body>
    </html>

    Попробовать »Наследуемые свойства можно переопределить, применив индивидуальное правило для нужного элемента.

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          body { color: red; }
          h1 { color: blue; } /* переопределили цвет текста внутри элементов h1 */
        </style>
      </head>
      <body>
        <h1>Цвет текста заголовка синий</h1>
        <p>Цвет текста абзаца красный.</p>
      </body>
    </html>

    Попробовать »Чтобы узнать, какие CSS-свойства наследуются, а какие нет, нужно смотреть описание конкретного свойства в CSS-справочнике.

    Вычисление специфичности (приоритета) селекторов

    Существует множество способов применить стиль оформления к нужному элементу. Но что происходит, если один элемент выбирают два или более взаимоисключающих селектора? Эта дилемма решается с помощью двух принципов CSS: специфичности селекторов и каскада.

    Специфичность селекторов (selector’s specificity) определяет их приоритетность в таблице стилей. Чем специфичнее селектор, тем выше его приоритет. Для вычисления специфичности селектора используются три группы чисел (a, b, c), расчёт производится следующим образом:

    • Считается число идентификаторов в селекторе (=a)
    • Считается число селекторов классов, атрибутов и псевдо-классов в селекторе (=b)
    • Считается число селекторов типа и псевдо-элементов в селекторе (=c)
    • Селектор внутри псевдо-класса отрицания (:not) считается как любой другой селектор, но сам псевдо-класс отрицания не участвует в вычислении селектора
    • Универсальный селектор (*) и комбинаторы не участвуют в вычислении веса селектора

    В примере селекторы расположены в порядке увеличения их специфичности:

    *               /* a=0 b=0 c=0 -> специфичность =   0 */
    li              /* a=0 b=0 c=1 -> специфичность =   1 */
    ul li           /* a=0 b=0 c=2 -> специфичность =   2 */
    ul ol+li        /* a=0 b=0 c=3 -> специфичность =   3 */
    h1 + *[rel=up]  /* a=0 b=1 c=1 -> специфичность =  11 */
    ul ol li.red    /* a=0 b=1 c=3 -> специфичность =  13 */
    li.red.level    /* a=0 b=2 c=1 -> специфичность =  21 */
    #x34y           /* a=1 b=0 c=0 -> специфичность = 100 */
    #s12:not(p)     /* a=1 b=0 c=1 -> специфичность = 101 */

    Самый высокий приоритет имеет число из группы (a), число группы (b) имеет средний приоритет, число из группы (c) имеет наименьший приоритет. Числа из разных групп не суммируются в одно общее, т.е. возьмём из примера последнюю строку со специфичностью селектора (101) — это не означает число «сто один», это значит, что был использован один селектор из группы «a» (идентификатор) и один селектор из группы «c» (селектор типа).

    Стиль для элемента, определённый внутри атрибута style, имеет больший приоритет, чем любой селектор, определённый в таблице стилей. Однако, если для конкретного свойства в таблице стилей указать специальное объявление !important, то оно будет иметь больший приоритет, чем значение аналогичного свойства, указанного в атрибуте style.

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          #one { color: red; }
          #two { color: blue !important; }
        </style>
      </head>
      <body>
     
        <p id="one" style="color: yellow;">Первый абзац</p>
        <p id="two" style="color: yellow;">Второй абзац.</p>
     
      </body>
    </html>

    Попробовать »

    Каскадность

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

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

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          p { color: yellow; }
          p { color: red; }
          p { color: green; } /* для элемента будет установлен зелёный цвет текста */
        </style>
      </head>
      <body>
        <p>Цвет текста абзаца зелёный.</p>
      </body>
    </html>

    Попробовать »Если разные правила для одного элемента содержат свойства, которые не конфликтуют, то они объединяются в один стиль, т.е. каждое новое правило добавляет новую информацию о стиле к тому правилу, которое находится перед ним, например:

    h1 {
      color: gray;
      font-family: sans-serif;
    }
     
    h1 { border-bottom: 1px solid black; }

    Код, расположенный в примере выше, равносилен коду в примере ниже, в котором все три свойства указаны в одном правиле.

    h1 {
      color: gray;
      font-family: sans-serif;
      border-bottom: 1px solid black;
    }

    Обычно дополнительные правила для элемента указываются в тех случаях, когда был задан один стиль сразу для нескольких элементов, но помимо этого необходимо добавить что-то ещё для определённого элемента, например:

    h1, h2, h3 {  /* одинаковый стиль для трёх элементов */
      color: gray;
      font-family: sans-serif;
    }
    /* дополнительное правило для заголовков второго уровня */
    h2 { border-bottom: 1px solid black; }

    Блочная модель CSS

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

    Блочная модель элемента

    • Margin (внешний отступ) — пустое пространство (поле), которое отделяет один элемент от другого. Самый простой пример внешнего отступа — промежуток между абзацами, идущими друг за другом. Область внешнего отступа прозрачна и не может иметь свой цвет и других эффектов оформления.
    • Border (рамка элемента) — граница с любой стороны элемента. Рамка может быть установлена как со всех сторон элемента, так и с одной стороны. Используя рамку можно просто красиво оформить элемент или визуально отделить содержимое текущего элемента от других элементов страницы.
    • Padding (внутренний отступ) — пустое пространство между содержимым элемента и его рамкой. Область внутреннего отступа прозрачна и не может иметь свой цвет или другие эффекты оформления.
    • У большинства элементов есть область содержимого, в которой располагается всесодержимое элемента (текст, вставляемые изображения или другие элементы).

    Рамка

    Рамка представляет собой обычную линию, которая отображается вокруг стилизуемого элемента. Но совсем не обязательно применять рамку, окружающую элемент со всех сторон. Можно добавить ее только с требуемой строны элемента. Например, если добавить рамку только с нижней строны блочного элемента, то она будет производить тот же эффект, что и элемент <hr> (горизонтальная линия), выступая в качестве разделителя.

    Каждая рамка имеет три свойства, которыми мы можем управлять с помощью CSS: ширина, стиль и цвет, рассмотрим с помощью каких свойств можно их задавать и изменять:

    • border-width — задает ширину рамки. Для установки ширины можно использовать пиксели или ключевые слова: thin, medium, thick.
    • border-style — определяет стиль рамки с помощью одного из восьми возможных значений: solid, dotted, dashed, double, groove, ridge, inset и outset.возможные значения свойства border-style
    • border-color — указывает цвет рамки.

    Вместо указания всех трех свойств, можно указать всего одно — свойство border, которое позволяет одновременно указать ширину, стиль и цвет для рамки.

    Попробуйте сами:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          p.one {
            border-style: solid;
            border-width: 5px;
          }
          p.two {
            border-style: solid;
            border-width: medium;
            border-color: red;
          }
          p.three {
            border: 3px dashed #ffffff;
            background-color: #0000FF;
            color: #ffffff;
          }
        </style>
      </head>
     
      <body>
        <p class="one">Первый абзац.</p>
        <p class="two">Второй абзац.</p>
        <p class="three">Третий абзац.</p>
      </body>
    </html>

    Попробовать »Для управления рамкой отдельно с каждой стороны элемента, используются соответствующие свойства:

    • border-top — верхняя рамка
    • border-left — левая рамка
    • border-right — правая рамка
    • border-bottom — нижняя рамка

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

    Внешний и внутренний отступы

    Внутренний отступ — пустое пространство между содержимым элемента и его рамкой (если она установлена). Для добавления и управления шириной внутренних отступов со всех четырех сторон элемента используется свойство padding.

    Внешний отступ — пустое пространство, отделяющее элемент от других элементов или краев окна браузера. Для добавления и управления шириной внешних отступов со всех четырех сторон элемента используется свойство margin.

    Свойства padding и margin могут принимать от одного до четырех значений:

    padding: 10px 15px 22px 18px;
    margin: 10px 15px 22px 18px;

    Где значения устанавливаются по часовой стрелке, начиная с верхнего:

    порядок значений в свойстве padding
    порядок значений в свойстве margin

    Если у свойств указать всего одно значение, то отступы со всех сторон будут одинаковой ширины.

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

    Попробуйте сами:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          p {
            border: 3px dashed #ffffff;
            background-color: #0066FF;
            color: #ffffff;
            padding: 15px; /*внутренний отступ для всех сторон*/
            margin: 25px;   /*внешний отступ для всех сторон*/
          }
        </style>
      </head>
     
      <body>
        <p>Обычный абзац.</p>
      </body>
    </html>

    Попробовать »Для отступов, так же как и для рамок, есть свойства позволяющие управлять размером отступа с каждой стороны отдельно. Внутренние отступы регулируются свойствами: padding-top, padding-right, padding-bottom и padding-left. Внешние отступы регулируются свойствами: margin-top,margin-right, margin-bottom и margin-left.

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

    Ширина и высота элемента

    По умолчанию для блочных элементов используется автоширина. Это означает, что элемент будет растянут ровно на столько, сколько есть свободного места. Высота блочных элементов по умолчанию устанавливается автоматически, т.е. браузер растягивает область содержимого в вертикальном направлении так, чтобы отобразилось все содержимое. Чтобы установить собственные размеры для области содержимого элемента, вы можете использовать свойства width и height.

    CSS свойство width позволяет задать ширину области содержимого элемента, а свойство heightвысоту области содержимого:

    описание работы CSS свойств height и width

    Обратите внимание, что свойства width и height определяют размер только области содержимого, чтобы вычислить общую ширину блочного элемента, нужно сложить ширину области содержимого, левого и правого внутренних отступов и ширину левой и правой рамки. То же самое касается и общей высоты элемента, только все значения вычисляются по вертикали:

    формула расчета общей высоты и ширины для элемента

    Попробуйте сами:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          p.first {
            width: 150px;
            height: 100px;
            background-color: #B2FFCC;
            padding: 0px;  /*обнуляем внутренние отступы*/
          }
          p.second {
            width: 150px;
            height: 100px;
            background-color: #C2FFFF;
            border: 5px ridge #0066FF;
            padding: 10px;
            margin: 5px;
          }
        </style>
      </head>
     
      <body>
        <p class="first">Для данного абзаца зададим только ширину и высоту.</p>
        <p class="second">Этот абзац содержит, кроме ширины и высоты,
         внутренний отступ, рамку и внешний отступ.</p>
      </body>
    </html>

    Попробовать »В примере хорошо видно, что второй элемент занимает больше пространства, чем первый. Если посчитать по нашей формуле, то размеры первого абзаца — 150x100px, а размеры второго — 180x130px (с учетом внутреннего отступа и рамки).

    После того как вы определили для элемента ширину и высоту, стоит обратить внимание на один немаловажный момент — содержимое, расположенное внутри элемента, может превысить указанный размер блока. В этом случае часть содержимого будет выходить за границы элемента, чтобы избежать этого неприятного момента, можно воспользоваться свойством overflow. Свойство overflow сообщает браузеру, как нужно поступить в том случае, если содержимое блока превышает его размер. Это свойство может принимать одно из четырех значений:

    • visible — значение, используемое браузером по умолчанию. Указание этого значения будет иметь тот же эффект, что и отсутствие установки свойства overflow.
    • scroll — добавляет к элементу полосы прокрутки по вертикали и горизонтали.
    • auto — добавляет полосы прокрутки при необходимости.
    • hidden — скрывает часть содержимого, которое выходит за границы блочного элемента.

    Попробуйте сами:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Название документа</title>
        <style>
          div {
            width:150px;
            height:200px;
            border: 1px solid black;
            overflow:auto;
          }
        </style>
      </head>
     
      <body>
        <div><img src="tree.png"></div>
      </body>
    </html>

    Попробовать »

    float:left

    В случае, если необходимо разместить два блока div в одну линию друг за другом, у первого блока указывается стиль float:left (это означает что своей левой границей данный блок должен прилипнуть к предыдущему блоку в потоке). Первый блок оказывается прижатым, например к левой границе окна браузера. Если следующему блоку в потоке указать тоже самое значение в стилях, то два блока будут выводиться на одной линии. Первый блок будет прилипать к левой границе экрана, а второй, своей левой границей, к правой границе предыдущего блока.

    Если у второго блока указать значения стиля float:right, то оба блока все так же окажутся расположенными на одной линии, но теперь первый блок будет прилипать к левой границе окна браузера, а правый — своей правой стороной к правой границе окна браузера.

    Clear- Запрет на обтекание.

    Устанавливает, с какой стороны элемента запрещено его обтекание другими элементами. Если задано обтекание элемента с помощью свойства float, то clear отменяет его действие для указанных сторон.

    Синтаксис

    clear: none | left | right | both | inherit

    Значения

    None — Отменяет действие свойства clear, при этом обтекание элемента происходит, как задано с помощью свойства float или других настроек.

    Both — Отменяет обтекание элемента одновременно с правого и левого края. Это значение рекомендуется устанавливать, когда требуется снять обтекание элемента, но неизвестно точно с какой стороны.

    Left — Отменяет обтекание с левого края элемента. При этом все другие элементы на этой стороне будут опущены вниз, и располагаться под текущим элементом.

    Right — Отменяет обтекание с правой стороны элемента.

    Inherit — Устанавливает значение родителя.

     

    float


     

    Блочная верстка или основы анатомии скелета сайтов

    Сайты тоже имеют свой скелет. Но о его особенностях спрашивать врачей бесполезно. Да и ветеринары тоже не в курсе строения сайта. Об этом ведомо лишь верстальщикам. Именно от них зависит строение скелета будущего ресурса. А главным способом создания костей его скелета является блочная верстка.

     Следующим этапом разработки сайта после создания его макета является верстка. Задача верстальщика перенести с помощью html кода и таблиц css скелет будущего сайта в виртуальный мир. Проще говоря, перенести размеры и пропорции ресурса в форму, понятную для браузера.

    В процессе верстки кодом html происходит разбивка «скелета» сайта на части. А с помощью css(каскадных таблиц стилей) задаются размеры его «костей», цвет и расположение.

    Различают несколько видов верстки:

    I. Табличная – ранее была основным способом верстки. В табличной верстке для задания структуры сайта используется тег <table> и его дочерние теги. Верстка с помощью таблиц позволяет наиболее пропорционально расположить все элементы дизайна относительно друг друга. Но в тоже время такой код получается слишком объемным:

    Верстка с помощью таблиц

    Также к основным недостаткам табличного кода относится его долгая загрузка и плохая индексация содержимого поисковыми системами.

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

    Плохая индексация табличных страниц объясняется большими промежутками между блоками текста, расположенного в разных ячейках таблицы.

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

    II. Блочная – в данный момент является основным способом верстки. В отличие от табличной блочная верстка обладает рядом преимуществ:

    • Отделение стиля элементов от кода html;
    • Возможность наложения одного слоя на другой – такая возможность во многом облегчает позиционирование элементов.
    • Лучшая индексация поисковиками;
    • Высокая скорость загрузки страницы, состоящей от взаимно независимых элементов;
    • Легкость создания визуальных эффектов (выпадающих меню, списков, всплывающих подсказок).

    Основным недостатком блочной верстки является некая «двусмысленность» понимания ее кода различными браузерами. Поэтому часто html страницы приходится «доводить» путем использования специальных хаков.

    С появлением блочной верстки родилось такое понятие, как «кроссбраузерность». Из-за различия отображения одного и того же элемента в разных браузерах верстальщикам приходится вставлять в основной html целые куски кода (хаки).

    Действие хака является узкоспециализированным и решает проблему некорректного отображения лишь в одном браузере.

    Основным элементом, применяемым в блочной верстке, является тег <div>. Участок кода, отделенный этим тегом, называется слоем. Все стилевые решения вынесены за границы кода html в каскадные таблицы стилей. Доступ к ним осуществляется через идентификаторы или классы css:

    стилевые решения

    Как происходит блочная верстка?

    Перед началом верстки готовый psd макет сайта в графическом редакторе разрезают на блоки (слои). В отдельную папку помещают вырезанные фоновые картинки, которые будут прикрепляться отдельно к каждому слою:

    Как происходит блочная верстка?

    Для примера возьмем вот такой макет сайта, созданный в Photoshop. Сначала в текстовом редакторе с помощью div задаем структуру будущего ресурса и присваиваем каждому слою свой селектор id. Получается такая структура:

    макет сайта

    Затем к готовой структуре сайта на html строкой <link rel=»stylesheet» type=»text/css» href=»style.css» /> прикрепляем файл css. После чего добавляем в него стилевое описание каждого слоя, позиционирование относительно других элементов и его размеры.

    Более подробно ознакомиться со всеми свойствами css можно из технической документации к языку.

    Полный код примера index.html:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <title>Пример блочной верстки</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
     
    <body>
     
    <div id="container">
      <div id="header">
      <h2>Шапка</h2>
      </div>
         
      <div id="navigation">
      <h2>Блок навигации</h2>
      </div>
         
      <div id="menu">
      <h2>Меню</h2>
      </div>
         
      <div id="content">
      <h2>Контент</h2>
      </div>
         
      <div id="clear">
         
      </div>
                     
      <div id="footer">
      <h2>Подвал сайта</h2>
      </div>
    </div>
         
    </body>
    </html>

    Содержимое файла style.css:

    body {
                background: #f3f2f3;
                color: #000000;
                font-family: Trebuchet MS, Arial, Times New Roman;
                font-size: 12px;
    }
     
    #container {
                background:#99CC99;
                margin: 30px auto;
                width: 900px;
                height: 600px;
    }
     
    #header {
                background: #66CCCC;
                height: 100px;
                width: 900px;
    }
     
    #navigation {
                background: #FF9999;
                width: 900px;
                height: 20px;
    }
     
    #menu {
                background: #99CC99;
                float: left;
                width: 200px;
                height: 400px;
    }
     
    #content {
                background: #d2d0d2;
                float: right;
     
                width: 700px;
                height: 400px;
    }
     
    #clear {
                clear:both;
    }
     
    #footer {
                background: #0066FF;
                height: 80px;
                width: 900px;
    }

    Вот так наш пример блочной верстки сайта выглядит в окне браузера:

    пример блочной верстки сайта

    Конечно, этот пример является лишь наглядным пособием для демонстрации того, как происходит блочная верстка. Настоящая верстка происходит с использование фоновых изображений и логотипов, подключаемых в css. А также с включением в html и css кода хаков для оптимизации отображения во всех браузерах.


     

    Заключение

    1. Блочные и строчные тэги

      Блочным называется элемент, который отображается на веб-странице в виде прямоугольника. Такой элемент занимает всю доступную ширину, высота элемента определяется его содержимым, и он всегда начинается с новой строки.
      Строчными называются такие элементы документа, которые являются непосредственной частью строки. В основном они используются для изменения вида текста или его логического выделения.

    Блочные тэги Строчные тэги
    <address>,<blockquote>,<div>,<fieldset>,<form>,<h1>,…,</h1>,<h6></h6>,<hr />,<ol>,<ul>,</ol>,</ul>,<pre>,</pre>,</form></fieldset>,</div></blockquote>,</address>
    <img alt="" />, , <a>, <q>, <code> и др.

    2. Каскадная таблица стилей CSS

    Подключение стилей с помощью тега <link>

    <link rel="stylesheet" type="text/css" href="styles.css">

    тег <link> должен содержать три атрибута:

    • rel=»stylesheet» — указывает тип ссылки; в данном случае это ссылка на таблицу стилей
    • type=»text/css» — указывает тип файла, на который ссылается тег
    • href=»styles.css» — определяет путь к внешнему CSS-файлу, который может отличаться в зависимости от того, где вы его храните

    3.Правила CSS

    CSS представляет из себя правило или набор правил, описывающих форматирование (изменение внешнего вида) отдельных элементов на веб-странице. Правило, состоит из двух частей: селектора и следующим за ним блоком объявлений. На изображении ниже показана структура (синтаксис) правила:

    синтаксис css свойств

    p{color:blue;font-size:12px;}

    4. Селекторы CSS

    • селектор типа
      элемент span Выбор всех элементов <span>. 1
    • универсальный селектор 
      * * Выбор всех элементов. 2
    • селектор класса 
      .class .myclass Выбор всех элементов с class=»myclass». 1
    • селектор идентификатора
      #id #main Выбор элемента с id=»main». 1
  • HTML урок 5. Псевдоклассы и background (фон)

    Содержание:

    • Ссылки
    • Псевдоклассы
    • фон

    Ссылки

    HTML тег a

    С помощью html тега <A> создаются ссылки на сайте. Причем как внешние, так и внутренние. Тег a встречается на каждой странице сайта. Если бы его не было, то было бы очень затруднительно перемещаться по интернету, поскольку каждый адрес страницы (URL) пришлось бы писать вручную.

    Синтаксис тега <A>

    <a class="имя класса" target="параметр" title="подсказка" href="URL">анкор</a>

    Обязательным параметром у ссылки является только href=»URL», т.е. адрес ссылки. Между открывающим тегом <a> и закрывающим тегом </a> пишется анкор ссылки.

    Пример. Html код:

    <body>
    <a href="http://zarabotat-na-sajte.ru/">как заработать на своем сайте</a>
    </body>

    К открывающему тегу <a> можно прописывать различные атрибуты. Они являются не обязательными, но очень важными. Давайте рассмотрим их.

    Атрибуты тега a

    1) Атрибут target=»параметр», который может принимать следующие значения:

    _blank — открывает страницу в новом окне

    _self — загружает страницу в текущее окно

    _parent — загружает страницу во фрейм-родитель

    _top — отменяет все фреймы и загружает страницу в полном окне браузера

    Пример

    <body>
    <a target="_blank" href="http://iboard.kz/">доска бесплатных объявлений в Казахстане</a>
    </body>

    В этом случае мы получим ту же ссылку, что и в первом примере, но перейдя по ней, страница откроется в новом окне.

    2) Атрибут title=»подсказка» позволяет прописать подсказку, которая высветится при наведении курсора на ссылку.

    Пример

    <body>
    <a title="Подсказка для ссылки на главную страницу сайта" href="http://iboard.kz">как заработать на своем сайте</a>
    </body>

    В данном случае подсказка высвечивается стандартным способом. Однако можно также сделать более красивую всплывающую подсказку: как сделать красивую всплывающую подсказку для ссылки.

    3) Атрибут class=»название класса» задает класс для ссылки со стилями. О классах Вы уже знаете из предыдущего урока (стили в html). Для тега a стили имеют небольшие отличия.

    Всё изученное в предыдущих уроках вы можете применять и для ссылок/links (например
    изменять шрифт, цвет, подчёркивание и т. д). Новым будет то, что в CSS эти
    свойства можно определять по-разному, в зависимости от того, посетили уже ссылку,
    активна ли она, находится ли указатель мыши над ссылкой. Это позволяет добавить
    интересные эффекты на ваш web-сайт. Для этого используются так называемые
    псевдоклассы.

    Что такое псевдокласс?

    Псевдокласс позволяет учитывать различные условия или события при определении
    свойств HTM-тэга.
    Рассмотрим пример. Как вы знаете, ссылки специфицируются в HTML тэгом <a>.
    В CSS мы также можем использовать a в качестве селектора:

    a {
    color: blue;
    }

    Ссылка может иметь разные состояния. Например, её уже посетили/visited или
    ещё нет. Можно использовать псевдоклассы для установки разных стилей посещённых
    и непосещённых ссылок.

    a:link {
    color: blue;
    }
    
    a:visited {
    color: red;
    }

    Используйте |a:link| и |a:visited| для непосещённых и посещённых ссылок, соответственно. Активные ссылки имеют псевдокласс a:active, и a:hover, когда указатель — над ссылкой.
    Мы рассмотрим каждый их этих четырёх псевдоклассов на примерах и с
    объяснениями.

    Псевдокласс: link.

    Псевдокласс :link используется для ссылок на страницы, которые
    пользователь ещё не посещал.
    В примере кода непосещённые ссылки — синие.

    a:link {
    color: #6699CC;
    }

    Псевдокласс: visited

    Псевдокласс :visited используется для ссылок на страницы,
    которые пользователь посетил.
    В примере кода посещённые ссылки — фиолетовые.

    a:visited {
    color: #660099;
    }

    Псевдокласс: active

    Псевдокласс :active используется для активных ссылок.
    В примере активные ссылки имеют жёлтый фон.

    a:active {
    background-color: #FFFF00;
    }

    Псевдокласс: hover

    Псевдокласс :hover используется для ссылок, над которыми
    находится указатель мыши.
    Это можно использовать для создания интересных эффектов. Например, если мы
    хотим, чтобы ссылки становились оранжевыми и курсивными при прохождении
    указателя над ними, то наш CSS должен выглядеть так:

    a:hover {
    color: orange;
    font-style: italic;
    }

    Эффект при нахождении указателя над ссылкой

    Эффекты для положения указателя мыши над ссылкой стали уже общим местом. Мы рассмотрим несколько дополнительных примеров для псевдокласса :hover.

    Пример 1a: Расстояние между буквами
    Расстояние между
    символами можно установить свойством letter-spacing. Это можно
    применить для ссылки:

    a:hover {
    letter-spacing: 10px;
    font-weight:bold;
    color:red;
    }

    Пример 1b: UPPERCASE и lowercase
    Свойство text-transform может переключать символы с верхнего на нижний регистр. Это также можно
    использовать для создания эффектов на ссылке:

    a:hover {
    text-transform: uppercase;
    font-weight:bold;
    color:blue;
    background-color:yellow;
    }

    Эти два примера показывают почти безграничные возможности комбинирования
    различных свойств. Вы можете создавать свои собственные эффекты — попробуйте!

    Удаление подчёркивания ссылок

    Обычный вопрос — как удалить подчёркивание ссылок?Вы должны точно определить, нужно ли убрать подчёркивание ссылок, так как это может значительно снизить использование вашего web-сайта. Люди привыкли видеть на web-страницах синие подчёркнутые ссылки и знают, что по ним нужно щёлкать. Даже моя мама знает это! Если вы уберёте подчёркивание и измените цвет ссылок, весьма вероятно, что это смутит пользователей и они не получат доступа ко всему содержимому вашего сайта web-сайт. 

    Вообще-то удалить подчёркивание ссылок очень просто. Свойство text-decoration
    можно использовать для определения подчёркивания текста. Для удаления
    подчёркивания просто установите в text-decoration значение none.

    a {
    text-decoration:none;
    }

    Альтернативно можно также установить text-decoration, наряду с
    другими свойствами, для всех четырёх псевдоклассов.

    a:link {
    color: blue;
    text-decoration:none;
    }
    
    a:visited {
    color: purple;
    text-decoration:none;
    }
    
    a:active {
    background-color: yellow;
    text-decoration:none;
    }
    
    a:hover {
    color:red;
    text-decoration:none;
    }

    В этом уроке вы узнали о том, что такое псевдоклассы, используя некоторые
    свойства из предыдущих уроков. Это должно показать вам, какие возможности
    заложены в CSS.

    Цвет — color

    В течение предыдущих уроков мы все время использовали свойство цвета — color. Это свойство задает цвет текста внутри элемента. Свойство color является наследуемым. Рассмотрим на примере, что это значит. Пусть у нас имеется html-страница со следующим кодом:

    <html>
    <head>
    <title>css color (цвет)</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    <h1>Заголовок</h1>
    <p>Здесь текст параграфа</p>
    Здесь просто текст
    </body>
    </html>

    Зададим стиль для элемента body:

    body{
    color:green;
    }

    Теперь весь текст на странице зеленого цвета. Если мы захотим изменить цвет какого-либо элемента, то ему нужно будет задать свой стиль. Например, сделаем цвет заголовка красным:

    body{
    color:green;
    }
    h1{ 
    color:red; 
    }

    Теперь цвет заголовка красный, т.к. мы задали ему свойство color, а до этого он, как и все остальные элементы, был зеленым, потому что унаследовал свойство color от своего «предка» — элемента body. Таким образом, если у элемента не задано свойство color, то оно наследуется от элемента «предка». Если оно не задано и для предка, то будет осуществлен поиск вверх по дереву элементов, пока не будет найден элемент, для которого это свойство задано. Дерево элементов — структура всех элементов html-страницы, отражающая их вложенность друг в друга. Схематично дерево элементов для нашего примера выглядит так:

    css8

    В нашем примере для элементов h1 и p предком является элемент body, для которого предком является элемент html. Это и есть принцип наследования.
    Значениями свойства color могут быть именные цвета (red, blue…), шестнадцатеричные коды цветов (#FF0000) и десятичные коды цвета в модели RGB (rgb(255, 0, 0)). Итак, задать цвет текста для элемента можно тремя способами:

    body{
    color:green;
    }
    h1{ 
    color:red; 
    }
    h2{ 
    color:rgb(255,0,0); 
    }

    Фон

    Фон — background На самом деле это группа свойств, так или иначе связанная с фоном. При помощи CSS фон можно задать не только странице, но и заголовку, и абзацу, и любому другому элементу. Пусть у нас есть html-страница с таким кодом:

    <html>
    <head>
    <title>css background (фон)</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    Здесь содержимое документа
    </body>
    </html>

    Рассмотрим группу свойств

    background: background-color — задает цвет фона. По умолчанию не наследуется, но его можно сделать наследуемым, если в качестве значения указать значение inherit.
    Пример:

    body{
    background-color:#243CED;
    color:yellow;
    }

    Сейчас наша страница в браузере выглядит так:

    css9

    background-image — задает фоновое изображение. Значением свойства является URL графического файла. Формат задания следующий: сначала идет обозначение функции url, а затем в круглых скобках указывается путь к файлу. Путь к файлу указывается относительно таблицы стилей.

    Пример:

    body{
    background-image:url(picture.gif);
    background-color:#243CED;
    color:yellow;
    }

    Сейчас наша страница в браузере выглядит так:

    css10

    В нашем примере страница стилей style.css лежит в той же папке, что и изображение picture.gif (об относительной адресации читайте на странице абсолютная и относительная адресация). Обратите внимание, мы задали оба свойства: background-image и background-color. Это рекомендуется делать на случай, если фоновое изображение по тем или иным причинам окажется недоступным. При задании обоих свойств фоновое изображение будет лежать поверх фонового цвета.

    background-repeat — задает возможность повторения фонового изображения. В качестве фонового изображения может выступать как цельное изображение (например, шапка сайта), так и маленькое изображение, которое должно замостить собой все пространство элемента. Данное свойство как раз и указывает, повторять ли изображение и, если да, то как именно повторять. Возможны 4 варианта:

    repeat — повторять изображение по горизонтали и вертикали.
    repeat-x — повторять изображение только по горизонтали.
    repeat-y — повторять изображение только по вертикали.
    no-repeat — не повторять изображение.
    По умолчанию используется значение repeat, как мы и убедились в предыдущем примере.

    Давайте посмотрим как ведут себя остальные значения:

    body{
    background-image:url(picture.gif);
    background-repeat:no-repeat;
    background-color:#243CED;
    color:yellow;
    }

    В браузере выглядит так:

    css11

    body{
    background-image:url(picture.gif);
    background-repeat:repeat-x;
    background-color:#243CED;
    color:yellow;
    }

    В браузере выглядит так:

    css12

    body{
    background-image:url(picture.gif);
    background-repeat:repeat-y;
    background-color:#243CED;
    color:yellow;
    }

    В браузере выглядит так:

    css13

    background-attachment — указывает, должно ли фоновое изображение прокручиваться вместе с текстом элемента или оно должно оставаться неподвижным. Может принимать два значения:

    scroll — фон прокручивается вместе с текстом. Это значение используется по умолчанию.

    fixed — фоновое изображение фиксируется относительно окна браузера, и во время прокрутки текста оно остается неподвижным.

    Пример:

    body{
      background-image:url(picture.gif);
      background-repeat:no-repeat;
      background-attachment:fixed;
      background-color:#243CED;
      color:yellow;
    }

     

    Результат действия значения fixed непривычно для пользователя, поэтому применяйте его только когда это действительно обоснованно.

    background-size

    background-size: [ <значение> | <проценты> | auto ]{1,2} | cover | contain

    Значения

    <значение>
    Задает размер в любых доступных для CSS единицах — пикселы (px), сантиметры (cm), em и др.
    <проценты>
    Задает размер фоновой картинки в процентах от ширины или высоты элемента.
    auto
    Если задано одновременно для ширины и высоты (auto auto), размеры фона остаются исходными; если только для одной стороны картинки (100px auto), то размер вычисляется автоматически исходя из пропорций картинки.
    cover
    Масштабирует изображение с сохранением пропорций так, чтобы его ширина или высота равнялась ширине или высоте блока.
    contain
    Масштабирует изображение с сохранением пропорций таким образом, чтобы картинка целиком поместилась внутрь блока.

    Если установлено одно значение, оно задает ширину фона, второе значение принимается за auto. Пропорции картинки при этом сохраняются. Использование двух значений через пробел задает ширину и высоту фоновой картинки.

    background-position — задает расположение элемента относительно окна браузера. Значения можно задавать в процентах, в единицах длины и при помощи ключевых слов. Рассмотрим на примерах:

    body{
      background-image:url(picture.gif);
      background-repeat:no-repeat;
      background-color:#243CED;
      background-position:10% 30%;
      color:yellow;
    }

    Левый верхний угол изображения будет смещен на 10% от ширины окна по горизонтали и на 30% от выстоты окна по вертикали. Следует заметить, что это свойство по-разному воспринимается разными браузерами. Например, в IE7 наш пример будет выглядеть так:

    css14

    А в Opera так:

    css68

    Этой проблемы можно избежать, задавая размер в пикселах:

    body{
      background-image:url(picture.gif);
      background-repeat:no-repeat;
      background-color:#243CED;
      background-position:50px 50px;
      color:yellow;
    }

    Левый верхний угол изображения будет смещен на 50 пикселов по горизонтали и на 50 пикселов по вертикали:

    css15

    body{
      background-image:url(picture.gif);
      background-repeat:no-repeat;
      background-color:#243CED;
      background-position:center top;
      color:yellow;
    }

    Изображение будет выровнено по горизонтали — по центру, а по вертикали — по верхнему краю страницы:

    Вообще, для выравнивания по горизонтали (первый параметр) можно использовать следующие ключевые слова: left (по левому краю), center (по центру) и right (по правому краю). Для выравнивания по вертикали (второй параметр): top (по верхнему краю), center (по центру) и bottom (по нижнему краю).

     Сокращенная запись свойства background

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

    body{
      background:url(picture.gif) no-repeat #33CCFF center top;
      color:yellow;
    }

    Вот мы и рассмотрели свойства цвета и фона. Помните, что их можно применять ко всем элементам. Для тренировки задайте фон для заголовка или ссылки.

    OPACITY

    Краткая информация

    Значение по умолчанию 1
    Наследуется Нет
    Применяется Ко всем элементам
    Процентная запись Неприменима
    Ссылка на спецификацию http://www.w3.org/TR/css3-color/#transparency

    Версии CSS

    CSS 1 CSS 2 CSS 2.1 CSS 3

    Описание

    Определяет уровень прозрачности элемента веб-страницы. При частичной или полной прозрачности через элемент проступает фоновый рисунок или другие элементы, расположенные ниже полупрозрачного объекта.

    Синтаксис

    opacity: значение

    Значения

    В качестве значения выступает число из диапазона [0.0; 1.0]. Значение 0 соответствует полной прозрачности элемента, а 1, наоборот — его непрозрачности. Дробные числа вида 0.6 устанавливают полупрозрачность. Допускается писать числа без нуля впереди, вида opacity: .6.

    Пример

    <!DOCTYPE html>
    <html>
     <head>
      <meta charset="utf-8">
      <title>opacity</title>
      <style>
       .semi {
        opacity: 0.5; /* Полупрозрачность элемента */
       }
      </style>
     </head>
     <body>
     <p>
     <img src="images/igels.png" alt="Обычный рисунок">
     <img src="images/igels.png" alt="Полупрозрачный рисунок" class="semi">
     </p>
     </body>
    </html>
    

    Результат данного примера:

    Untitled-10

    Браузеры

    Firefox до версии 3.5 поддерживает нестандартное свойство -moz-opacity.

    Internet Explorer до версии 9.0 для изменения прозрачности использует фильтры, для этого браузера следует записать filter: alpha(opacity=50), где параметр opacity может принимать значение от 0 до 100

     

  • Задание к уроку 9 php. Сжатие изображений

    Задание:

    Используя функцию сжатия изображений из урока 9  и форму загрузки изображений из задания к уроку 5(исключить отправку уведомления на почту), выполнить сжатие загружаемого изображения и в ответе об успехе вывести все 3 размера изображения

    1. s_my_first_uploaded_image.jpg
    2. l_my_first_uploaded_image.jpg
    3. my_first_uploaded_image.jpg

    [spoiler title=»Решение»]

    index.php

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Загрузка файла</title>
    </head>
    <body>
     <form action="upload.php" method="post" enctype="multipart/form-data">
     <input type="file" name="fileToUpload" id="fileToUpload">
     <input type="submit" value="Загрузить изображение" name="submit">
     </form>
    </body>
    </html>

    upload.php

    <?
      $type = explode('/', $_FILES['fileToUpload']['type'])[1];
      if($type == "jpeg" or $type == "png" or $type == "bmp" or $type == "gif") {
        $filename = 'my_first_uploaded_image.' . $type;
        $uploaddir = 'uploads/';
        $uploadfile = $uploaddir . $filename;
        $uploadfile_s = $uploaddir .'s_'. $filename;
        $uploadfile_l = $uploaddir .'l_'. $filename;
        if(!file_exists($uploaddir)) {
          mkdir($uploaddir);
        }
        if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
          if(compress($uploaddir, $filename)) {
            echo "Файл корректен был сжат и успешно загружен. <a href='index.php'>Вернуться.</a><br>";
            echo "<img src='$uploadfile'>";
          } else {
            echo "Файл корректен и был успешно загружен. <a href='index.php'>Вернуться.</a><br>";
            echo "<img src='$uploadfile_s'><br>";
            echo "<img src='$uploadfile_l'><br>";
            echo "<img src='$uploadfile'><br>";
          }
        } else {
            echo "Во время загрузки произошла ошибка! <a href='index.php'>Попробуйте снова.</a>";
        }
      } else {
        echo "Неверный тип изображения, проверьте загружаемый файл и <a href='index.php'>попробуйте снова.</a>
        <br>Типы файлов которые могут быть загружены:<br> JPEG, JPG, PNG, BMP, GIF";
      }
    
      function compress($path,$file) {
      $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
      //error_reporting(0);
      ini_set('memory_limit', '512M');
      if($ext=='jpg' || $ext=='jpeg'|| $ext=='png') {
        $sfile=$path."s_".$file;
        $lfile=$path."l_".$file;
        $fullfile=$path.$file;
        if(!($im = imagecreatefromjpeg($fullfile)))
        $im = imagecreatefrompng($fullfile);
        if($im) {
          $iw = imagesx($im); $ih = imagesy($im);
          $k = 650 / $iw;
          if($k>1)$k=1;
          $sx = floor($iw * $k); $sy = floor($ih * $k);
          $im_m = imagecreatetruecolor($sx, $sy);
          imagealphablending( $im_m, false );
          imagesavealpha( $im_m, true );
          $transparent = imagecolorallocatealpha($im_m, 255, 255, 255,255);
          imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);
          imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
          $r_l = imagejpeg($im_m,$lfile);
          $iw = imagesx($im); $ih = imagesy($im);
          $k = 100 / $iw;
          if($k>1)$k=1;
          $sx = floor($iw * $k); $sy = floor($ih * $k);
          $im_m = imagecreatetruecolor($sx, $sy);
          imagealphablending( $im_m, false );
          imagesavealpha( $im_m, true );
          $transparent = imagecolorallocatealpha($im_m, 255, 255, 255, 127);
          imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);
          imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
          $r_s = imagejpeg($im_m,$sfile);
        }	else {
          copy($fullfile, $lfile);
          copy($fullfile, $sfile);
        }
      }
      error_reporting(1);
    }
    ?>
    

    [/spoiler]

  • HTML урок 8. Анимация

    <html>
      <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="style.css">
        <title>Блочная верстка</title>
      </head>
      <body>
      <div class="wrapper">
        <div id="header">
          <div class="logo"><a href="index.html">Ikurs</a></div>
        </div>
        <div id="nav">
          <nav>
            <ul>
              <li><a href="index.html">Главная</a></li>
              <li><a href="#">Услуги</a></li>
              <li><a href="#">Контакты</a></li>
            </ul>
          </nav>
        </div>
        <div id="content">
          <div class="col-4"><img class="blur" src="images/webmaster.jpg"></div>	
          <div class="col-4"><img class="op" src="images/webmaster.jpg"></div>	
          <div class="col-4"><img src="images/webmaster.jpg"></div>	
          <div class="col-4"><img src="images/webmaster.jpg"></div>
    
          <div class="col-3"><img src="images/webmaster.jpg"></div>
          <div class="col-3"><img src="images/webmaster.jpg"></div>
          <div class="col-3"><img src="images/webmaster.jpg"></div>			
        </div>
        <div id="sidebar">sidebar</div>
        <div id="footer">footer</div>
        <div class="sqr"><a href="#">up</a></div>
      </div>	
      </body>
    </html>
    

     

    /*Универсальный селектор 0 б*/
    *{
      margin:0;
      padding:0;
      box-sizing:border-box;
    }
    body{
      font-family:Calibri,sans-serif;
      background:pink url(images/symphony.png) repeat;
      background-position:100% 50%;
    }
    img{
      max-width:100%;
      width:auto;
    }
    /*Селекторы тегов (элементов) 2 б*/
    
    .wrapper{
      max-width:960px;
      margin:0 auto;
    }
    #header,#footer,#nav{
      width:100%;
      float:left;
      background: rgba(0, 0, 0, 0.70);
      padding:10px 20px;
      border-bottom:#fff solid 2px;
    }
    #header{
      position:fixed;
      max-width:960px;
      width:100%;
      z-index:1;
    }
    #nav{
      position:fixed;
      max-width:960px;
      width:100%;
      top:60px;
      z-index:1;
    }
    #content{
      margin-top:120px;
      width:calc(100% - 300px);
      float:left;
      background:#eee url(images/webmaster.jpg) no-repeat;
      background-size:cover;
      background-position: 50% 50%;
      background-attachment:fixed;
      padding:10px 20px;
      height:700px;
      
    }
    #sidebar{
      margin-top:120px;
      width:300px;
      float:left;
      background:#ddd;
      padding:10px 20px;
    }
    /*Селекторы классов 10 б*/
    .logo{
      text-align:center;
    }
    .logo a{
      color:#fff;
      font-size:30px;	
      text-decoration:none;
    }
    #nav li{
      float:left;
      margin: 10px 0;
    }
    #nav a{
      color:#000;
      padding:10px;
      text-decoration:none;
      background:#fff;
      border:2px transparent solid;
      
    }
    #nav a:hover{
      /*background:#fff;*/
      border:2px #333 solid;
    }
    #content{
      position:relative;
    }
    .sqr{
      width:50px;
      height:50px;
      background:red;
      position:fixed;
      right:0%;
      bottom:0;
      z-index:999;
    }
    .col-4{
      width:25%;
      float:left;
      padding:10px;
    }
    .col-3{
      width:33.3%;
      float:left;
      padding:10px;
    }
    .blur{
      filter: blur(5px);
       -webkit-filter: blur(5px);
      -o-filter: blur(5px);
      -moz-filter: blur(5px);
      -ms-filter: blur(5px);
    }
    .blur:hover{
      -webkit-filter: blur(0px);
    }
    .op{
      opacity:0.5;
    }
    .op:hover{
      opacity:1;
    }
    
    
    
    /*Селекторы идентификаторов 100 б*/
    

     

    Содержание:

    • @keyframesanimation-name
    • animation-duration
    • animation-timing-function
    • animation-iteration-count
    • animation-direction
    • animation-play-state
    • animation-delay
    • animation-fill-mode

    Свойство animation позволяет анимировать элементы страницы.

    Можно управлять длительностью анимации, повторением, направлением, типом движения и шагами. Анимировать можно любые элементы, в том числе псевдо-элементы.

    Обязательное условие — наличие конкретных значений. Свойства со значением auto не анимируются.

    @keyframes

    Сама анимация задается внутри блока @keyframes. После @keyframes задается имя анимации, а потом внутри фигурных скобок — её шаги.

    Шаги можно задавать через проценты или с помощью ключевых слов from и to. При этом в шагах можно менять тип анимации (animation-timing-function):

    /* Современные браузеры, кроме Chrome, Opera, Safari */
    @keyframes go-left-right {   /* назовём анимацию: "go-left-right" */
      from {
        left: 0px;               /* от: left: 0px */
      }
      to {
        left: calc(100% - 50px); /* до: left: 100%-50px */
      }
    }
    
    /* Префикс для Chrome, Opera, Safari */
    @-webkit-keyframes go-left-right {
      from {
        left: 0px;
      }
      to {
        left: calc(100% - 50px);
      }
    }
    
    .progress {
      /* применить анимацию go-left-right */
      /* продолжительность 3s */
      /* количество раз: бесконечное (infinite) */
      /* менять направление анимации каждый раз (alternate) */
      animation: go-left-right 3s infinite alternate;
      -webkit-animation: go-left-right 3s infinite alternate;

    Animation-name

    Используется для задания имени анимации.

    Возможные значения: одно или несколько имен анимации. Значение по умолчанию: нет.

    animation-name: move; — одна анимация. animation-name: move, sun-color; — две анимации, имена задаются через запятую.

    Animation-duration

    Длительностью анимации управляет свойство animation-duration.

    Возможные значения: время в секундах (s) или миллисекундах (ms). В случае нескольких анимаций время для каждой из них можно задать через запятую. Исходное значение — 0s.

    Animation-timing-function

    Свойство определяет тип анимации.

    Возможные значения:

    Плавная анимация

    • ease — скольжение (значение по умолчанию)
    • linear — ровное движение
    • ease-in — ускорение к концу
    • ease-out — ускорение в начале
    • ease-in-out — более плавное скольжение, чем ease
    • cubic-bezier(число,число,число,число) позволяет задавать сложный тип анимации.

    Animation-iteration-count

    Управляет повторением анимации. Значение по умолчанию: 1 (анимация проигрывается один раз).

    Возможные значения:

    число — сколько раз проиграть анимацию. infinite — бесконечное повторение.

    Animation-direction

    Отвечает за направление анимации.

    Возможные значения:

    • normal — анимация проигрывается в обычном направлении, с начала и до конца.
    • reverse — анимация проигрывается в обратном направлении, то есть с конца.
    • alternate — анимация проигрывается с начала и до конца, а затем в обратном направлении.
    • alternate-reverse — анимация проигрывается с конца до начала, а затем в обратном направлении.

    Animation-play-state

    Управляет остановкой и проигрыванием анимации.

    Возможные значения:

    • running — анимация проигрывается (значение по умолчанию).
    • paused — анимация застывает на первом шаге.

    Управлять шагом, где будет остановка, не получается, но можно останавливать анимацию по :hover

    Animation-delay

    С помощью animation-delay можно задавать задержку анимации перед началом воспроизведения.

    Возможные значения: время в секундах (s) или миллисекундах (ms). Значения могут быть отрицательными. В случае нескольких анимаций время для каждой из них можно задать через запятую. Исходное значение — 0s.

    Все эти свойства можно записать с помощью короткой записи, например:

    animation: timing 5s infinite alternate;
    

    Обязательные значения — имя анимации и длительность. Первое временное значение считается длительностью воспроизведения, второе — задержкой.


     

    Готовые ключевые кадры на сайте http://daneden.github.io/animate.css/, обязательно скачайте файл animate.css и подключите его к вашей странице.

    Для того чтобы получить анимацию при прокрутке используйте нижеописанный скрипт и разместите его перед закрывающимся тего </body>

    <script>$(window).scroll(function() {
        $('.mov').each(function(){
          var imagePos = $(this).offset().top;
          var topOfWindow = $(window).scrollTop();
          if (imagePos < topOfWindow+200) {
            $(this).addClass('wobble');
          }
        });
      });
    </script>

    Скрипт работает с библиотекой jquery, чтобы его подключить в контейнер </head> вставьте:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

     

     

     

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

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

    Cверстать на выбор веб-дизайн или порода Японская Хаски

        1. Скопируйте «2urok.html» и переименуйте его на 3urok.html. В title замените 2 урок на 3 урок
        2. В самом конце документа создайте таблицу Плюсы и минусы профессии. В таблице создайте 4 строки и 2 столбца
          <table>
          <tr> <th>1 строка 1 заголовок столбца</th> <th>1 строка 2 заголовок столбца</th> </tr>
          <tr> <td>2 строка 1 столбец</td> <td>2 строка 2 столбец</td> </tr>
          <tr> <td>3 строка 1 столбец</td> <td>3 строка 2 столбец</td> </tr>
          <tr> <td>4 строка 1 столбец</td><td>4 строка 2 столбец</td> </tr>
          
          </table>

          Плюсы и минусы профессии

          1 строка 1 заголовок столбца 1 строка 2 заголовок столбца
          2 строка 1 столбец 2 строка 2 столбец
          3 строка 1 столбец 3 строка 2 столбец
          4 строка 1 столбец 4 строка 2 столбец

          После открывающегося тега <table> пропишите название таблицы используя парный тег <caption></caption> —  Плюсы и минусы профессии, и задайте следующие стили: размер шрифта — 20px, толщина текста — bold, фон — #FFDCF3;

          Объедините смежные ячейки строк первого столбца используется атрибут colspan=»2″

          Плюсы и минусы профессии

          1 строка 1 заголовок столбца 1 строка 2 заголовок столбца
          2 строка 1 столбец 2 строка 2 столбец 2 строка 3 столбец
          3 строка 1 столбец 3 строка 2 столбец 3 строка 3 столбец
          4 строка 1 столбец 4 строка 2 столбец 4 строка 3 столбец
          <table>
          <caption style="font-size:20px;font-weight:bold;background:#FFDCF3;">Плюсы и минусы профессии</caption>
          <th colspan="2">1 строка 1 заголовок столбца</th>
          <th>1 строка 2 заголовок столбца</th>
          </tr>
          <tr>
          <td>2 строка 1 столбец</td>
          <td>2 строка 2 столбец</td>
          <td>2 строка 3 столбец</td>
          </tr>
          <tr>
          <td>3 строка 1 столбец</td>
          <td>3 строка 2 столбец</td>
          <td>3 строка 3 столбец</td>
          </tr>
          <tr>
          <td>4 строка 1 столбец</td>
          <td>4 строка 2 столбец</td>
          <td>4 строка 3 столбец</td>
          </tr>
          </table>

          Объедините смежные ячейки столбцов  второго столбца используется атрибут rowspan=»2″ во втором столбце второй ячейке, удалив лишние элементы во втором столбце

          Плюсы и минусы профессии

          1 строка 1 заголовок столбца 1 строка 2 заголовок столбца
          2 строка 1 столбец 2 строка 2 столбец 2 строка 3 столбец
          3 строка 1 столбец 3 строка 2 столбец
          4 строка 1 столбец 4 строка 2 столбец
          <table>
          <caption style="font-size:20px;font-weight:bold;background:#FFDCF3;">Плюсы и минусы профессии</caption>
          <tr>
          <th colspan="2">1 строка 1 заголовок столбца</th>
          <th>1 строка 2 заголовок столбца</th>
          </tr>
          <tr>
          <td>2 строка 1 столбец</td>
          <td>2 строка 2 столбец</td>
          <td rowspan="3">2 строка 3 столбец</td>
          </tr>
          <tr>
          <td>3 строка 1 столбец</td>
          <td>3 строка 2 столбец</td>
          </tr>
          <tr>
          <td>4 строка 1 столбец</td>
          <td>4 строка 2 столбец</td>
          </tr>
          </table>
          
          

           

          Заполните таблицу следующим содержимым как на рис.1:

          Плюсы профессии:

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

          Минусы профессии:

          • несовпадение (иногда) художественного видения заказчика и исполнителя, из-за чего приходится либо убеждать в необходимости конкретного дизайнерского решения, либо соглашаться с поправками.

          табл

           

           

          рис.1

          <table  border="" style="border-collapse:collapse;">
          <caption style="font-size:20px;font-weight:bold;background:#FFDCF3;">Плюсы и минусы профессии</caption>
          <tr><th colspan="2">Плюсы профессии:</th><th>Минусы профессии:</th></tr>
          <tr><td>постоянная востребованность на рынке труда,</td><td >работа не ограничивается пределами одной страны,</td><td rowspan="3">несовпадение (иногда) художественного видения заказчика и исполнителя, из-за чего приходится либо убеждать в необходимости конкретного дизайнерского решения, либо соглашаться с поправками.</td></tr>
          <tr><td>возможность удаленной работы,</td><td>широкие возможности профессионального роста,</td></tr>
          <tr><td>можно реализовать практически любую идею без денежных затрат,</td><td>достойная оплата труда.</td></tr>
          </table>
        3. После таблицы вставте следующий текст в абзац

    «Конечно, немного странно требовать от дизайнера верстать и программировать то, что он нарисовал. Для верстки существуют верстальщики, для программирования — php-программисты. Но сейчас многие компании ищут универсальных специалистов, которые могут закрыть в компании сразу несколько «дыр». За это, впрочем, и платят значительно лучше и берут на работу охотнее.»

    4. Используя маркированный список, добавьте следующее содержимое:

    Требования к веб-дизайнеру

    Основные требования к веб-дизайнеру таковы:

    • Портфолио проектов (иначе говоря, опыт работы).
    • Базовые знания HTML‚ CSS и начальные навыки верстки.
    • Знание Photoshop, Illustrator, CorelDraw, Flash (изредка другие графические программы).
    • Умение создавать иконки, иллюстрации и баннеры.
    • <h3>Требования к веб-дизайнеру</h3>
      <ul>
      <strong>Основные требования к веб-дизайнеру таковы:</strong>
      
      <li>Портфолио проектов (иначе говоря, опыт работы).</li>
      <li>Базовые знания HTML‚ CSS и начальные навыки верстки.</li>
      <li>Знание Photoshop, Illustrator, CorelDraw, Flash (изредка другие графические программы).</li>
      <li>Умение создавать иконки, иллюстрации и баннеры.</li>
      </ul>

    5. Используя ссылки создайте 3 якоря для заголовков второго уровня и к таблице: w1, w2, w3

    <h2 id="w1" style="text-align:center;background: #F1C1FD;letter-spacing:0.3em;">Кто такой Web-дизайнер?</h2>	
    
    <h2 id="w2" style="text-align:center; background: #FFDCF3;letter-spacing:0.3em;">Описание деятельности</h2>
    
    <table id="w3" border="1" style="border-collapse:collapse;">

    Используя 3 верхних изображения, сделайте их ссылками на созданные якоря

    <a href="#w1"><img src="images/web_design.jpg" alt="Веб дизайнер" height="300px;"></a>
      <a href="#w2"><img src="images/colorwebdesign.jpg" alt="Веб дизайнер" height="300px;"></a>
      <a href="#w3"><img src="images/web_design3.png" alt="Веб дизайнер" height="300px;"></a>

    6. После заголовка первого уровня создайте тег <nav>  и разместите в нем ссылки на, созданные вами на предыдущих занятиях, документы. При этом они должны открываться в новом окне

    <nav style="text-align:center;"><a href="1.html" target="_blank">1 урок</a>  | <a href="2.html" target="_blank">2 урок</a> | <a href="3.html" target="_blank">3 урок</a></nav>

     

    Вот что у вас должно получиться

    <html>
    <head>
     <title>3 урок-Профессия WEB-ДИЗАЙНЕР</title>
     <meta charset="utf-8">
     <meta name="description" content="Веб-дизайнер - профессия 21 века.Профессию web-дизайнера является перспективной в карьерном плане.Он специалист в области компьютерных технологий, который отвечает за то, как выглядит и воспринимается Интернет-сайт.">
     <meta name="keywords" content="Web дизайнер дизайн страниц графический дизайн интернет сайт компьтерные технологии баннер фриланс свободный график создание сайта web интерфейс художественное оформление сайта">
     <meta name="author" lang="ru" content="Жарова Салтанат" >
     <meta name="robots" content="index,follow">
    </head>
    <body style="font-family: Courier New,sans-serif;width:1200px;">
      <h1 style="text-align:center;background: #FFDCF3;">Профессия <span style="color:brown;">WEB-ДИЗАЙНЕР</span></h1>
      <nav style="text-align:center;"><a href="1.html" target="_blank">1 урок</a>  | <a href="2.html" target="_blank">2 урок</a> | <a href="3.html" target="_blank">3 урок</a></nav>
      
      <a href="#w1"><img src="images/web_design.jpg" alt="Веб дизайнер" height="300px;"></a>
      <a href="#w2"><img src="images/colorwebdesign.jpg" alt="Веб дизайнер" height="300px;"></a>
      <a href="#w3"><img src="images/web_design3.png" alt="Веб дизайнер" height="300px;"></a>
      <pre style="text-align: right;">
      «Цифровой дизайн похож на живопись, только краски никогда не сохнут».
                                  Невилл Броуди (Neville Brody)</pre>
      <hr>
    <h2 id="w1" style="text-align:center;background: #F1C1FD;letter-spacing:0.3em;">Кто такой Web-дизайнер?</h2>	
    <p>Web-дизайн (от англ. Web design) - отрасль web-разработки и разновидность дизайна.<br> <strong>Web-дизайнер</strong> – это специалист в области компьютерных технологий, который отвечает за то, как выглядит и воспринимается Интернет-сайт.</p>
    <h3 style="color:#FF00D2;">В обязанности Веб-дизайнера входит:</h3>
    <ol>
    <li>создание логотипов, баннеров и других элементов графики</li>
    <li>продумывает навигацию по сайту</li>
    <li>определяет, где следует разместить текст</li>
    <li>учет времени загрузки сайта</li>
    <li>проектирует пользовательский интерфейс</li>
    </ol>
    
    <p style="font-weight: bold; background: #FFDCF3;line-height: 2em;"> <i>Его задача:</i> помочь пользователю сориентироваться на веб-сайте, сделать работу пользователя с веб-сайтом легкой и приятной. В тоже время веб-дизайнер должен помнить, что он создает рекламный продукт, который должен соответствовать поставленным задачам (т.е. доносить некое рекламное сообщение до пользователя). </p>
    <hr>
    <img src="images/web_design2.jpg" alt="обязанности веб-дизайнера" >
    <h2 id="w2" style="text-align:center; background: #FFDCF3;letter-spacing:0.3em;">Описание деятельности</h2>
    <p>Основной сферой деятельности web-дизайнера является стилевая, визуальная и программная организация информации электронного формата, логичное и приятное оформление информации, графическое отображение её на страницах Интернета.</p>
    <h3>Cредняя заработная плата</h3>
    
    <p style="width: 500px;text-align: center;background: #9BEA9B;line-height: 3em;font-weight: bolder;font-size: 20px;">В Казахстане — 90-200 тысяч тенге</p>
    <p style="text-align:right;"><em>Источник HeadHunter</em></p>
    
    
    <table id="w3" border="" style="border-collapse:collapse;">
    <caption style="font-size:20px;font-weight:bold;background:#FFDCF3;">Плюсы и минусы профессии</caption>
    <tr><th colspan="2">Плюсы профессии:</th><th>Минусы профессии:</th></tr>
    <tr><td>постоянная востребованность на рынке труда,</td><td >работа не ограничивается пределами одной страны,</td><td rowspan="3">несовпадение (иногда) художественного видения заказчика и исполнителя, из-за чего приходится либо убеждать в необходимости конкретного дизайнерского решения, либо соглашаться с поправками.</td></tr>
    <tr><td>возможность удаленной работы,</td><td>широкие возможности профессионального роста,</td></tr>
    <tr><td>можно реализовать практически любую идею без денежных затрат,</td><td>достойная оплата труда.</td></tr>
    </table>
    <p>Конечно, немного странно требовать от дизайнера верстать и программировать то, что он нарисовал. Для верстки существуют верстальщики, для программирования — php-программисты. Но сейчас многие компании ищут универсальных специалистов, которые могут закрыть в компании сразу несколько «дыр». За это, впрочем, и платят значительно лучше и берут на работу охотнее.</p>
    
    <h3>Требования к веб-дизайнеру</h3>
    <ul>
    <strong>Основные требования к веб-дизайнеру таковы:</strong>
    
    <li>Портфолио проектов (иначе говоря, опыт работы).</li>
    <li>Базовые знания HTML‚ CSS и начальные навыки верстки.</li>
    <li>Знание Photoshop, Illustrator, CorelDraw, Flash (изредка другие графические программы).</li>
    <li>Умение создавать иконки, иллюстрации и баннеры.</li>
    </ul>
    </body>
    </html>

    https://ot7.ru/html/3.html

    https://ot7.ru/1urok/