Рубрика: HTML,CSS

  • Задание к уроку 10 php. Использование цикла foreach

    Задание:

    Используя данный массив, вывести с помощью foreach блок div с классом block-info

    <?
    $info = [
     0 => [
     "name" => "Mercedes-Benz S 320",
     "info" => "Литые диски, тонировка, багажник, ксенон, дневные ходовые огни, омыватель фар, обогрев зеркал, кожа, дерево, алькантара, аудиосистема, встроенный телефон, CD, CD-чейнджер, MP3, ГУР, ABS, SRS, зимний режим, спортивный режим, турбонаддув, иммобилайзер, полный электропакет, центрозамок, климат-контроль, круиз-контроль, бортовой компьютер, мультируль, подогрев сидений, подогрев задних сидений, вентиляция сидений, память руля, парктроники, датчик света, пневмоподвеска, изменяемый клиренс, налог уплачен, техосмотр пройден.",
     "img" => "http://e.photos.kl.kcdn.kz/21/c360fff05b3eb217a41e20a6c9cbce/2-400x300.jpg"
     ],
     1 => [
     "name" => "Mercedes-Benz S 500",
     "info" => "Люк, ксенон, дневные ходовые огни, кожа, бесключевой доступ, камера заднего вида, налог уплачен, техосмотр пройден.<br>Не работают парктроники и дистроник. Торг.",
     "img" => "http://d.photos.kl.kcdn.kz/ef/bf2f4c5b672b76b0d0729e0c64d6ef/1-400x300.jpg"
     ],
     2 => [
     "name" => "Porsche Cayenne",
     "info" => "Панорамная крыша, алькантара, изменяемый клиренс.<br>аэродинамический обвес Sport Design, PASM (Porsche Active Suspension Management), PDCC (Porsche Dynamic Chassis Control). Porsche Cayenne GTS фирменного для этой модели цвета Carmine Red. Авто в отличном состоянии, обслуживается на официальном сервисе",
     "img" => "http://e.photos.kl.kcdn.kz/c2/de3895b8a2808c05c0a68c41a7da58/2-400x300.jpg"
     ],
     3 => [
     "name" => "Toyota Land Cruiser",
     "info" => "Новый авто 2015 года, без пробега абсолютно! Черный и белый. Максимальная комплектация 7 мест. Гарантия 2 года.",
     "img" => "http://d.photos.kl.kcdn.kz/ca/469c35e1e9e5c996f8713e1879336c/1-400x300.jpg"
     ],
    ];
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
      <style>
      .block-info {
        width: 500px;
        border: solid 1px #111;
        display: block;
        position: relative;
        padding-left: 120px;
      }
      .block-info img {
        position: absolute;
        left: 10px;
        top: 10px;
        display: inline;
        width: 100px;
      }
    </style>
      <div class="block-info">
        <img src="http://d.photos.kl.kcdn.kz/ca/469c35e1e9e5c996f8713e1879336c/1-400x300.jpg" alt="Toyota Land Cruiser">
        <h3>Toyota Land Cruiser</h3>
        <p>Новый авто 2015 года, без пробега абсолютно! Черный и белый. Максимальная комплектация 7 мест. Гарантия 2 года.</p>
      </div>
    </body>
    </html>

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

    <?
    $info = [
      0 => [
        "name" => "Mercedes-Benz S 320",
        "info" => "Литые диски, тонировка, багажник, ксенон, дневные ходовые огни, омыватель фар, обогрев зеркал, кожа, дерево, алькантара, аудиосистема, встроенный телефон, CD, CD-чейнджер, MP3, ГУР, ABS, SRS, зимний режим, спортивный режим, турбонаддув, иммобилайзер, полный электропакет, центрозамок, климат-контроль, круиз-контроль, бортовой компьютер, мультируль, подогрев сидений, подогрев задних сидений, вентиляция сидений, память руля, парктроники, датчик света, пневмоподвеска, изменяемый клиренс, налог уплачен, техосмотр пройден.",
        "img" => "http://e.photos.kl.kcdn.kz/21/c360fff05b3eb217a41e20a6c9cbce/2-400x300.jpg"
      ],
      1 => [
        "name" => "Mercedes-Benz S 500",
        "info" => "Люк, ксенон, дневные ходовые огни, кожа, бесключевой доступ, камера заднего вида, налог уплачен, техосмотр пройден.<br>Не работают парктроники и дистроник. Торг.",
        "img" => "http://d.photos.kl.kcdn.kz/ef/bf2f4c5b672b76b0d0729e0c64d6ef/1-400x300.jpg"
      ],
      2 => [
        "name" => "Porsche Cayenne",
        "info" => "Панорамная крыша, алькантара, изменяемый клиренс.<br>аэродинамический обвес Sport Design, PASM (Porsche Active Suspension Management), PDCC (Porsche Dynamic Chassis Control). Porsche Cayenne GTS фирменного для этой модели цвета Carmine Red. Авто в отличном состоянии, обслуживается на официальном сервисе",
        "img" => "http://e.photos.kl.kcdn.kz/c2/de3895b8a2808c05c0a68c41a7da58/2-400x300.jpg"
      ],
      3 => [
        "name" => "Toyota Land Cruiser",
        "info" => "Новый авто 2015 года, без пробега абсолютно! Черный и белый. Максимальная комплектация 7 мест. Гарантия 2 года.",
        "img" => "http://d.photos.kl.kcdn.kz/ca/469c35e1e9e5c996f8713e1879336c/1-400x300.jpg"
      ],
    ];
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
    </head>
    <body>
    <style>
      .block-info {
        width: 500px;
        border: solid 1px #111;
        display: block;
        position: relative;
        padding-left: 120px;
      }
      .block-info img {
        position: absolute;
        left: 10px;
        top: 10px;
        display: inline;
        width: 100px;
      }
    </style>
      <?foreach ($info as $inf) {?>
      <div class="block-info">
        <img src="<?=$inf['img']?>" alt="<?=$inf['name']?>">
        <h3><?=$inf['name']?></h3>
        <p><?=$inf['info']?></p>
      </div>
      <?}?>
    </body>
    </html>

    [/spoiler]

  • Задание к 11 уроку php. Написание своих функций

    Задание:

    Написать функцию создания ссылки:

    Пример использования:

    $href = "https://ot7.ru/?p=545";
    $text = "Lorem ipsum";
    $class = "myhref";
    my_href($href, $text, $class);

    должны получить:

     <a href="https://ot7.ru/?p=545" class=".myhref">Lorem ipsum</a>

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

    <?
    $href = "https://ot7.ru/?p=545";
    $text = "Lorem ipsum";
    $class = "myhref";
    my_href($href, $text, $class);
    function my_href($href = "#", $text = 'ссылка', $class = 'link') {
      echo "<a href='$href' class='.$class'>$text</a>";
    }
    ?>

    [/spoiler]

     

     

  • Задание к 12 уроку php. Функция замены строк.

    Задание:

    Написать функцию kirToLat($str) для замены входящего текста из кириллицы на транслит, используя готовый массив алфавита:

    [spoiler title=»Готовый массив»]

    $abc = ["А"=>"A", "а"=>"а", "Б"=>"B", "б"=>"b", "В"=>"V", "в"=>"v", "Г"=>"G", "г"=>"g", "Д"=>"D", "д"=>"d", "Е"=>"E", "е"=>"e", "Ё"=>"YO", "ё"=>"yo", "Ж"=>"J", "ж"=>"j", "З"=>"Z", "з"=>"z", "И"=>"i", "и"=>"i", "Й"=>"Y", "й"=>"y", "К"=>"K", "к"=>"k", "Л"=>"L", "л"=>"l", "М"=>"M", "м"=>"m", "Н"=>"N", "н"=>"n", "О"=>"O", "о"=>"o", "П"=>"P", "п"=>"p", "Р"=>"R", "р"=>"r", "С"=>"S", "с"=>"s", "Т"=>"T", "т"=>"t", "У"=>"U", "у"=>"u", "Ф"=>"F", "ф"=>"f", "Х"=>"H", "х"=>"h", "Ц"=>"C", "ц"=>"c", "Ч"=>"CH", "ч"=>"ch", "Ш"=>"SH", "ш"=>"sh", "Щ"=>"ScH", "щ"=>"sch", "Ъ"=>"'", "ъ"=>"'", "Ы"=>"I", "ы"=>"i", "Ь"=>"'", "ь"=>"'", "Э"=>"E'", "э"=>"e'", "Ю"=>"YU", "ю"=>"yu", "Я"=>"YA", "я"=>"ya",];

    [/spoiler]

    Обязательные условия:

    1. Заменить символы используя цикл foreachУрок 10. Использование цикла foreach
    2. Функция должна возвращать полученную строку в транслите с помощью return. Урок 11. Написание своих функций
    3. <?
      if(isset($_POST['str'])) {
        echo "<p><b>Первоначальная строка: </b>".trim($_POST['str'])."</p>";
        echo "<p><b>Полученная строка транслитом: </b>".kirToLat(trim($_POST['str']))."</p>";
      }
      ?>
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Перевод кирилицы в латиницу</title>
      </head>
      <body>
        <form action="" method="post">
          <input type="text" name="str" placeholder="Введите текст для перевода в кирилицу">
          <input type="submit" value="Перевести">
        </form>
      </body>
      </html>

    Результат выполнения функции:

    урок 12 результат выполнения

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

    <?
    function kirToLat($str) {
      $abc = ["А"=>"A",	"а"=>"а", "Б"=>"B", "б"=>"b", "В"=>"V", "в"=>"v", "Г"=>"G", "г"=>"g", "Д"=>"D", "д"=>"d", "Е"=>"E", "е"=>"e", "Ё"=>"YO", "ё"=>"yo", "Ж"=>"J", "ж"=>"j", "З"=>"Z", "з"=>"z", "И"=>"i", "и"=>"i", "Й"=>"Y", "й"=>"y", "К"=>"K", "к"=>"k", "Л"=>"L", "л"=>"l", "М"=>"M", "м"=>"m", "Н"=>"N", "н"=>"n", "О"=>"O", "о"=>"o", "П"=>"P", "п"=>"p", "Р"=>"R", "р"=>"r", "С"=>"S", "с"=>"s", "Т"=>"T", "т"=>"t", "У"=>"U", "у"=>"u", "Ф"=>"F", "ф"=>"f", "Х"=>"H", "х"=>"h", "Ц"=>"C", "ц"=>"c", "Ч"=>"CH", "ч"=>"ch", "Ш"=>"SH", "ш"=>"sh", "Щ"=>"ScH", "щ"=>"sch", "Ъ"=>"'", "ъ"=>"'", "Ы"=>"I", "ы"=>"i", "Ь"=>"'", "ь"=>"'", "Э"=>"E'", "э"=>"e'", "Ю"=>"YU", "ю"=>"yu", "Я"=>"YA", "я"=>"ya",];
      if(!$str or $str == "") {return false;} else {
        foreach ($abc as $rep_char => $char) {
          $str = str_replace($rep_char, $char, $str);
        }
        return $str;
      }
    }
    if(isset($_POST['str'])) {
      echo "<p><b>Первоначальная строка: </b>".trim($_POST['str'])."</p>";
      echo "<p><b>Полученная строка транслитом: </b>".kirToLat(trim($_POST['str']))."</p>";
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Перевод кирилицы в латиницу</title>
    </head>
    <body>
      <form action="" method="post">
        <input type="text" name="str" placeholder="Введите текст для перевода в кирилицу">
        <input type="submit" value="Перевести">
      </form>
    </body>
    </html>

    [/spoiler]

  • HTML Урок 6. Работа с фоном css

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

    Принципы CSS-позиционирования
    Абсолютное позиционирование
    Относительное позиционирование

    Принципы CSS-позиционирования

    Представим окно браузера как систему координат:

    figure017

    Принципы CSS-позиционирования — в том, что вы можете расположить бокс в

    системе координат где угодно.
    Скажем, мы хотим позиционировать заголовок. При использовании боксовой модели (см.
    Урок 9) заголовок выглядит так:

    figure018

    Если мы хотим расположить его на 100px от верхней границы документа и на 200px
    слева, мы должны ввести следующий код CSS:

    h1 {
    position:absolute;
    top: 100px;
    left: 200px;
    }

    Вот результат:

    figure019

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

    Абсолютное позиционирование

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

    #box1 {
    position:absolute;
    top: 50px;
    left: 50px;
    }
    
    #box2 {
    position:absolute;
    top: 50px;
    right: 50px;
    }
    
    #box3 {
    position:absolute;
    bottom: 50px;
    right: 50px;
    }
    
    #box4 {
    position:absolute;
    bottom: 50px;
    left: 50px;
    }

    Относительное позиционирование

    Чтобы позиционировать элемент относительно, установите в свойстве position
    значение relative. Разница между относительным абсолютным
    позиционированием состоит в том, как обсчитывается позиционирование.
    Позиция элемента, размещаемого относительно, обсчитывается
    относительно его оригинальной позиции в документе. Это означает, что вы
    смещаете элемент вправо, влево, вверх или вниз. Таким образом, элемент всё ещё
    занимает в документе пространство после позиционирования.
    Как пример относительного позиционирования попробуем разместить три рисунка
    относительно их оригинального расположения на странице. Обратите внимание, что
    рисунки оставили после смещения пустое пространство на своих оригинальных
    позициях в документе:

    #dog1 {
    position:relative;
    left: 350px;
    bottom: 150px;
    }
    #dog2 {
    position:relative;
    left: 150px;
    bottom: 500px;
    }
    
    #dog3 {
    position:relative;
    left: 50px;
    bottom: 700px;
    }

    Наслоение с помощью z-index (Слои)

    CSS оперирует в трёх измерениях — высота, ширина и глубина. Мы работали в
    двух измерениях на протяжении всех предшествующих уроков.
    В этом уроке мы научимся создавать слои/layers. Коротко говоря — упорядочивать
    элементы так, чтобы они перекрывались.
    Для этого вы можете присвоит каждому элементу номер (z-index).
    Элемент с бóльшим номером перекрывает элемент с меньшим номером.
    Скажем, мы играем в покер и у нас — royal flush. Наша «рука» должна быть
    представлена так, чтобы каждая карта имела z-index:

    figure020

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

    #ten_of_diamonds {
    position: absolute;
    left: 100px;
    top: 100px;
    z-index: 1;
    }
    
    #jack_of_diamonds {
    position: absolute;
    left: 115px;
    top: 115px;
    z-index: 2;
    }
    
    #queen_of_diamonds {
    position: absolute;
    left: 130px;
    top: 130px;
    z-index: 3;
    }
    
    #king_of_diamonds {
    position: absolute;
    left: 145px;
    top: 145px;
    z-index: 4;
    }
    
    #ace_of_diamonds {
    position: absolute;
    left: 160px;
    top: 160px;
    z-index: 5;
    }

    Это относительно простой метод, но в нём заложены большие возможности. Вы
    можете размещать текст над изображением, изображение над текстом и т. д.

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

    ФОНОВОЕ ИЗОБРАЖЕНИЕ С РАЗМЫТИЕМ И ЗАТЕМНЕНИЕМ.

    Для работы с фоновым изображением к которому применены стили размытия прозрачности и изменена яркость необходимо создать div в котором будет размещено изображение. Див должен быть абсолютно позиционирован или fixed позиционирован. Для него необходимо использовать z-index =1. А для других дивов использовать z-index с большим значением.

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

    opacity:0.8; -задает прозрачность объекта от 0 прозрачный до 1 не прозрачный.

      -webkit-filter: blur(5px) brightness(0.8);
      -moz-filter: blur(5px) brightness(0.8);
      -o-filter: blur(5px) brightness(0.8);
      -ms-filter: blur(5px) brightness(0.8);
      filter: blur(5px) brightness(0.8);

    blur  и brightness задают размытие и яркость изображения и являются значениями стиля  фильтр.

    Приставки webkit moz 0 ms используютя для совместимости с различнными браузерами.

    Используйте таблицу стилей для создания прозрачного затемненного фонового изображения.

    .background-image {
      position: absolute;
      left: 0;
      right: 0;
      z-index: 1;
      opacity:0.8;
      display: block;
      background-image: url('images/londres.jpg');
      background-size:100%;
      width: 100%;
      height: 1200px;
      background-color:black;	
      -webkit-filter: blur(5px) brightness(0.8);
      -moz-filter: blur(5px) brightness(0.8);
      -o-filter: blur(5px) brightness(0.8);
      -ms-filter: blur(5px) brightness(0.8);
      filter: blur(5px) brightness(0.8);
       }
    
  • HTML Урок 7. Транзакции и размеры

    transition

    Универсальное свойство, которое позволяет одновременно задать значения transition-property, transition-duration,transition-timing-function и transition-delay. Устанавливает эффект перехода между двумя состояниями элемента, они могут быть определены с помощью псевдоэлемента :hover или :active, а также динамически через JavaScript.

    <переход> = [ none | <transition-property> ] || <transition-duration> || 
    <transition-timing-function> || <transition-delay>
    
    transition:all 0s ease 0s - значение по умолчанию

    transition-property

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

    transition-property: none | all | <свойство> [,<свойство>]*

    Значения

    none
    Никакое свойство не задано.
    all
    Все свойства будут отслеживаться.
    <свойство>
    Название стилевого свойства, регистр при его написании не учитывается. При указании нескольких свойств они перечисляются друг за другом через запятую.
    пример:
    -webkit-transition-property: top;

    transition-timing-function

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

    transition-timing-function представляет собой математическую функцию, показывающую, как быстро по времени меняется указанное через transition-property значение свойства. Начальная точка имеет координаты 0.0, 0.0, конечная — 1.0, 1.0, при этом функция по оси ординат может превышать эти значения в большую или меньшую сторону

    Синтаксис

    transition-timing-function: ease|ease-in|ease-out|ease-in-out|linear|step-start|step-end|steps|cubic-bezier

    Значения

    ease
    Анимация начинается медленно, затем ускоряется и к концу движения опять замедляется. Аналогично cubic-bezier(0.25,0.1,0.25,1).
    ease-in
    Анимация медленно начинается, к концу ускоряется. Аналогично cubic-bezier(0.42,0,1,1).
    ease-out
    Анимация начинается быстро, к концу замедляется. Аналогично cubic-bezier(0,0,0.58,1).
    ease-in-out
    Анимация начинается и заканчивается медленно. Аналогично cubic-bezier(0.42,0,0.58,1).
    linear
    Одинаковая скорость от начала и до конца.
    step-start
    Как таковой анимации нет. Стилевые свойства сразу же принимают конечное значение.
    step-end
    Как таковой анимации нет. Стилевые свойства находятся в начальном значении заданное время, затем сразу же принимают конечное значение.
    steps
    Ступенчатая функция, имеющая заданное число шагов.

    transition-timing-function: steps(<число>, start | end)

     
    Здесь: <число> — целое число больше нуля; start — задаёт полунепрерывную снизу функцию;end — задаёт полунепрерывную сверху функцию.
     
    cubic-bezier
    Задаёт функцию движения в виде кривой Безье.
    Полное описание смотрите тут http://htmlbook.ru/css/transition-timing-function

    transition-delay

    Свойство transition-delay устанавливает время ожидания перед запуском эффекта перехода. Значение 0s или 0msзапускает анимацию сразу же. Отрицательное значение также включает анимацию без задержек, но может привести к изменению вида начала анимации.

    Допустимо указывать несколько значений, перечисляя их через запятую. Каждое значение будет применяться к свойству, заданному в параметрах transition-property.

    Синтаксис

    transition-delay: <время> [,<время>]*

    transform

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

    Синтаксис

    transform: <функция> [<функция>]* | none

    Значения

    функция
    Функция трансформации.
    none
    Отменяет действие трансформации.

    Функции трансформации

    matrix

    Задаёт матрицу преобразований.

    rotate

    Поворот элемента на заданный угол относительно точки трансформации, задаваемой свойством transform-origin.

    transform: rotate(<угол>)

    пример

    div {
        -ms-transform: rotate(20deg); /* IE 9 */
        -webkit-transform: rotate(20deg); /* Safari */
        transform: rotate(20deg);
    }

    scale

    Масштаб элемента по горизонтали и вертикали.

    transform: scale(sx[, sy]);

    Значение больше 1 увеличивает масштаб элемента, меньше 1 — уменьшает масштаб.

    пример

    div {
        -ms-transform: scale(2,3); /* IE 9 */
        -webkit-transform: scale(2,3); /* Safari */
        transform: scale(2,3);
    }

    scaleX

    Масштабирует элемент по горизонтали.

    transform: scaleX(sx);

    scaleY

    Масштабирует элемент по вертикали.

    transform: scaleY(sy);

    skewX

    Наклоняет элемент на заданный угол по вертикали.

    transform: skewX(<угол>)

    пример

    div {
        -ms-transform: skewX(20deg); /* IE 9 */
        -webkit-transform: skewX(20deg); /* Safari */
        transform: skewX(20deg);
    }

    skewY

    Наклоняет элемент на заданный угол по горизонтали.

    transform: skewY(<угол>)

    пример

    div {
        -ms-transform: skewY(20deg); /* IE 9 */
        -webkit-transform: skewY(20deg); /* Safari */
        transform: skewY(20deg);
    }

    translate

    Сдвигает элемент на заданное значение по горизонтали и вертикали.

    transform: translate(tx[, ty])

    пример

    div {
        -ms-transform: translate(50px,100px); /* IE 9 */
       	-webkit-transform: translate(50px,100px); /* Safari */
        transform: translate(50px,100px);
    }

    translateX

    Сдвигает элемент по горизонтали на указанное значение. Положительное значение сдвигает вправо, отрицательное влево.

    transform: translateX(tx)

    translateY

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

    transform: translateY(ty)

     

    CSS Единицы измерения

    CSS имеет различные единицы измерения.

    Единтца измерения Описание
    em Размер относительно размера шрифта. 2em означает что размер задан в два размера шрифта
    rem Размер шрифта body
    vw Один процент от ширины окна просмотра
    vh Один процент от высоты окна просмотра
    vmin Один процент от минимальной ширины окна просмотра
    vmax Один процент от минимальной высоты окна просмотра
    %
    px пиксели (1px = 1/96thот 1дюйма)

    Замечание:  em и rem очень часто применяются на практике

    Транзакции и анимация.

    Пример

    <!DOCTYPE html>
    <html>
     <head>
      <meta charset="utf-8">
      <title>transition</title>
      <style>
       #bar {
        top:-5.5em; right:5em; /* Положение */
         padding: .5em; /* Поля */
         margin: 0; /* Отступы */
         position: absolute; /* Абсолютное позиционирование */
         width: 2em; /* Ширина */
         background: #333; /* Цвет фона */
         color: #fff; /* Цвет текста */
         text-align: center; /* Выравнивание по центру */
         /* Переход */
         -webkit-transition: top 1s ease-out 0.5s;
         -moz-transition: top 1s ease-out 0.5s;
         -o-transition: top 1s ease-out 0.5s;
         transition: top 1s ease-out 0.5s;
        }
       #bar:hover { top: 0; }
      </style>
     </head>
     <body>
      <ul id="bar">
       <li>1</li><li>2</li>
       <li>3</li><li>4</li>
       <li>&darr;</li>
      </ul>
     </body>
    </html>
    

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

    Плавная трансформация | CSS свойство transition

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

    <style>
    
    .blok {
      background: #808991;
      color: #FFF;
      cursor: pointer;
    }
    
    .blok:hover {
      background: #D0D941;
      color: #000;
    }
    
    </style>
    
    <div class="blok">при наведении мышки</div>

    Благодаря свойству transition можно сделать плавный переход между состояниями элемента.

    плавная смена цвета туда-обратно

    <style>
    .transition {
    transition: 3s;
    }
    </style>
    
    <div class="blok transition">плавная смена цвета туда-обратно</div>

    плавная смена при наведении на div

    <style>
    .transition2:hover {
    transition: 3s;
    }
    </style>
    
    <div class="blok transition2">плавная смена при наведении на div</div>

    плавная смена, когда курсор выведен за пределы div

    <style>
    .transition3:not(:hover) {  transition: 3s;}
    </style> 
    
    <div class="blok transition3">плавная смена, когда курсор выведен за пределы div</div>

    сохранение положения :hover

    <style>
    .transition4 {
    transition: 0s 9999999s;
    }
    .transition4:hover {
    transition: 3s;
    }
    </style>
    
    <div class="blok transition4">сохранение положения :hover</div>
    Свойство Описание
    transition-property свойство [список возможных], на которое распространяется трансформация. При необходимости воздействия на несколько свойств, они перечисляются через запятую.

    • all — все
    • none — никто

    all

    width, background

    width

    none

    transition-duration время, в течении которого происходит трансформация.

    0s

    0.5s

    1s

    5s

    transition-delay время, по истечении которого происходит трансформация.

    0s

    0.5s

    1s

    5s

    transition-timing-function указывает как должны изменяться промежуточные значения в кривой времени. Например, начинать развиваться медленно, а потом ускоряться. Трансформация может происходить и плавно на протяжении всего участка времени [cubic-bezier], и рывками в заданное количество шагов [steps].

    Untitled-11

    • ease, он же cubic-bezier(0.25, 0.1, 0.25, 1.0)
    • linear, он же cubic-bezier(0.0, 0.0, 1.0, 1.0)
    • ease-in, он же cubic-bezier(0.42, 0, 1.0, 1.0)
    • ease-out, он же cubic-bezier(0, 0, 0.58, 1.0)
    • ease-in-out, он же cubic-bezier(0.42, 0, 0.58, 1.0)
    • step-start, он же steps(1, start)
    • step-end, он же steps(1, end), он же steps(1)

    ease

    linear

    ease-in

    ease-out

    ease-in-out

    cubic-bezier(.1, .9, .9, 1.5)

    cubic-bezier(.1, .9, .9, .1)

    cubic-bezier(.1, .9, .9, -1.5)

    cubic-bezier(.1, -1.5, .1, 2.5)

    step-start

    step-end

    steps(4, end)

    steps(4)

    steps(4, start)

    плавная смена цвета CSS

    <style>
    
    .transition1 {  
    transition: background-color 3s cubic-bezier(0.1, 0.8, 0.5, 2), color 3s 1s linear;   /* или */   
    transition-property: background-color, color;  transition-duration: 3s;  transition-delay: 0s, 1s;  transition-timing-function: cubic-bezier(0.1, 0.8, 0.5, 2), linear;}
    
    </style> 
    
    <div class="blok transition1">плавная смена цвета CSS</div>

    Популярные сочетания transition с другими свойствами, например, opacity или transform.

    изменение ширины width

    <div class="transition-width">изменение ширины width</div>

    изменение прозрачности opacity

    <div class="transition-opacity">изменение прозрачности opacity</div>

    кручение CSS

    <div class="transition-rotate">кручение transform: rotate(360deg);</div>

    увеличивавшие объекта CSS

    <div class="transition-scale">увеличивавшие объекта в два раза transform: scale(2);</div>

    смещение вниз CSS

    <div class="transition-translate">смещение вниз position: relative;</div>

    Untitled-12

    <style>
      div.blok6 {
        cursor: pointer;
        position: relative;
        text-align: center;
      }
      div.blok6:before {
        background-color: rgba(255, 255, 255, 0.2);
        border-radius: 10px;
        box-shadow: 0 0 10px #A0A9B1 inset;
        content: attr(data-title);
        font-family: Tahoma;
        font-size: 32px;
        height: 48px;
        line-height: 48px;
        opacity: 0;
        padding: 0 10px;
        position: absolute;
        right: 50px;
        top: 20px;
        -moz-transition: all 1s;
        -webkit-transition: all 1s;
        -o-transition: all 1s;
        transition: all 1s;
      }
      div.blok6:hover:before {
        right: 160px;
        opacity: 1;
        top: 140px;
      }
      div.blok6 img {
        width: 400px;
        -moz-transition: all 1s;
        -webkit-transition: all 1s;
        -o-transition: all 1s;
        transition: all 1s;
      }
      div.blok6:hover img {
        width: 500px;
      }
      div.blok6:after {
        content: attr(data-zagolovok);
        display: block;
        font-weight: bold;
        font-family: Helvetica;
        font-size: 20px;
        text-align: center;
      }
    </style>
    <div class="blok6" data-title="всплывающий текст" data-zagolovok="подпись под изображением">
    <img src="адрес_изображения" /></div>
    

     

     

  • Задание к уроку 8 Php. Основные функции php

    Задание:

    1. С помощью функции очистки тегов, вывести очищенную строку от всех тегов и с исключением тега <p>:
    $text = '
    <p>Параграф.</p>
    <!-- Комментарий -->
    Здесь текст';

    2. С помощью функции очистки лишних пробелов в начале и в конце строки обработать и вывести следующую строку:

    $trim = " Очистка строки от лишних пробелов ";

    3. Обработать и вывести строку с помощью функции экранизации addslashes(), так же определить длину данной строки и вывести число:

    $str = "Is your name O'reilly?";

    4. Разбить строку, получив ее из глобального массива $_SERVER[‘DOCUMENT_ROOT‘],

    используя разделитель «/» и вывести результат с помощью функции var_dump();

    После чего вывести позицию первого вхождения символа «/».

    5. Вывести полученные подстроки из строки: $str = "abcdef";

    с позициями: -1; -3; -3,1;

     

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

    <?
      $text = '
      <p>Параграф.</p>
      <!-- Комментарий -->
      Здесь текст';
    
      echo strip_tags($text);
      echo "\n\n-------\n";
      // не удалять <p>
      echo strip_tags($text, '<p>');
    ?>
    <hr>
    <?
    $trim = "      Очистка строки от лишних пробелов         ";
    echo trim($trim);
    ?><br><?
    $str = "Is your name O'reilly?";
    // выводит: Is your name O\'reilly?
    echo addslashes($str);
    echo '<br>Длина строки равна :'.strlen($str);
    ?>
    <br>
    <?
    $explode = explode('/', $_SERVER['DOCUMENT_ROOT']);
    var_dump($explode);
    echo "<br>Символ / встречается на позиции ".strpos($_SERVER['DOCUMENT_ROOT'], "/")."<br><br>";
    
    $str = "abcdef";
    echo "Cтрока: ".$str."<br>";
    $rest = substr($str, -1);    // возвращает "f"
    echo "pos=-1. Полученная строка: ".$rest."<br>";
    $rest = substr($str, -2);    // возвращает "ef"
    echo "pos=-3. Полученная строка: ".$rest."<br>";
    $rest = substr($str, -3, 1); // возвращает "d"
    echo "pos=-3,1. Полученная строка: ".$rest."<br>";
    ?>

    [/spoiler]

  • Задание к уроку 7 Php. .htaccess и $_SERVER

    Задание:

    В файле .htaccess установить кодировку по умолчанию на UTF-8 и написать правила перенаправления на  страницы ошибок:

    401.html,  403.html,  404.html,  500.html

    [spoiler title=»401.html»]

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>401 Нет авторизации</title>
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
    </head>
    <style>
     .notfound-401 {text-align: center;position: relative;top: 100px;}
     .notfound-401 span {font-size: 1000%;display: block;line-height: 1;}
     .notfound-401 i.fa {font-size: 1000%;}
     .notfound-401 p {font-size: 300%; margin: 0; padding: 0;}
    </style>
    <body>
    <div class="notfound-401">
     <i class="fa fa-paper-plane-o"></i>
     <span>401</span>
     <p>Нет авторизации.</p>
    
    </div>
    </body>
    </html>

    [/spoiler]

    [spoiler title=»403.html»]

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>403 Запрещено!</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
    </head>
    <style>
      .notfound-403 {text-align: center;position: relative;top: 100px;}
      .notfound-403 span {font-size: 1000%;display: block;line-height: 1;}
      .notfound-403 i.fa {font-size: 1000%;}
      .notfound-403 p {font-size: 300%; margin: 0; padding: 0;}
    </style>
    <body>
    <div class="notfound-403">
      <i class="fa fa-paper-plane-o"></i>
      <span>403</span>
      <p>Запрещено!.</p>
    
    </div>
    </body>
    </html>

    [/spoiler]

    [spoiler title=»404.html»]

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>404 Страница не найдена</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
    </head>
    <style>
      .notfound-404 {text-align: center;position: relative;top: 100px;}
      .notfound-404 span {font-size: 1000%;display: block;line-height: 1;}
      .notfound-404 i.fa {font-size: 1000%;}
      .notfound-404 p {font-size: 300%; margin: 0; padding: 0;}
    </style>
    <body>
    <div class="notfound-404">
      <i class="fa fa-paper-plane-o"></i>
      <span>404</span>
      <p>Страница не найдена.</p>
    
    </div>
    </body>
    </html>

    [/spoiler]

    [spoiler title=»500.html»]

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>500 Ошибка сервера</title>
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
    </head>
    <style>
      .notfound-500 {text-align: center;position: relative;top: 100px;}
      .notfound-500 span {font-size: 1000%;display: block;line-height: 1;}
      .notfound-500 i.fa {font-size: 1000%;}
      .notfound-500 p {font-size: 300%; margin: 0; padding: 0;}
    </style>
    <body>
    <div class="notfound-500">
      <i class="fa fa-paper-plane-o"></i>
      <span>500</span>
      <p>Ошибка сервера.</p>
    
    </div>
    </body>
    </html>

    [/spoiler]

    С помощью глобального массива $_SERVER вывести Имя хоста, IP сервера, Дирректория, Браузер.

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

    AddDefaultCharset UTF-8
    
    ErrorDocument 401 /401.html
    ErrorDocument 403 /403.html
    ErrorDocument 404 /404.html
    ErrorDocument 500 /500.html
     <?
     echo "<br>Имя хоста: "
     .$_SERVER['SERVER_NAME'].
     "<br>IP Сервера: "
     .$_SERVER['SERVER_ADDR'].
     "<br>Дирректория: "
     .$_SERVER['DOCUMENT_ROOT'].
     "<br>Ваш браузер: "
     .$_SERVER['HTTP_USER_AGENT']."<br>";
     ?>

    [/spoiler]

     

     

     

  • Задание к уроку 6 php. Сессии и Куки

    Задание:

    Регистрация на сайте файл reg.php

    if($_POST['submit']=="Регистрация"){
      
    if($_POST['pass']==$_POST['pass2']){
      $pass=md5($_POST['pass']);
    }
    else{
      $msg="Введенные пароли не совпадают";
    }	
    if($pass!=0){	
    $res=mysql_query("SELECT * from `users` where `email`='{$_POST['email']}'");
    $data=mysql_fetch_assoc($res);
    if($data['id']){
      $msg="Пользователь с таким email уже зарегистрирован";
      }
    else{
      $insert=mysql_query("insert into `users` (`name`,`email`,`pass`) values ('{$_POST['name']}', '{$_POST['email']}','{$pass}')");
    }
    if ($insert=='TRUE'){
      $select=mysql_query("SELECT * from `users` where `email`='{$_POST['email']}'");
      $data1=mysql_fetch_array($select);
      $auth=md5($_POST['email']).md5($data1['id']);
      /*Отправка email*/
      $to=$_POST['email'];
      $subject="Подтверждение регистрации";
      $body="Для завершения регистрации пройдите по <a href='".$_SERVER['DOCUMENT_ROOT']."/11/aktiv.php?email=".$email."&auth=".$auth."'>ссылке </a>";
      require "sendmail.php";
      /********/
      $email=$_POST['email'];
      echo "/aktiv.php?email=".$email."&auth=".$auth;
      $msg="Для завершения регистрации проверьте почту!";
    }
    }
    }
    ?>
    
    <meta charset="utf-8">
    <link rel="stylesheet" href="style.css">
    <div id="content">
        <div class="center">
          <div class="row">
    <?echo $msg;?>
    <h1>Регистрация</h1>
      <form method="post">
        <p><input required type="text" name="name" placeholder="Имя"></p>
        <p><input required type="email" name="email" placeholder="email"></p>
        <p><input required type="password" name="pass" placeholder="пароль"></p>
        <p><input type="password" name="pass2" placeholder="повторите пароль"></p>
        <p><input type="submit" name="submit" value="Регистрация"></p>
      </form>
      <p><a  href="login.php">Войти</a></p>
    </div>
    </div></div>

    Подтверждение регистрации activ.php

    $res=mysql_query("SELECT * from `users` where `email`='{$_GET['email']}'");
    $data=mysql_fetch_array($res);
    if($data['id']){
      $auth=md5($_GET['email']).md5($data['id']);
      echo $auth . "<br>";
      if($auth==$_GET['auth']){
      $upd=mysql_query("update `users` set `auth`='1' where`email`='{$_GET['email']}'");	
      if($upd='TRUE'){
      echo 'Поздравляем, регистрация прошла успешно!';
      }
      }	
      else {echo 'Возникла ошибка, попробуйте зарегистрироваться заново!';}
    }

     

    2. По нажатию кнопки Добавить — создать сессию и куки с вашим именем, и по нажатию кнопки Удалить — удалить сессию и куки с вашим именем.

    Данные получить из формы.

    <?
    session_start();
    if(isset($_POST['submit_add'])) {
      /*
        создать сессию и куки с вашим именем
      */
    } elseif(isset($_POST['submit_del'])) {
      /*
        удалить сессию и куки с вашим именем
      */
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Сессии и Куки</title>
    </head>
    <body>
      <form action="index.php" method="post">
        <input type="text" name="name" placeholder="Напишите сюда ваше имя"><br>
        <input type="submit" value="Добавить" name="submit_add">
        <input type="submit" value="Удалить" name="submit_del">
      </form>
    </body>
    </html>

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

    <?
    session_start();
    if(isset($_POST['submit_add'])) {
     // обрабатываем полученную строку, очищаем ее от лишних пробелов и удаляем теги если имеются
     $name = strip_tags(trim($_POST['name']));
     if(!isset($_COOKIE['name'])) {
     setcookie('name', $name);
     echo "Куки успешно сохранены, Хорошая работа " . $name . "<br>";
     } else {
     echo 'Здравствуй ' . $_COOKIE['name'] . ' Куки уже были сохранены, необходимо их удалить. <br>';
     }
     if(!isset($_SESSION['name'])) {
     $_SESSION['name'] = $name;
     echo "Сессия успешно создана, Хорошая работа " . $_SESSION['name'] . "<br>";
     } else {
     echo 'Здравствуй ' . $_SESSION['name'] . ' Сессия уже была создана, необходимо ее удалить. <br>';
     }
    } elseif(isset($_POST['submit_del'])) {
     if(isset($_SESSION['name']) or isset($_COOKIE['name'])) {$name = $_SESSION['name'] or $_COOKIE['name'];}
     setcookie('name', '');
     unset($_SESSION['name']);
     echo "Все данные были успешно удалены...<br>Хорошая работа $name";
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Сессии и Куки</title>
    </head>
    <body>
     <form action="index.php" method="post">
     <input type="text" name="name" placeholder="Напишите сюда ваше имя"><br>
     <input type="submit" value="Добавить" name="submit_add">
     <input type="submit" value="Удалить" name="submit_del">
     </form>
    </body>
    </html>

    [/spoiler]

  • HTML Урок 3. Ссылки и таблицы

    3 урок:

    • Ссылки
    • Относительный адрес
    • Абсолютный адрес
    • Открытие ссылки в новом окне браузера
    • Создание якоря (метки)
    • Ссылка на почтовый ящик
    • Ссылка картинка
    • тег NAV
    • тег SPAN
    • Таблицы в HTML

    Ссылки HTML

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

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

    Синтаксис

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

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

    <html>
      <body>
     
        <p><a href="page.html">Ссылка</a></p>
        <p><a href="httр://www.manuscript.kz">Ссылка</a> на страничку в и-нете.</p>
     
      </body>
    </html>

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

    примеры ссылок

    Относительный адрес

    Относительный адрес означает, что указание пути на нужный файл или страницу вашего сайта начинается относительно страницы, на которой расположена ссылка, либо относительно корневого каталога сайта. Рассмотрим компоненты (части), из которых может состоять относительный путь:

    Части пути Описание Примеры значений
    имя_файла Если в качестве значения атрибута указать только имя файла это значит, что нужный файл находится в той же папке, где и страница со ссылкой. «page.html»
    каталог/ Если файл, к которому нужно указать путь, расположен в дочернем каталоге относительно файла с ссылкой, это означает, что нам надо спуститься на один уровень вниз (в дочернюю папку текущего каталога), в этом случае путь начинается с указания имени дочернего каталога, после его имени указывается прямой слэш «/», он служит для разделения частей пути, после него указывается имя нужного нам файла.

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

    «каталог/page.html»

    «каталог1/каталог2/page.html»

    ../ Если нужно указать, что файл, на который вы ссылаетесь, находится в родительской папке, используйте символы .. (две точки), они означают подняться на один уровень вверх (в родительскую папку текущего каталога). Далее мы указываем прямой слэш «/», чтобы разделить части пути, и пишем имя нашего файла.

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

    «../page.html»

    «../../page.html»

    «../../../кат1/кат2/page.html» — поднимаемся из текущей папки на три каталога выше и уже из него спускаемся на два уровня ниже к требуемому файлу

    / Относительный путь не обязательно всегда должен начинаться относительно текущего расположения страницы со ссылкой, он также может начинаться относительно корневого каталога сайта. К примеру, если нужный файл находится в корневом каталоге, путь может начинаться с символа «/», после которого надо всего лишь указать имя нужного файла, который расположен в корневом каталоге.

    Примечание: когда символ «/» указывается первым, это означает начало пути от корневого каталога.

    «/page.html»

    «/кат1/кат2/car.png»

    Абсолютный адрес

    Абсолютный адрес обычно применяется для указания пути к файлу, который расположен на другом сетевом ресурсе. Он представляет из себя полный URL-адрес к файлу или странице. Первым делом в адресе указывается используемый протокол, после которого идет название домена (имя сайта). Например: http://www.пример.ру — так выглядит абсолютный путь к конкретному веб-сайту. http:// — это протокол передачи данных, а www.пример.ру — имя сайта (домен).

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

    Теперь давайте рассмотрим, что такое URL-адрес. Каждая веб-страница в сети Интернет имеет свой собственный уникальный адрес, вот он как раз и называется URL. Аббревиатура URLрасшифровывается как Uniform Resource Locator (унифицированный адрес ресурса), проще говоря URL — это определитель местонахождения ресурса. Этот способ записи адреса стандартизирован в сети Интернет.

    Пара примеров URL адресов:

    "httр://www.manuscript.kz/"
     
    "httр://www.manuscript.kz/html/u1.php"

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

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

    Для указания браузеру, что при открытие страницы нужно использовать другое окно, вместо текущего, добавьте в элемент <a> атрибут target. Его значение сообщает браузеру о целевом окне для страницы. Если в качестве значения атрибута target вы используете _blank, то браузер для каждой новой страницы всегда будет открывать новое окно.

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

    <html>
      <body>
     
        <p><a href="mypage.html" target="_blank">Другая страница</a>.
          Если вы установите для атрибута target значение _blank,
          то ссылка откроется в новом окне.
        </p>
     
      </body>
    </html>

    В таблице приведены все доступные значения для атрибута target.

    Значение Описание
    _blank Открывает документ в новом окне.
    _self Открывает документ в том же окне, где была нажата ссылка (значение по умолчанию).
    _parent Открывает документ в родительском окне.
    _top Открывает документ на весь экран.
    имя_фрейма Открывает документ в указанном фрейме.

    Создание якоря (метки)

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

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

    <h2><a id="end">Заключение</a>.</h2>

    Итак, наш якорь готов, теперь осталось сослаться на него, для этого просто добавьте символ «#» в конец вашей ссылки, за которым укажите идентификационное имя вашего якоря:

    1
    <a href="other.html#end">Заключение</a>

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

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

    Ссылка на почтовый ящик

    В создании ссылки на электронную почту нет ничего сложного, нужно просто в значении атрибута href ввести ключевое слово mailto, поставить после него двоеточие и написать адрес электронной почты, на который хотите сослаться:

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

    <html>
      <body>
     
        <p>
          Это ссылка на почту:
          <a href="mailto:someone@someone.ru">моя почта</a>
        </p>
     
      </body>
    </html>

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

    Ссылка картинка

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

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

    <html>
      <body>
     
        <p>Посетите наш сайт, кликнув по картинке:
          <a href="httр://www.manuscript.kz">
            <img src="logo.png" alt="ссылка" width="100" height="78">
          </a>
        </p>
     
      </body>
    </html>

    Тег <NAV>

    Тег <nav> задает навигацию по сайту. Если на странице несколько блоков ссылок, то в <nav> обычно помещают приоритетные ссылки. Также допустимо использовать несколько тегов <nav> в документе. Запрещается вкладывать <nav> внутрь <address>.

    Синтаксис

    <nav>ссылки</nav>

    Тег SPAN

    Описание

    Тег <span> предназначен для определения строчных элементов документа. В отличие от блочных элементов, таких как <table><p> или <div>, с помощью тега <span> можно выделить часть информации внутри других тегов и установить для нее свой стиль. Например, внутри абзаца (тега <p>) можно изменить цвет и размер первой буквы, если добавить начальный и конечный тег <span> и определить для него стиль текста. Чтобы не описывать каждый раз стиль внутри тега, можно выделить стиль во внешнюю таблицу стилей, а для тега добавить атрибут class или id с именем селектора.

    Синтаксис

    <span>...</span>

    Закрывающий тег обязателен.

    Атрибуты

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

    Пример

    <!DOCTYPE HTML>
    <html> 
        <head>  
          <meta charset="utf-8">  
        <title>Тег SPAN</title>  
        <style>    
            body {      
              font-family: Arial, sans-serif; /* Рубленый шрифт */     }    
          .letter {      
              color: red; /* Красный цвет символов */      
            font-size: 200%; /* Размер шрифта в процентах */      
            font-family: serif; /* Шрифт с засечками */      
            position: relative; /* Относительное позиционирование */      
            top: 5px; /* Сдвиг сверху */     }  
        </style>  
      </head> 
      <body>   
          <p><span class="letter">Р</span>азумные люди приспосабливаются к окружающему миру.   Неразумные люди приспосабливают мир к себе. Вот почему прогресс определяется   действиями неразумных людей.</p>   
        <p>Бернард Шоу</p>  
      </body>
    </html>

    HTML таблицы

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

    Синтаксис

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

    Создание таблицы всегда начинается со строк, которые определяются с помощью тега <tr>, каждая строка, в свою очередь, состоит из ячеек. Тег <tr> может содержать в себе только теги для создания ячеек.

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

    Примечание: количество столбцов в вашей таблице будет равно количеству ячеек с данными в каждой строке.

    <html>
      <body>
     
        <table border="1">
          <tr><th>Первый заголовок</th><th>Второй заголовок</th></tr>
          <tr><td>строка 1, ячейка 1</td><td>строка 1, ячейка 2</td></tr>
          <tr><td>строка 2, ячейка 1</td><td>строка 2, ячейка 2</td></tr>
        </table>
     
      </body>
    </html>

    Результат

    tabl11

    Рамка таблицы

    Тег <table> может иметь необязательный атрибут border, управляющий границами таблицы. По умолчанию браузеры не отображают рамку вокруг таблицы и ячеек, но присутствие атрибута border, указывает браузеру, что у таблицы должна быть рамка.

    По стандарту HTML5 значением атрибута border может быть либо 1, либо пустая строка (обозначается как пара двойных кавычек «»). Не важно, какое значение атрибута вы зададите, если он присутствует, то рамка будет отображаться.

    <html>
      <body>
     
        <h4>Таблица с нормальной рамкой:</h4>
        <table border="1">
          <tr><td>Первая</td><td>строка</td></tr>
          <tr><td>Вторая</td><td>строка</td></tr>
        </table>
        <h4>Таблица без рамки:</h4>
        <table>
          <tr><td>Первая</td><td>строка</td></tr>
          <tr><td>Вторая</td><td>строка</td></tr>
        </table>
     
      </body>
    </html>

    Результат

    tabl

    Если вам не нравится вид рамки у таблицы, заданный по умолчанию, т.е. двойные рамки, вы можете воспользоваться атрибутом style, прописав в нем свойство «border-collapse: collapse;», это придаст обычный вид рамке для таблицы.

    <html>
      <body>
     
        <table border="1" style="border-collapse: collapse;">
          <tr><td>ячейка 1</td><td>ячейка 2</td></tr>
          <tr><td>ячейка 3</td><td>ячейка 4</td></tr>
        </table>
     
      </body>
    </html>

    Результат

    tabl13

    Заголовок

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

    <html>
      <body>
     
        <table border="1">
          <caption>Моя первая таблица</caption>
          <tr><td>строка 1, ячейка 1</td><td>строка 1, ячейка 2</td></tr>
          <tr><td>строка 2, ячейка 1</td><td>строка 2, ячейка 2</td></tr>
        </table>
     
      </body>
    </html>

    tabl14

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

    Объединение столбцов или строк

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

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

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

    <html>
      <body>
     
        <h4>Объединим две ячейки в строке таблицы:</h4>
        <table border="1">
          <tr>
            <th>Имя</th><th colspan="2">Телефон</th>
          </tr>
          <tr>
            <td>Петя Иванов</td><td>123 45 67</td><td>234 56 78</td>
          </tr>
        </table>
         
        <h4>Объединим две ячейки в столбце таблицы:</h4>
        <table border="1">
          <tr>
            <th>Имя</th><td>Петя Иванов</td>
          </tr>
          <tr>
            <th rowspan="2">Телефон</th><td>123 45 67</td>
          </tr>
          <tr><td>234 56 78</td></tr>
        </table>
     
      </body>
    </html>

    tabl_obied

    Вложенные элементы внутри таблицы

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

    <html>
      <body>
     
        <table border="1">
          <tr>
            <td><p>Абзац.</p><p>Другой абзац.</p></td>
            <td>В этой ячейке разместим таблицу:
              <table border="1">
                <tr><td>А</td><td>Б</td></tr>
                <tr><td>В</td><td>Г</td></tr>
              </table>
            </td>
          </tr>
          <tr>
              <td><a href="httр://www.puzzleweb.ru"> Ссылка </a></td><td>ПРИВЕТ!</td>
          </tr>
        </table>
     
      </body>
    </html>

    tabl15

    Теги таблицы

    Тег Описание
    <table> Создает таблицу.
    <th> Создает заголовочную ячейку в таблице.
    <tr> Создает строку в таблице.
    <td> Создает ячейку таблицы.
    <caption> Определяет заголовок для таблицы.
    <colgroup> Определяет одну или несколько колонок в таблице для форматирования.
    <col> Используется в таблице, определяет свойства для каждой колонки внутри элемента colgroup.
    <thead> Группирует заголовочные ячейки таблицы.
    <tbody> Группирует основное содержимое в таблице.
    <tfoot> Определяет нижнюю часть таблицы.

    Заключение:

    1. Тег <a> является одним из важных элементов HTML и предназначен для создания ссылок. В зависимости от присутствия атрибутов name или hrefтег <a> устанавливает ссылку или якорь. Якорем называется закладка внутри страницы, которую можно указать в качестве цели ссылки. При использовании ссылки, которая указывает на якорь, происходит переход к закладке внутри веб-страницы.Для создания ссылки необходимо сообщить браузеру, что является ссылкой, а также указать адрес документа, на который следует сделать ссылку. В качестве значения атрибута href используется адрес документа (URL, Universal Resource Locator, универсальный указатель ресурсов), на который происходит переход. Адрес ссылки может быть абсолютным и относительным. Абсолютные адреса работают везде и всюду независимо от имени сайта или веб-страницы, где прописана ссылка. Относительные ссылки, как следует из их названия, построены относительно текущего документа или корня сайта.

      Синтаксис

      <a href="URL">...</a><a name="идентификатор">...</a>

      Атрибуты

       TitleДобавляет всплывающую подсказку к тексту ссылки.

      Href Задает адрес документа, на который следует перейти.

    2. Тег <nav> задает навигацию по сайту. Если на странице несколько блоков ссылок, то в <nav> обычно помещают приоритетные ссылки. Также допустимо использовать несколько тегов <nav> в документе. Запрещается вкладывать <nav> внутрь <address>.
      <nav>ссылки</nav>
    3.  С помощью тега <span> можно выделить часть информации внутри других тегов и установить для нее свой стиль. Например, внутри абзаца (тега <p>) можно изменить цвет и размер первой буквы, если добавить начальный и конечный тег <span> и определить для него стиль текста.
    4. Элемент <table> служит контейнером для элементов, определяющих содержимое таблицы. Любая таблица состоит из строк и ячеек, которые задаются с помощью тегов <tr> и <td>. Внутри <table> допустимо использовать следующие элементы:

      Теги таблицы

      Тег Описание
      <table> Создает таблицу.
      <th> Создает заголовочную ячейку в таблице.
      <tr> Создает строку в таблице.
      <td> Создает ячейку таблицы.
      <caption> Определяет заголовок для таблицы.
      <colgroup> Определяет одну или несколько колонок в таблице для форматирования.
      <col> Используется в таблице, определяет свойства для каждой колонки внутри элемента colgroup.
      <thead> Группирует заголовочные ячейки таблицы.
      <tbody> Группирует основное содержимое в таблице.
      <tfoot> Определяет нижнюю часть таблицы.

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

      Синтаксис

      <table border="1">
           <caption>Моя первая таблица</caption>
           <tr><td>строка 1, ячейка 1</td><td>строка 1, ячейка 2</td></tr>
           <tr><td>строка 2, ячейка 1</td><td>строка 2, ячейка 2</td></tr>
         </table>

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

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

    Онлайн сайты по генерации стилей.

    http://www.colorzilla.com/gradient-editor/

    http://enjoycss.com/

    http://css3generator.com/

    http://www.css3maker.com/

    http://www.csstablegenerator.com/

    http://tablestyler.com/

    http://html-generator.weebly.com/css-table-generator.html

    http://www.textfixer.com/tutorials/css-tables.php

    http://www.patterncooler.com/

    http://paletton.com/

    http://colorschemedesigner.com/csd-3.5/

    https://color.adobe.com/ru/

  • Задание к уроку 5 PHP. Загрузка файла и отправка email

    Задание:

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

    Загрузка файла.

    Подготовим наш документ:

    <!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>

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

    Далее нужно написать скрипт обработки изображения и загрузки его на сервер:

    <?
    $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;
      if(!file_exists($uploaddir)) {
        mkdir($uploaddir);
      }
      if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
          echo "Файл корректен и был успешно загружен. <a href='index.php'>Вернуться.</a>\n";
      } else {
          echo "Во время загрузки произошла ошибка! <a href='index.php'>Попробуйте снова.</a>\n";
      }
    } else {
      echo "Неверный тип изображения, проверьте загружаемый файл и <a href='index.php'>попробуйте снова.</a>
      <br>Типы файлов которые могут быть загружены:<br> JPEG, JPG, PNG, BMP, GIF";
    }
    ?>

    Итак теперь по порядку:

    <form action="upload.php" method="post" enctype="multipart/form-data">

    Атрибуты формы следующие:

    Аттрибут Описание
    action=»upload.php» Устанавливает какой файл будет использоваться в качестве обработчика.
    method=»post» Устанавливает метод которым будет отправлена информация
    enctype=»multipart/form-data» Устанавливает тип отправляемого файла

    $type = explode('/', $_FILES['fileToUpload']['type'])[1];

    Функция explode($delimer, $string);

    Разбивает строку на массив.

    $delimer -> Разделитель, символ по которому будет разбита строка $string

    $_FILES[‘fileToUpload‘][‘type‘] -> Глобальный массив файлов, type определяет тип отправляемого изображения.

    if($type == "jpeg" or $type == "png" or $type == "bmp" or $type == "gif") {
    ... 
    } else { echo "Неверный тип изображения, проверьте загружаемый файл и <a href='index.php'>попробуйте снова.</a> <br>Типы файлов которые могут быть загружены:<br> JPEG, JPG, PNG, BMP, GIF"; }

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

      $filename = 'my_first_uploaded_image.' . $type;
      $uploaddir = 'uploads/';
      $uploadfile = $uploaddir . $filename;

    $filename -> Название нашего изображения, устанавливает статическое.

    $uploaddir -> Директория куда будем сохранять изображение

    $uploadfile -> Полный путь для сохранения изображения

    if(!file_exists($uploaddir)) {
        mkdir($uploaddir);
      }

    Проверяем существует ли наша директория, если нет то создаем ее.

    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
          echo "Файл корректен и был успешно загружен. <a href='index.php'>Вернуться.</a>\n";
      } else {
          echo "Во время загрузки произошла ошибка! <a href='index.php'>Попробуйте снова.</a>\n";
      }

    Заливаем изображение на сервер, и если все прошло успешно выводим соответствующее сообщение.

    С загрузкой изображения все.

    Идем дальше отправляем уведомление на почту о том что был загружен файл и его оригинальное название.

    ...
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
          echo "Файл корректен и был успешно загружен. <a href='index.php'>Вернуться.</a>\n";
          $message = 'Загружено новое изображение с названием: ' . $_FILES['fileToUpload']['name'];
          send_email('Твой раб', $message);
      } else { ...

    Добавляем 2 строчки в условие если загрузка прошла успешно:

          $message = 'Загружено новое изображение с названием: ' . $_FILES['fileToUpload']['name'];
          send_email('Твой раб', $message);

    и дописываем в конец нашего скрипта вот такую функцию:

    function send_email($name = 'Аноним', $message = 'Я дефолтное сообщение, кажется мой хозяйн забыл меня исправить :с') {
      $subject = 'Уведомление о загрузке изображения';
      $name = "=?UTF-8?B?".base64_encode($name)."?=";
      $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
      $to = 'mail@my-site.ru';
      #$to = 'alex@goldstudio.kz';
      $headers = "From: $name\r\n";
      $headers .= "MIME-Version: 1.0" . "\r\n";
      $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
      //var_dump($to, $subject, $message);
      $message = wordwrap($message, 70);
      $send = mail($to, $subject, $message, $headers);
    }

    Она то и будет отвечать за отправку сообщения на почту.


    Собственно вот наш готовый скрипт:

    <?
    $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;
      if(!file_exists($uploaddir)) {
        mkdir($uploaddir);
      }
      if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
          echo "Файл корректен и был успешно загружен. <a href='index.php'>Вернуться.</a>\n";
          $message = 'Загружено новое изображение с названием: ' . $_FILES['fileToUpload']['name'];
          send_email('Твой раб', $message);
      } else {
          echo "Во время загрузки произошла ошибка! <a href='index.php'>Попробуйте снова.</a>\n";
      }
    } else {
      echo "Неверный тип изображения, проверьте загружаемый файл и <a href='index.php'>попробуйте снова.</a>
      <br>Типы файлов которые могут быть загружены:<br> JPEG, JPG, PNG, BMP, GIF";
    }
    function send_email($name = 'Аноним', $message = 'Я дефолтное сообщение, кажется мой хозяйн забыл меня исправить :с') {
      $subject = 'Уведомление о загрузке изображения';
      $name = "=?UTF-8?B?".base64_encode($name)."?=";
      $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
      $to = 'mail@my-site.ru';
      #$to = 'alex@goldstudio.kz';
      $headers = "From: $name\r\n";
      $headers .= "MIME-Version: 1.0" . "\r\n";
      $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
      //var_dump($to, $subject, $message);
      $message = wordwrap($message, 70);
      $send = mail($to, $subject, $message, $headers);
    }
    ?>
    

    Enjoy 🙂

    [/spoiler]