Skip to content

Latest commit

History

History
479 lines (367 loc) · 22.5 KB

File metadata and controls

479 lines (367 loc) · 22.5 KB

ЛР 1. Calculator. HTML/CSS

Цель данной лабораторной работы - знакомство с инструментами построения пользовательских интерфейсов web-сайтов: HTML, CSS. В ходе выполнения работы, вам предстоит ознакомиться с кодом реализации простого калькулятора, и затем выполнить задания по варианту.

Фото 1

План

  1. HTML- разметка
  2. Базовая структура HTML-документа
  3. Создание проекта
  4. Верстка калькулятора
  5. CSS
  6. Применение CSS к HTML-документу
  7. Стилизация верстки калькулятора с помощью CSS
  8. Задание

1. HTML-разметка

HTML - это язык разметки, с помощью которого описывается содержимое веб-страницы: текстовые поля, таблицы, кнопки, заголовки, ссылки, в общем - все, что пользователь видит на странице. Для использования HTML-элементов на странице используются тэги. В основном на каждый элемент в документе приходится по два тэга: открывающий и закрывающий, но для обозначения некоторых элементов достаточно только открывающего. У тэгов могут быть атрибуты, с помощью которых задается дополнительная информация об html-элементе. Синтаксис объявления html-элемента выглядит примерно так:

<тэг атрибут="значение_атрибута">Содержимое тэга</тэг>

Рассмотрим некоторые html-элементы и их тэги:

Текст

  1. В html присутствуют 6 тэгов для выделения заголовков:

    <h1>Этот текст будет отображен браузером как заголовок первого уровня (крупнейший)</h1><h2>А этот - как заголовок второго уровня (поменьше) </h2>
    ...
    <h6>Самый мелкий заголовок</h6>
  2. текст можно форматировать:

    <i> Этот текст будет отображен курсивом </i><b> этот будет выделен жирным </b><u> а этот будет подчеркнут </u>
  3. текст можно группировать в параграф (абзац):

    <p>Это параграф какого-то текста.</p><p>Следующий параграф текста</p>

Списки

  1. ненумерованный список (unordered list UL)

    <ul><!-- начинаем ненумерованный список--><li> первый элемент списка </li><li> второй элемент списка </li><li> третий элемент списка </li></ui><!-- список закончен -->
  2. Нумерованный список (ordered list OL):

    <ol><li> первый элемент списка </li><li> второй элемент списка </li></ol>

Гиперссылки

  1. ссылка на ресурс

    Для создания ссылки используется парный тэг <a>. У него присутствует несколько атрибутов, позволяющих ссылку настроить:

    • href- адрес ресурса, на который ссылка ссылается, например https://google.com

    • target - в каком фрейме (окне) открывать документ, по умолчанию стоит в текущем.

      <!-- переход по этой ссылке откроет google.com в текущем окне --><ahref="https://google.com"> Click me! </a><!-- эта ссылка открое google.com в новом окне браузера --><ahref="https://google.com" target="_blank"> Click me! </a>
  2. якорь

    Внутри HTML-страницы с помощью того-же тэга <a> можно расставить так называемые “якоря”. Грубо говоря, это - закладки на странице. Якоря затем можно использовать в гиперссылках для перемещения к определенному элементу страницы, где установлен якорь.

    <p><aname="some_paragraph"></a><!-- устанавливаем якорь -->
    Lorem Ipsum is simply dummy text of ...
    </p><p>
    Следующий параграф текста, в котором мы установим ссылку на якорь.
    <ahref="#some_paragraph">При нажатии на эту ссылку, пользователь будет перенаправлен к месту установки якоря.</a></p>

2. Базовая структура HTML-документа

Простейший html-документ выглядит следующим образом:

<!DOCTYPE html><!--Указание браузеру, какой стандарт HTML использовать (сейчас HTML 5 по умолчанию)--><htmllang="ru"><!--Начало html-блока. Можно указать язык, чтобы избежать ошибок отображения текста--><!-- секция head, как правило, используется для описания служебной и мета информации, в ней также можно указывать ссылки на нужные странице ресурсы, например, шрифты, скрипты и т.д.--><head><metacharset="UTF-8"><!--указание кодировки символов--><title>Моя первая страница</title><!--Заголовок страницы, который будет отображен во вкладке браузера--></head><!--секция body - это тело документа. Здесь размещается вся информация, которая будет показана на странице--><body><h2>Lorem Ipsum</h2></body></html><!--конец html-документа -->

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

3. Создание проекта

Для данной лабораторной работы будем использовать VS Code.

  • Заходим в меню создания проекта и выбираем: Создать файл
  • Создайте HTML-файл: calculator.html

4. Верстка калькулятора

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

<!DOCTYPE html><html><head><title>Калькулятор</title></head><body><div><!-- div - это базовый html-контейнер, который может содержать в себе другие html-элементы. --><!-- блок с экраном калькулятора, где будет выводиться результат вычислений. --><divid="result">
0
</div><!-- блок с кнопками калькулятора. --><div><!--горизонтальный ряд из четырех кнопок--><div><buttonid="btn_op_clear">C</button><!-- про тэг кнопки: https://www.w3schools.com/tags/tag_button.asp --><buttonid="btn_op_sign">+/-</button><buttonid="btn_op_percent">%</button><buttonid="btn_op_div">/</button></div><div><buttonid="btn_digit_7">7</button><buttonid="btn_digit_8">8</button><buttonid="btn_digit_9">9</button><buttonid="btn_op_mult">x</button></div><div><buttonid="btn_digit_4">4</button><buttonid="btn_digit_5">5</button><buttonid="btn_digit_6">6</button><buttonid="btn_op_minus">-</button></div><div><buttonid="btn_digit_1">1</button><buttonid="btn_digit_2">2</button><buttonid="btn_digit_3">3</button><buttonid="btn_op_plus">+</button></div><div><buttonid="btn_digit_0">0</button><buttonid="btn_digit_dot">.</button><buttonid="btn_op_equal">=</button></div></div></div></body></html>

Если открыть этот HTML-документ в браузере, мы получим не самый изящный калькулятор. Чтобы задать параметры внешнего вида элементов, необходимо использовать CSS.

Фото 2

5. CSS

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

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

имя_селектора { свойство1: значение;
свойство2: значение; ...
} 
  1. CSS element Selector

    Существует несколько видов селекторов. Например, если мы хотим задать одинаковые правила для всех заголовков первого уровня, мы можем создать CSS-правило с именем селектора h1. Также можно поступить и с другими HTML-элементами.

    /* css */h1 { color: blue; font-size:12px; } 
    <!-- HTML --><body><h1>Заголовок</h1><h1>Еще заголовок</h1></body>

    Теперь, при использовании тэга <h1> в HTML документе, ко всем заголовкам первого уровня будут применены заданные правила: синий цвет и размер шрифта в 12px.

    Фото 3

  2. CSS id Selector

    Селектор по идентификатору позволяет задать правила для конкретного HTML-элемента с конкретным уникальным идентификатором. Имя такого селектора совпадает с идентификатором HTML-элемента, но начинается с решётки:

    <!-- HTML --><divid="my_custom_element">
    Lorem Ipsum is simply dummy text
    </div>
    /* css */#my_custom_element {
    text-align: center;
    color: red;
    }
  3. CSS class Selector

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

    /* css *//* синий текст по центру */
    .my-centered-blue { text-align: center;
    color: blue; }
    /* огромный текст курсивом */
    .my-large-italic { font-size: xxx-large;
    font-style: italic;
    }
    <!-- HTML --><pclass="my-centered-blue my-large-italic">
    Этот параграф принадлежит к двум классам, поэтому комбинирует их свойства
    </p><divclass="my-large-italic">
    Этот блок принадлежит только к классу my-large-italic
    </div>

    Фото 4

Также можно создать классовый селектор, дейсвующий только на конкретный тип HTML-элементов, например на параграфы:

/* css */p.my-large-italic { font-size: xxx-large;
font-style: italic;
}

6. Применение CSS к HTML-документу

Существует несколько вариантов встраивания CSS-правил в HTML-документ. CSS можно расположить в секции <head>, в рамках тэга <style>

<!-- HTML --><head><title>калькулятор</title><style>
.my-center-red { color: red;
text-align: center;
}
</style></head><body><pclass="my-center-red"> Hello! </p></body>

Второй, более предпочтительный, вариант - описание CSS стилей в отдельном файле, подключить который к HTML-документу можно сославшись на него в секции head:

<head><title>калькулятор</title><!-- указываем, что файл style.css содержит таблицу стилей (stylesheet) --><linkrel="stylesheet" href="style.css"></head>

Браузер, читая html документ подгрузит стили из этого файла.

Также есть возможность задать стиль для элемента напрямую через атрибут style, но делать так не рекомендуется:

<buttonstyle="margin-right: 5px; backgroud: red;">Красная кнопка</button>

7. Стилизация верстки калькулятора с помощью CSS

Приступим к стилизации созданной ранее верстки калькулятора. Создайте css-файл и пропишите в нем стили для элементов калькулятора: кнопок и окна вывода.

/* опишем базовый стиль кнопки калькулятора */
.my-btn { margin-right:5px; /* задаем отступ от кнопки справа */margin-top:5px; /* задаем отступ от кнопки сверху*/width:50px; /* задаем ширину кнопки */height:50px; /* задаем высоту кнопки */border-radius:50%; /* округляем кнопку */border: none; /* отключаем обводку */background:#515151; /* задаем серый цвет кнопки */color: white; /* задаем белый цвет текста внутри кнопки */font-size:1.5rem; /* увеличим размер шрифта */font-family: Arial, Helvetica, sans-serif; /* сменим шрифт */cursor: pointer; /* при наведении на кнопку курсор будет изменен со стрелки на 'указательный палец' */user-select: none; /* отключаем возможность выделить текст внутри кнопки */
} /* hover - это состояние элемента, когда на него наведен курсор */
.my-btn:hover {
background: darkgray; /* при наведение курсора на кнопку, она будет окрашена в серый */
}
/* active - это состояние активации элемента. В случае кнопки - нажатие на нее */
.my-btn:active {
filter:brightness(130%); /* увеличим интенсивность цвета для эффекта вспышки */
}
/* селектор для кнопок первостепенных операций */
.my-btn.primary { background:#ff9801; /* цвет кнопки оранжевый */
}
/* селектор для кнопок второстепенных операций */
.my-btn.secondary { background:#a6a6a6; /* цвет кнопки сервый */
}
/* селектор для кнопки расчета выражения (=) */
.my-btn.execute { width:110px; /* сделаем кнопку шире других */border-radius:34px; /* подкорректируем округлость */
}
/* селектор для поля вывода результата */
.result { width:220px;
height:50px;
margin-bottom:15px; /* отступ снизу */padding-right:10px; /* выступ справа */background:rgb(73,73,73); /* цвет можно задавать и таким образом */text-align: right; /* примагнитим текст к правой стороне */color:#ffffff; /* цвет текста белый */font-size:1.5rem;
font-family: Arial, Helvetica, sans-serif;
}

Теперь заполним атрибут class у HTML-элементов калькулятора, чтобы применить к ним созданные стили:

  1. Кнопки циферблата: 0-9 и точка относятся к классу my-btn:

    ...
    <buttonid="btn_digit_7" class="my-btn">7</button><buttonid="btn_digit_8" class="my-btn">8</button><buttonid="btn_digit_9" class="my-btn">9</button>
    ...
  2. Кнопки второстепенных операций (C, +/-, %) принадлежат классам my-btn и secondary:

    ...
    <buttonid="btn_op_clear" class="my-btn secondary">C</button><buttonid="btn_op_sign" class="my-btn secondary">+/-</button><buttonid="btn_op_percent" class="my-btn secondary">%</button>
    ...
  3. Кнопки первостепенных операций принадлежат к классам my-btn и primary:

    <buttonid="btn_op_mult" class="my-btn primary">x</button>
    ...
    <buttonid="btn_op_minus" class="my-btn primary">-</button>
    ...
    <buttonid="btn_op_plus" class="my-btn primary">+</button>
  4. Кнопка “=” дополнительно относится еще и к классу execute:

    <buttonid="btn_op_equal" class="my-btn primary execute">=</button>
  5. Блок с экраном калькулятора относим к классу result:

    <divid="result" class="result">
    0
    </div>

Если все выполнено верно, изображение страницы должно соответствовать требуемому.

8. Задания для самостоятельной проработки

  1. Поменяйте цветовую палитру калькулятора с оранжево-серой на любую другую;
  2. Сделайте фон калькулятора темным (наподобие ночной темы);
  3. Сделайте кнопки квадратными вместо круглых.;
  4. Измените цвет вывода результата на любой другой;
  5. Сделайте окно вывода со скруглеными краями;
  6. Поменяйте шрифт цифр;
  7. Сделайте шрифт более толстым;
  8. Измените цвет при наведении мышки на кнопку на другой;
  9. Добавьте надпись внизу "ЛР выполнена ФИО";
  10. Выровняйте калькулятор по центру;
  11. Увеличьте размер окна вывода;
  12. Добавьте кнопку для смены темы (смена цвета фона);
  13. Сделайте шрифт тоньше;
  14. Смените цвет шрифта;
  15. Добавьте любое изображение на фон;
  16. Добавьте кнопку со ссылкой на GitHub;
  17. Сделайте поле с выпадающим списком;
  18. Сделайте сворачивающиеся и разворачивающиеся подробности (Автор -> ФИО, Группа);
  19. Добавьте поле с целью ЛР и подсветить слова: знакомство, HTML, CSS (с помощью тега).
  20. Скопируйте для калькулятора стилистику веб-ресурса, которая не будет повторяться с остальными студентами