<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">
<channel>
<title>Уроки по HTML - DEVNEW.ORG</title>
<link>https://devnew.org/</link>
<language>ru</language><item>
<title>Урок 12. Что такой CSS-спрайты, сервисы и генераторы спрайтов</title>
<link>https://devnew.org/blog/learn-html/888-urok-12-chto-takoj-css-sprajty-servisy-i-generatory-sprajtov.html</link>
<pdalink>https://devnew.org/blog/learn-html/888-urok-12-chto-takoj-css-sprajty-servisy-i-generatory-sprajtov.html</pdalink>
<guid>https://devnew.org/blog/learn-html/888-urok-12-chto-takoj-css-sprajty-servisy-i-generatory-sprajtov.html</guid>
<pubDate>Tue, 24 Oct 2023 20:20:53 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<p>Остановимся поподробнее на таком интересном инструменте, как css-спрайты. Многие опытные верстальщики и веб-мастера прекрасно знают о плюсах этой незамысловатой техники. Положительная сторона использования спрайтов в том, что значительно сокращается время загрузки страницы за счет уменьшения количества отдельных изображений. В современных стандартах верстки принято небольшие иконки и изображения тем группировать в специальный сборник изображений. Проще говоря, спрайт представляет из себя картинку, включающую в себя набор мелких картинок темы.</p> <p>Таким образом, когда мы группируем мелкие изображения, мы сокращаем количество запросов к серверу. Наша страница подгружает только одну картинку вместо 30 маленьких. Это дает существенный выигрыш в скорости загрузки.</p> <p><span>Вкратце: CSS Sprites - это средство объединения нескольких изображений в один файл для использования на сайте, чтобы существенно увеличить производительность. Понятие </span>Sprite может показаться немного неправильным, учитывая, что вы создаете большое изображение, а не работает с маленькими.</p> <p><span>Подводя итог: термин «спрайты» происходит из техники в компьютерной графике, чаще всего используемой в видеоиграх. Идея заключалась в том, чтобы сохранить изображение в память, а затем отображать только часть этого изображения, что было быстрее, чем при получение новых изображений. <br></span></p> <p><span>CSS Sprites - это в значительной степени точная теория: получить изображение один раз, переместить фон и отобразить только его части. Это уменьшает накладные расходы при получении нескольких изображений.</span></p> <p><span>Для создания спрайтов существует огромное количество сервисов на просторах интернета. Достаточно лишь набрать соответствующий запрос в поисковике. Если очень лень искать, вот несколько популярных ресурсов на эту тему. <a href="https://www.toptal.com/developers/css/sprite-generator" rel="external noopener">Генератор спрайтов toptal</a>, <a href="https://ru.inettools.net/image/generator-css-spraytov" rel="external noopener">генератор спрайтов inettools</a>. Предположим, то вы нарезали свой шаблон, выбрали все маленькие иконки, создали из него спрайт, что же дальше?<br><br></span></p> <h2>Как использовать иконки из спрайта</h2> <p>Теперь разберем порядок действий при работе со спрайтом.</p> <ul> <li>Создадим общий класс, например, назовем его .sprite, фоном которого является данное изображение, которое создано при помощи генератора sprite.png. Этому же классу зададим высоту и ширину, которая будет высотой и шириной иконок спрайта, если они одинаковы по размеру. </li> <li>Для блоков, где нужно использовать данную иконку, задаем смещение фона на нужную величину с помощью css-свойства <em><strong>background-position</strong></em>. <a href="https://devnew.org/learn-html/652-urok-11-fon-sajta-s-pomoschju-css-svojstvo-background.html">Подробнее о фонах</a> в предыдущей статье.</li> </ul> <p>Пример:</p> <pre><code class="hljs css"><span class="hljs-class">.sprite</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">width</span>:<span class="hljs-value"> <span class="hljs-number">30px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">height</span>:<span class="hljs-value"> <span class="hljs-number">30px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">background</span>:<span class="hljs-value"> <span class="hljs-function">url</span>(<span class="hljs-string">"/assets/img/sprite.png"</span>)</span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span><br><span class="hljs-class">.sprite-icon1</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">background-position</span>:<span class="hljs-value"> <span class="hljs-number">0</span> -<span class="hljs-number">80px</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span></code></pre> <p><span><b><span style="color:rgb(53,152,219);"><br>Good work</span></b></span></p>]]></content:encoded>
</item><item>
<title>Урок 11. Фон сайта с помощью CSS. Свойство background</title>
<link>https://devnew.org/blog/learn-html/887-urok-11-fon-sajta-s-pomoschju-css-svojstvo-background.html</link>
<pdalink>https://devnew.org/blog/learn-html/887-urok-11-fon-sajta-s-pomoschju-css-svojstvo-background.html</pdalink>
<guid>https://devnew.org/blog/learn-html/887-urok-11-fon-sajta-s-pomoschju-css-svojstvo-background.html</guid>
<pubDate>Tue, 24 Oct 2023 20:16:44 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<div class="entry-content"> <div class="entry-content"> <p>Чтобы придать любой html-странице свой стиль и индивидуальность, активно используют фоны для элементов и страницы в целом. За этот момент оформления отвечает целый раздел css-свойства, которые начинаются со слова <strong>background</strong>.</p> <h2>Как задать цвет и изображение фона сайта</h2> <p>Для задания цвета фона используют свойство <strong><em>background-color</em></strong>, оно принимает значения в шестнадцатеричном формате цвета, в формате RGB, задание цвета при помощи ключевых слов.</p> <p>Чтобы использовать в качестве фона сайта изображения, применяют свойство <strong><em>background-image</em></strong>, где указывают ссылку на файл. Можно использовать одновременно и вариант с цветом фона, и с изображением. Тогда изображение накладывается поверх фона определенного цвета.</p> <p>Теперь поговорим о том, как регулировать повторение фонового изображения, как растянуть его на весь экран и т.д. Свойство, которое отвечает за повтор фона, называется <em><strong>background-repeat</strong></em>. Оно принимает четыре значения. В качестве значения по умолчанию принимается repeat (повторять по вертикали и горизонтали). Три других значения:</p> <ul> <li>repeat-x - повторяет изображение по горизонтали</li> <li>repeat-y - повторяет изображение по вертикали</li> <li>no-repeat - не повторяет изображение совсем</li> </ul> <p>Для задания размера фонового изображения сайта используют свойство <strong><em>background-size</em></strong>, оно принимает значения в процентах, пикселях и слово auto. Имеет два значения через пробел. Первое значение отвечает за растяжение по горизонтали, второе по вертикали. Если первое значение задано (например, 100%), а второе значение выставлено auto, то фон по горизонтали растянется на весь размер блока, а по вертикали подгоняет высоту для данной ширины. Есть еще два значения для этого свойства (cover и contain). Cover изменяет размеры изображения так, чтобы блок был полностью закрыт картинкой, а contain так, чтобы картинка поместилась в блок целиком. Cover и contain задаются по одному, через пробел уже ничего писать не нужно.</p> <p>Пример. Зададим цвет фона, его изображение без повтора и растянем его по ширине и высоте:</p> <pre><code class="hljs css"><span class="hljs-class">.block</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">background-color</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#eee</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">background-image</span>:<span class="hljs-value"> <span class="hljs-function">url</span>(<span class="hljs-string">"/assets/img/image.png"</span>)</span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">background-repeat</span>:<span class="hljs-value"> no-repeat</span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">background-size</span>:<span class="hljs-value"> <span class="hljs-number">100%</span> <span class="hljs-number">100%</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span></code></pre> <h3>Положение фонового изображения, background-position</h3> <p>Немного подробнее остановимся на работе с фоновым изображением, которое не нужно повторять. Для регулирования нахождения этого изображения внутри блока, которому мы задаем фон, используется CSS-свойство <em><strong>background-position</strong></em>. Это свойство принимает два значения через пробел. Первое определяет положение по оси x (горизонтали), второе по оси y (вертикали).</p> <p>Единицы измерения этих двух величин проценты и пиксели. Еще они принимают значения top, bottom, left, right, center. Значения для оси x, естественно, left, right, center. Значения для оси y - top, bottom, center. Единицы измерения, значения, пиксели и проценты можно комбинировать между собой в произвольном формате. В примере ниже зададим позиции для фонового изображения. В первом случае будет изображение по центру в процентах. Во втором случае изображение в правом нижнем углу блока. В третьем случает изображение сдвинуто на 50 пикселей слева и на 100 пикселей сверху. Пример:</p> <pre><code class="hljs css"><span class="hljs-class">.block1</span> <span class="hljs-rules">{<span class="hljs-rule"><span class="hljs-attribute">background-position</span>:<span class="hljs-value"> <span class="hljs-number">50%</span> <span class="hljs-number">50%</span></span></span>;<span class="hljs-rule">}</span></span><br><span class="hljs-class">.block2</span> <span class="hljs-rules">{<span class="hljs-rule"><span class="hljs-attribute">background-position</span>:<span class="hljs-value"> right bottom</span></span>;<span class="hljs-rule">}</span></span><br><span class="hljs-class">.block3</span> <span class="hljs-rules">{<span class="hljs-rule"><span class="hljs-attribute">background-position</span>:<span class="hljs-value"> <span class="hljs-number">50px</span> <span class="hljs-number">100px</span></span></span>;<span class="hljs-rule">}</span></span></code></pre> <h3>Фиксим фонового изображения, background-attachment</h3> <p>Иногда для создания визуальных эффектов нужно, чтобы фон при прокрутки не уезжал вместе с просмотренной частью страницы, а оставался на месте. Это будет создавать интересный эффект параллакса.</p> <p>Для фиксации фона используется css-свойство<em><strong> background-attachement</strong></em>. Оно принимает два значения, scroll - значение по умолчанию, прокрутка вместе со всем остальным содержимым, fixed - фон остается на месте при прокрутке.</p> <h2>CSS-свойство background</h2> <p>Чтобы обобщить все вышеперечисленные громоздкие конструкции в CSS есть свойства для их объединения, <em><strong>background</strong></em>. Оно имеет следующую структуру <em><strong>background: background-color background-image background-repeat background-position background-attachement; </strong></em>Все значения этих свойств перечисляются через пробел. Если заданы не все свойства, то они имеют значения по умолчанию. Например:</p> <pre><code class="hljs css"><span class="hljs-class">.block</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">background</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#eee</span> <span class="hljs-function">url</span>(<span class="hljs-string">"/assets/img/image.png"</span>) center center</span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span></code></pre> </div> </div>]]></content:encoded>
</item><item>
<title>Урок 10. Оформление текста. Что нужно знать о верстке текста</title>
<link>https://devnew.org/blog/learn-html/886-urok-10-oformlenie-teksta-chto-nuzhno-znat-o-verstke-teksta.html</link>
<pdalink>https://devnew.org/blog/learn-html/886-urok-10-oformlenie-teksta-chto-nuzhno-znat-o-verstke-teksta.html</pdalink>
<guid>https://devnew.org/blog/learn-html/886-urok-10-oformlenie-teksta-chto-nuzhno-znat-o-verstke-teksta.html</guid>
<pubDate>Tue, 24 Oct 2023 20:15:25 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<p>С <a href="https://devnew.org/learn-html/644-urok-3-razmetka-teksta-html-abzacy-spiski-zagolovki.html">разметкой текста</a> уже познакомились в одной из статей курса. Из этой статьи знаем, какие основные теги используются для определения контента. Следующий этап заключается в знакомстве с правилами оформления текста через стили css. Помимо базовых тегов, абзацей, заколовкой, списков часто используется тег &lt;span&gt;. По сути этот тег не несет смысловой нагрузки, он строчный, является частью текста. Используется для того, чтобы стилистически выделить несколько слов или строк. <br><b>Например :</b></p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">span</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"red-text"</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">span</span>&gt;</span><br></code></pre> <h2>Верстка текста, работа со шрифтами</h2> <p>Для задания размера шрифта, его стиля, жирности, вида используются следующие CSS свойства:</p> <ul> <li><strong>font-size</strong>. Размер шрифта, принимает значения в абсолютных и относительных единицах. К абсолютным относятся пиксели (font-size : 14px;) и пункты (font-size : 15pt;). К относительным проценты (font-size : 70%;) и em. EM обычно примерно равен длине буквы М в шрифте данного вида.</li> <li><strong>font-weight</strong>. Жирность шрифта, его начертание. Принимает как целочисленные значения (100,200,300..900), отражающие степень жирности, так и два стандартных <em>normal</em> и <em>bold</em>. Как правило, большая часть браузеров не различает степени жирности, отражает только два последних варианта начертания.</li> <li><strong>font-style</strong>. Свойство необходимое для задания нормального начертания (<em>normal</em>) или курсива (<em>italic</em>).</li> <li><strong>font-family</strong>. Используется для задания семейства шрифта или задания названия конкретно используемого шрифта, который объявлен в начеле или является стандартным. serif — без засечек, <span>sans-serif — с засечками. В примере указаны сначала название шрифта, потом его альтернативные варианты через запятую. Если первый шрифт не будет найден, применятся следующие за ним</span>: <pre><code class="hljs css"><span class="hljs-tag">body</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute">font-family</span>:<span class="hljs-value"> <span class="hljs-string">"PT Sans"</span>, <span class="hljs-string">"Arial"</span>, serif</span></span>; <span class="hljs-rule">}</span></span></code></pre> </li> </ul> <h2><br>Верстка текста, цвет, высота строки, подчеркивание</h2> <p>Про стилистику шрифтов немного разобрались, теперь перейдем к не менее важным свойствам текста. Нас интересует css-свойства, отвещающие за цвет, оформление, пробелы, высота строки.</p> <ul> <li><strong>color</strong>. Цвет текста, задается с помощью RGB-формата (<em>color : rgb(255, 0, 0);</em>), шестнадцатеричного кода, который можно посмотреть в фотошопе для любого цвета (<em>color : #000;</em>) и с помощью ключевых слов (<em>color : red; color : blue;</em>). Чаще всего используют шестандцатириный код.</li> <li><strong>text-decoration</strong>. Стандартное свойство при работе со ссылками, все ссылки по-умоланию подчеркнуты. Чтобы отменить подчеркивание или задать свой вариант в качестве значений свойства принимаются. <em>text-decoration : none;</em> (отменяем все изменения),<em> text-decoration : underline; </em>(нижнее подчеркивание), <em>text-decoration : overline;</em> (верхнее подчеркивание), <em>text-decoration : line-through;</em> (зачеркнутый текст)</li> <li><strong>text-transform</strong>. Работа с регистром в строке. иногда необходимо стилистически изменить регистр текст. Часто это необходимо делать при работе с меню или нестандартным текстом. <em>text-transform : </em><span><em>lowercase;</em> (делает все символы строными), <em>text-transform : </em></span><span><em>uppercase;</em> (делает все символы прописными), text-<em>transform : </em></span><span><em>capitalize;</em> (начинает каждое слово с прописной), <em>text-transform : none;</em> (отменяет все значения)</span></li> <li><strong>white-space</strong>. Управление пробелами в тексте, принимает следующие значения. <em>nowrap </em>— текст без переносов; <em>pre</em> — как в исходном коде; <em>pre-wrap</em> — как pre, только появляются переносы, если никак не умещается в блок текст;<em> normal</em> — стандартное отображение.</li> <li><strong>text-align</strong>. Выравнивание текста внутри родительского контейнера.<em> left</em> — по левому краю; <em>right </em>— по правому краю; <em>center</em> — по центру; <em>justify</em> — по ширине.</li> <li><strong>line-height</strong>. Используется для регулирование межстрочных интервалов и, очевидно, высоты строки. Значения задаются в пикселях (line-height : 22px;), процентах (line-heigh t: 100%;), множителях, ключевых словах (line-height : normal;).<br> <div class="cont clearfix pages"> <div id="dle-content"> <div class="static-page"> <div class="full-text clearfix video-box" id="full-text"> <p><span style="font-size:0.85rem;"> </span></p> </div> </div> </div> </div> </li> </ul> <p><b> </b></p>]]></content:encoded>
</item><item>
<title>Урок 9. Уроки CSS. Наследование css-свойств, каскадирование</title>
<link>https://devnew.org/blog/learn-html/885-urok-9-uroki-css-nasledovanie-css-svojstv-kaskadirovanie.html</link>
<pdalink>https://devnew.org/blog/learn-html/885-urok-9-uroki-css-nasledovanie-css-svojstv-kaskadirovanie.html</pdalink>
<guid>https://devnew.org/blog/learn-html/885-urok-9-uroki-css-nasledovanie-css-svojstv-kaskadirovanie.html</guid>
<pubDate>Tue, 24 Oct 2023 20:13:11 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<div class="entry-content"> <div class="entry-content"> <p>В предыдущих уроках кратко упоминали, что при знакомстве с таблицей стилей CSS, правилами, свойствами и селекторами стоит уяснить для себя правила наследования стилей. Мы знаем, что весь HTML- документ условно можно представить в виде иерархии, где одни элементы содержат в себе другие. Между элементами существуют различные связи. Они могут быть соседними, а могу иметь свзять родитель-дочерний элемент. У каждого элемента только один непосредственный родитель, это тот, который содержит его явно. Родителя нет только у корневого элемента, в Html-файлах это тег <em>&lt;html&gt;</em>.</p> <p>Свойства, которые мы прописываем для родительского элемента передаются всем его потомкам различных уровней вложенности. Чтобы переопределить эти свойства необходимо прописать их дочернему элементу. Такие стили будут иметь больший приоритет и перебьют наследуемые свойства. Наследуются, естественно, не все стили. Например, стили связанные со шрифтами. Этот механизм необходим для сокращения таблицы стилей, ведь это очень удобно, хотя есть и существенные минусы. Когда css-файл разрастается, очень трудно отследить какой родительский элемент задает некоторые стили, от этого может возникнуть путаница.</p> <h2>Какие css-свойства (стили) наследуются</h2> <p><strong><em>font-size, font-family, font-style, font-weight, color, text-align, text-transform, text-indent, line-height, letter-spacing, word-spacing, white-space, direction и т. д.</em></strong></p> <p>Наследуются еще некоторые другие свойства, но применяют такое наследование гораздо реже. Почему же в основном этому механизму подвержены стили работы с текстом. Дело в том, что у большинства сайтов есть общая типографическая концепция. Цвет текста, размер шрифта, вид шрифта, поэтому здраво задавать такие стили для документа в целом или для конкретных блоков.</p> <p>Соответственно большинство свойств, отвещающих за внешний вид сайта не наследуются. Было бы странно, если задавая фон или рамку одного элемента, мы получали такие же у всех потомков. Поэтому механизм наследования имеет продуманную суть. </p> <p>В некоторых ситуациях имеются исключения. Например, мы хотим все же получить значение для свойства от родительского элемента. Тогда можно использовать конструкцию <strong><em>свойство : inherit;</em></strong><em> </em>Для<em> </em>любого свойства<em> </em>будет принято значение от родителя. Этот механизм называется принудительное наследование.</p> <h2>Каскадирование CSS, каскадные таблицы стилей</h2> <p>Мы уже знаем о расшифровке аббревиатуры CSS, с таблицей стилей все в принципе понятно, а что же такое каскадная? Каскадирование - один из базовых механизмов при работе с css-правилами. Для одного и того же элемента может быть задано множество пересекающихся стилей. Стили могут задаваться через атрибут style, через селектор тега, класса, идентификатора, могут наследоваться от родителя и т.д. Вопрос в том, какие же стили применяться к элементу в конечном итоге, давайте разбираться.</p> <p>На выбор стилей для элемента влияют несколько факторов. Приоритет, специфичность, порядок кода. Специфичность простым языком можно описать так, чем конкретнее (точнее) задан селектор, тем он специфичнее. Т.е. чем меньше выбираем элементов для данного правила, тем специфичность больше.</p> <p>Теперь на примерах:</p> <ul> <li>Если задаем стили для элемента по одинаковому селектору, по тегу, по классу, например, то применяются те свойства, которые стоят ниже в css-файле. Ведь специфичность и приоритет в этом случае будут одинаковы. </li> <li>Если одно правило в качестве селектора использует класс, а другое тег с уточняющим классом, то применяются стили второго правила, т.к. более специфичный. Например, для <strong><em>&lt;p class="first sec"&gt;</em> </strong>зададим правила с использованием селекторов<strong> <em>.first</em> </strong>и <em><strong>p.second</strong>. </em>В конечном итоге приоритетными будут свойства второго селектора.</li> <li>Если в качестве селектора использовать идентификатор (id), то такие правила будут приоритетнее. Это происходит потому что элемент с данным Id единственный на страницу, значит специфичность его больше. </li> <li>Еще более приоритетны свойства записанные через атрибут style</li> <li>Чтобы переопределить стили через атрибут style можно использовать ключевое слово <strong><em>!important</em></strong> применимое к любому свойства. Оно переопределяет все. Однако злоупотреблять им не стоит, использовать в крайних случаях</li> </ul> <h2>Перекрестное наследование стилей</h2> <p>Далее расскажем про еще один популярный и удобный прием в задании css-свойсв. У большинства сайтов есть похожие друг на друга элементы, которые отличаются лишь незначительно. Одним из таких популярных html-элементов являются кнопки. Как правило, они имеют одинаковые отступы, размеры, закругления, тени, цвет текста и т.д. Здесь и удобно применять перекрестное наследование стилей</p> <ul> <li>Вынесем общие стили в основной класс .button</li> <li>Зададим вспомогательные стили еще в нескольких классах. Например, .button-red и .button-blue</li> <li>Пропишем у всех сходных элементов базовый класс, а следом при необходимости один или несколько вспомогательных</li> </ul> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"catalog"</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"catalog-item"</span>&gt;</span><br> ...<br> <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"button button-red"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"catalog-item"</span>&gt;</span> <br> ...<br> <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"button button-blue"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span></code></pre> <p>Таким образом избавляемся от лишнего кода, упрощаем себе жизнь.</p> </div> </div>]]></content:encoded>
</item><item>
<title>Урок 8. Селекторы CSS. Задаем CSS-правила</title>
<link>https://devnew.org/blog/learn-html/884-urok-8-selektory-css-zadaem-css-pravila.html</link>
<pdalink>https://devnew.org/blog/learn-html/884-urok-8-selektory-css-zadaem-css-pravila.html</pdalink>
<guid>https://devnew.org/blog/learn-html/884-urok-8-selektory-css-zadaem-css-pravila.html</guid>
<pubDate>Tue, 24 Oct 2023 20:12:10 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<div class="entry-content"> <div class="entry-content"> <p>Без селекторов задавать стили для элементов html-страницы очень сложно. Необходимо было бы прописывать стили с помощью атрибута style у каждого элемента, это нерационально и долго. Существование селекторов и файла CSS существенно упрощает задачу. В этом css-уроке разберемся с тем, какие же существуют селекторы. </p> <h2>Селекторы по тегу, классу и id</h2> <p>Этот тип селекторов указывает на все элементы страницы с определенным тегом. Чтобы прописать стили по тегу, необходимо взять название тега и в фигурных свойствах отметить все свойства для них. Что касается селектора по классу, то необходимо указать сначала название класс, а потом в фигурных скобках css-свойства для него. Для селектора по id ситуация идентичная.</p> <p>Например, пропишем свойства для всех абзацей на странице и для последнего из абзацей по классу перебьем значение отступа снизу:</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"content"</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> ... <span class="hljs-tag">&lt;<span class="hljs-title">p</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"last"</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span></code></pre> <p><br></p> <pre><code class="hljs css"><span class="hljs-tag">p</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute">margin-bottom</span>:<span class="hljs-value"> <span class="hljs-number">10px</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">color</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#000</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">font-size</span>:<span class="hljs-value"> <span class="hljs-number">14px</span></span></span>; <span class="hljs-rule">}</span></span><br><span class="hljs-class">.last</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">margin-bottom</span>:<span class="hljs-value"> <span class="hljs-number">25px</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span><br></code></pre> <h2>Вложенные и соседние селекторы</h2> <p>Далее поговорим о вариациях, как можно проще задавать стили для различных элементов, не прибегая к использованию классов. Часто мы должны задать стили только для вложенных элементов. Допустим определенные стили ТОЛЬКО у ссылок меню или ТОЛЬКО у абзацей определенного блока, например, блока с контентом. Для этого используется понятие вложенных селекторов. Необходимо слева направо задать порядок вложенности.</p> <p>Например, добавим стили для абзацей контентной части. В этом случае стили, которые заданы у вложенного в блок абзаца перебьют общие стили для всех абзацей. Таким образом мы не плодим лишние классы, а обходимся компактной конструкцией.</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"content"</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> ... <span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span></code></pre> <p><br></p> <pre><code class="hljs css"><span class="hljs-tag">p</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute">margin-bottom</span>:<span class="hljs-value"> <span class="hljs-number">10px</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">color</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#000</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">font-size</span>:<span class="hljs-value"> <span class="hljs-number">14px</span></span></span>; <span class="hljs-rule">}</span></span><br><span class="hljs-class">.content</span> <span class="hljs-tag">p</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">color</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#eee</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">font-size</span>:<span class="hljs-value"> <span class="hljs-number">16px</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">matgin-bottom</span>:<span class="hljs-value"> <span class="hljs-number">15px</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span></code></pre> <p>Еще одна полезная фишка для удобства - это использование соседних селекторов. Слева направо через знак плюс прописываем два селектора. Стили, указанные в фигурных скобках, применяются к последнему селектору только в случае, если он стоит после первого.</p> <p>Например, для селектора по классу .sec применется отступ сверху, если он стоит после элемента с классом .first:</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"content"</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"first"</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"sec"</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span></code></pre> <p><br></p> <pre><code class="hljs css"><span class="hljs-class">.first</span> + <span class="hljs-class">.sec</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute">margin-top</span>:<span class="hljs-value"> <span class="hljs-number">20px</span></span></span>; <span class="hljs-rule">}</span></span><br></code></pre> <p>Вложенные и соседние селекторы можно комбинировать. Если зададим в примере перед конструкцией <em>.first + .sec</em> класс <em>.content</em>, то свойства применяются для второго класса в случае, если он идет после первого и они оба лежат в блоке с классом <em>.content</em>.</p> <h2>Стили для дочерних селекторов. Чем дочерние элементы отличаются от потомков</h2> <p>С вложенностью селекторов мы познакомилимь. Понятно, что сначала идет родительский элемент (предок), а вложенные в него элементы являются потомками. При чем не важно, какой у них уровень вложенности, все равно для первого элемента они будут потомками. Чтобы задать стили для первого уровня вложенности, т.е. для непосредственного потомка, используют понятие дочернего селектора. Для этого используют символ <em>&gt;, </em>он указывает на дочерний селектор.</p> <p>В данном примере стили применяются только для элемента <em>span</em> вложенного непосредственно в <em>.content,</em> а для <em>span</em> внутри абзаца не применяются.</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"content"</span>&gt;</span> <br> <span class="hljs-tag">&lt;<span class="hljs-title">span</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">span</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">p</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"first"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">span</span>&gt;</span>...<span class="hljs-tag">&lt;<span class="hljs-title">span</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"sec"</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br></code></pre> <p><br></p> <pre><code class="hljs ruby"><span class="hljs-prompt">.content &gt;</span> span {<br>...<br>}</code></pre> <h2>Псевдоклассы</h2> <p>Еще одно уточнение для задания стилей. Расширяет наши возможности и сужает область применения без использования дополнительных классов и конструкций. Псевдоклассы задаются через символ двоеточия. Перечислим часто используемые и кратко познакомимся с ними:</p> <ul> <li><span><strong>first-child и last-child</strong>. Задает стили для первого и последнего дочернего элемента внутри родителя. Например, стили только для первого абзаца внутри контентной области. </span> <pre><code class="hljs">p:first-child{...}<br></code></pre> </li> <li><strong>nth-of-type</strong>. Идея схожа с предыдущем псевдоклассом. Указывает на элеменет в зависимости его расположения внутри родителя. Только здесь еще точнее, может отметить не только первый и последний элементо, но и с любым порядковым номер. Синтаксис такой <strong>селектор:nth-child(значение)</strong>. Значение может быть целочисленное или заданное с помощью формулы. Например, для всех четных абзацей можно использовать такую запись: <pre><code class="hljs coffeescript"><span class="hljs-attribute">p</span>:nth-<span class="hljs-keyword">of</span>-type(<span class="hljs-number">2</span>n){...}</code></pre> </li> <li><strong>hover</strong>. С помощью этого псевдокласса можно отследить такое действие пользователя, как наведение на элемент и задать при этом стилистические особенности. Например, при наведении на ссылку уберем ее подчеркивание. <pre><code class="hljs css"><span class="hljs-tag">a</span><span class="hljs-pseudo">:hover</span> <span class="hljs-rules">{<span class="hljs-rule"><span class="hljs-attribute">text-decoration</span>:<span class="hljs-value"> none</span></span>;<span class="hljs-rule">}</span></span></code></pre> </li> <li><strong>:link, :visited и :active</strong>. Специальные псевдоклассы для работы со ссылками. С помощью них можно добавить стили непосещенных, посещенных и активных ссылок.</li> <li><strong>:focus</strong>. Псевдокласс для элементов в фокусе, например для input куда мы на данный момент вводим значение.</li> </ul> </div> </div>]]></content:encoded>
</item><item>
<title>Урок 7. Основы CSS, уроки CSS</title>
<link>https://devnew.org/blog/learn-html/883-urok-7-osnovy-css-uroki-css.html</link>
<pdalink>https://devnew.org/blog/learn-html/883-urok-7-osnovy-css-uroki-css.html</pdalink>
<guid>https://devnew.org/blog/learn-html/883-urok-7-osnovy-css-uroki-css.html</guid>
<pubDate>Tue, 24 Oct 2023 20:08:51 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<div class="entry-content"> <div class="entry-content"> <p>Многим читающим эту статью уже известно, что CSS расшифровывается как каскадная таблица стилей. Надеюсь, вы хотя бы примерно предполагаете как она работает. Подключать файл стилей мы уже умеем, теперь разберемся с его начинкой. Стили отвечают за внешний вид нашей html-страницы, за ее оформление и привлекательность. Красивый и грамотный дизайн — один из основных факторов успеха и популярности вашего ресурса, помимо контента. </p> <p>CSS-файл состоит из простейших конструкций. Основу его составляют селекторы и свойства этих селекторов. Селектор — это элемент над которым мы хотим произвести внешние изменения, а свойства — как раз те самые изменения элемента, его цвет, размеры, расположение и т.д. Если представить, что html-страница это холст, то каждый элемент картины является селектором, а вот свойства как раз краски для придания жизни.</p> <h2>CSS правила</h2> <p>Теперь понятно, что весь файл стилей с расширением .css состоит из набора так называемых <em>правил</em>. Правило — это совокупность селектора и свойств. Пример двух правил для заголовка h1 и всех блоков div на странице представлен ниже, именно из таких конструкций состоит весь файл CSS:</p> <pre><code class="hljs css"><span class="hljs-tag">h1</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute">font-size</span>:<span class="hljs-value"> <span class="hljs-number">22px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">color</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#000</span></span></span>; <span class="hljs-rule">}</span></span> <span class="hljs-tag">div</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute">width</span>:<span class="hljs-value"> <span class="hljs-number">100px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">height</span>:<span class="hljs-value"> <span class="hljs-number">50px</span></span></span>; <span class="hljs-rule">}</span></span></code></pre> <p>В данном примере мы обращаемся к самым простым селекторам, селекторам с названием тега. Такие правила применяются ко всем тегам на странице, нет никакой избирательности или фильтрации. Можно назвать такое css-правило общим.</p> <p>Чтобы задать css-свойства для определенной группы элементов, необходимо присвоить каждому элементу группы класс. Класс устанавливается с помощью атрибута class. Например, можно объединить блоки товаров, постов, элементов меню. Все они будут иметь сходные стили, если в качестве селектора использовали название класс. Ниже конструкция каталога, для элементов каталога задаем одинаковые стили.</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"catalog"</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"catalog-item"</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"catalog-item"</span>&gt;</span>...<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br> ...<br><span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br></code></pre> <p>Стили для элементов каталога по установленному классу:</p> <pre><code class="hljs css"><span class="hljs-class">.catalog-item</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">width</span>:<span class="hljs-value"> <span class="hljs-number">250px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">font-size</span>:<span class="hljs-value"> <span class="hljs-number">14px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">background</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#eee</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span></code></pre> <h2>Основные группы CSS-свойств</h2> <p>Все css-свойства условно можно разбить на несколько групп, официально никакой градации не предусмотрено, но для новичков удобнее будет ориентироваться. </p> <ul> <li> <h3>Внешний вид текста</h3> <p>К этой группе css-свойств можно отнести <strong>font-size</strong> (размер шрифта), <strong>text-decoration</strong> (при значении underline имеем подчеркнутый текст), <strong>font-weight</strong> (жирность шрифта, bold - жирный), <strong>font-style</strong> (стиль текста), <strong>color</strong> (цвет текста) и т.д.</p> </li> <li> <h3>Размеры и отступы</h3> <p>В верстке существуют два основных, самых важных понятия типа отображения элемента. Элемент может быть блочный и строчный, другие способы отображения не так важны. Блочные элементы могут иметь размеры (высоту <strong>height</strong> и ширину <strong>width</strong>), отступы внешние (<strong>margin</strong>) и внутренние (<strong>padding</strong>). Свойства css для задания размеров и отступов элементов подробно описаны в так называемой Блочной модели.</p> </li> <li> <h3>Сетки</h3> <p>Все видели как выглядит типичный сайт? Сначала идет header, затем основной блок с контентом и сайдбаром, заканчивается страница обычно футером. Такое расположение элементов относительно друг друга называется построением html-сеток. Подробнее о сетках поговорим в следующих уроках верстки. Пример простейшей сетки ниже с помощью<strong> float</strong> (выравнивания элементов):</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"header"</span>&gt;</span>Голова<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"left-column"</span>&gt;</span>Контент<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"right-column"</span>&gt;</span>Сайдбар<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"footer"</span>&gt;</span>Подвал<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br></code></pre> <p>Стили для сетки:</p> <pre><code class="hljs coffeescript">div {<br> margin-<span class="hljs-attribute">bottom</span>: <span class="hljs-number">10</span>px;<br> <span class="hljs-attribute">padding</span>: <span class="hljs-number">10</span>px <span class="hljs-number">20</span>px <span class="hljs-number">10</span>px <span class="hljs-number">20</span>px;<br> background-<span class="hljs-attribute">color</span>: <span class="hljs-comment">#dff0d8;</span><br><span class="hljs-comment">}</span> .left-column {<br> <span class="hljs-attribute">width</span>: <span class="hljs-number">60</span>%;<br> min-<span class="hljs-attribute">height</span>: <span class="hljs-number">90</span>px;<br> background-<span class="hljs-attribute">color</span>: <span class="hljs-comment">#fcf8e3;</span><br><span class="hljs-comment"> float: left;</span><br><span class="hljs-comment">}</span> .right-column {<br> <span class="hljs-attribute">width</span>: <span class="hljs-number">25</span>%;<br> min-<span class="hljs-attribute">height</span>: <span class="hljs-number">90</span>px;<br> background-<span class="hljs-attribute">color</span>: <span class="hljs-comment">#d9edf7;</span><br><span class="hljs-comment"> float: right;.</span><br><span class="hljs-comment">}</span> .footer {<br> <span class="hljs-attribute">clear</span>: both;<br>}</code></pre> </li> <li> <h3>Позиционирование в CSS</h3> <p>Позиционирование в css используется для создания эффекта многослойности, чтобы элементы могли накладываться друг на друга, всплывать. Для задания одного из режимов позиционирования используют свойство <strong>position</strong> и набор из управленческих свойств<strong> top, left, right, bottom</strong>. Они задают соответствующие отступ для элемента. Популярным значение для свойства position является absolute. Оно исключает элемент из потока, накладывает на страницу сверху. Место выдернутого элемента занимают следующие по порядку блоки. Для задания приоритета позиционирования, порядка наложения используют свойство <strong>z-index</strong> с целочисленными значениями.<strong><br></strong></p> </li> <li><strong>Дизайн (цвета, тени, градиенты, фон)</strong></li> <li><strong>Прочее</strong></li> </ul> <p><span style="font-size:18px;"><b>Что значит каскадность стилей CSS</b></span></p> <p>Пришло время разобраться с понятием каскадности стилей. Этот мощный механизм основывается на комбинировании всех CSS-правил, которые относятся к одному и тому же элементу. Например, мы назначаем общие правила для всех абзацей на странице. Затем добавляем к одному из абзацей класс, для класса тоже задаем свои свойства. Браузер соберет все правила для данного элемента в соответствии с приоритетом и применит их. В этом и заключается каскадность.</p> <p>Понятие каскадности тесно связано с переопределением стилей. Оно происходит, когда в файле стилей для одного и того же элемента задаем одинаковое свойство с разными значениями. Стиль переопределиться в соответствии с приоритетом. Кратко можно описать приоритеты следующим образом в порядке убывания:</p> <ol> <li>Атрибут style внутри тега, самый высокий приоритет</li> <li>Правила для селектора c id</li> <li>Правила для селектора с классом</li> <li>Правила для селектора с тегом</li> </ol> <p>Профессиональными разработчиками часто используется прием нескольких классов у одного элемента. Таким образом не обязательно прописывать свойства для каждого из них, достаточно добавить к нужным блокам класс и прописать свойства для этого класса.</p> <h2>Наследование стилей css</h2> <p>Еще одно важное понятие CSS — это наследование. Все стили определенные для родительского элемента будут приняты и дочерними. Если прописать размер и стиль шрифта, цвет у элемента ul для меню, то все дочерние li примут эти значения. Есть свойства, которые не наследуются. К ним относятся свойства из категории размеры и отступы, позиционирование.</p> </div> </div>]]></content:encoded>
</item><item>
<title>Урок 6. Верстка форм</title>
<link>https://devnew.org/blog/learn-html/882-urok-6-verstka-form.html</link>
<pdalink>https://devnew.org/blog/learn-html/882-urok-6-verstka-form.html</pdalink>
<guid>https://devnew.org/blog/learn-html/882-urok-6-verstka-form.html</guid>
<pubDate>Tue, 24 Oct 2023 20:04:09 +0000</pubDate>
<category>index</category>

<enclosure url="https://devnew.org/uploads/posts/2023-10/thumbs/snimok-jekrana-2023-10-24-200559.webp" type="image/webp" />
<enclosure url="https://devnew.org/uploads/posts/2023-10/thumbs/snimok-jekrana-2023-10-24-200444.webp" type="image/webp" />
<content:encoded><![CDATA[<p>Для связи между страницей и сервером в Html есть специальный элемент, это форма. С помощью формы мы передаем набор данных, информации, как угодно, а на сервере эти данные обрабатываются. Формы на html-страницах используются для различных целей, для регистрации, обратной связи, заполнения информации в личном кабинете. Собственно понятно, что ни один сайт в сети так или иначе без форм не обходится, поэтому важно научиться верстать формы и разобраться что к чему.</p> <p>Для создания формы используется тег <strong>&lt;form&gt;</strong> с двумя важными атрибутами. Это <strong>action</strong> и <strong>method</strong>. Первый содержит адрес страницы, куда мы передаем информацию, второй метод отправки. С атрибутом action все теоретически понятно, а вот по Method пройдемся подробнее. Два самых популярных значения атрибута <span>— это get и post. В первом случае данные передаются в строке запроса через так называемые get-параметры. Мы видим их в адресной строке после знака вопроса, используют для поиска информации по сайту, например. Во втором случае, когда ссылка на результат отправки формы нам не нужна, передаем большое количество информации.</span></p> <h2><span>Поля формы, верстка формы</span></h2> <p><span>С формой разобрались, теперь о передачи информации через форму. Чтобы передать какие-то данные, нужен способ, чтобы эти данные ввести. Чаще всего в формах используется тег <strong>&lt;input&gt;</strong>, он одиночный, имеет два обязательных атрибуты <strong>type</strong> и<strong> name</strong>. Они основные, задают тип поля (текст, переключатель, список, пароль) и его имя для дальнейшей обработки на сервере.</span></p> <p><span>Еще один важный атрибут для тега &lt;input&gt; — это атрибут <strong>value</strong>, который содержит значение по умолчанию. То, что видит пользователь перед началом ввода, может ввести свое значение или оставить заполненное, если оно его устраивает.</span></p> <p><span>Чтобы создать подсказку для пользователь и смысловую связь поля и текста используют тег <strong>&lt;label&gt;</strong>. Обернув этим парным тегом текст и поле, вы создаете конструкцию подпись-поле, которая связана не только визуально, но и логически. Если подпись и поля не стоят рядом, обернуть их вместе не получается, то можно использовать простую конструкцию для связи. У &lt;input&gt; добавляем уникальный id, а у &lt;label&gt; добавляем атрибут for с названием этого Id. Таким образом создаем свзять между этими элементами. </span></p> <p><span>С полями разобрались, теперь перейдем к вопросу, как отправить информацию из формы? Для этого необходимо добавить кнопку отправки формы. Это тег &lt;input&gt; с атрибутом <strong>type="submit"</strong>. Чтобы придать кнопке привычный вид, добавляем атрибут value с названием кнопки, например, <strong>value="Отправить"</strong>. Пример простейшей формы:</span></p> <pre><code class="hljs xml"><span class="hljs-doctype">&lt;!DOCTYPE html&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">html</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">meta</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">title</span>&gt;</span>Форма<span class="hljs-tag">&lt;/<span class="hljs-title">title</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">body</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">h1</span>&gt;</span>Форма входа<span class="hljs-tag">&lt;/<span class="hljs-title">h1</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">form</span> <span class="hljs-attribute">action</span>=<span class="hljs-value">"http://devnew.org"</span> <span class="hljs-attribute">method</span>=<span class="hljs-value">"post"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">label</span> <span class="hljs-attribute">for</span>=<span class="hljs-value">"login-field"</span>&gt;</span>Ваш логин<span class="hljs-tag">&lt;/<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"text"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"login"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"login-field"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">br</span>/&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">label</span> <span class="hljs-attribute">for</span>=<span class="hljs-value">"password-field"</span>&gt;</span>Ваш пароль<span class="hljs-tag">&lt;/<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"password"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"password"</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"password-field"</span>&gt;</span> <br> <span class="hljs-tag">&lt;<span class="hljs-title">br</span>/&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"submit"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"Отправить"</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">form</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">body</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">html</span>&gt;</span></code></pre> <h3>Вот что получаем в итоге:</h3> <p><a href="https://devnew.org/uploads/posts/2023-10/snimok-jekrana-2023-10-24-200559.webp" class="highslide"><img src="https://devnew.org/uploads/posts/2023-10/thumbs/snimok-jekrana-2023-10-24-200559.webp" style="float:left;" alt=""></a> </p> <p><br></p> <h2><br><br><br>Верстка сложных элементов форм</h2> <p>Перейдем к более сложным элементам формы, которые тоже очень часто используются для отправки информации. Иногда необходимо использовать многострочные поля для ввода информации, например, комментариев к записи. Для этого используется тег <strong>&lt;textarea&gt;Значение поля&lt;/textarea&gt;</strong>. Имя задается аналогично атрибутом name, значение по умолчанию пишется между тегами. Есть еще два важных атрибута для задания высоты поля в строках (rows) и ширины в символах (cols).</p> <p>Для создания элемента-галочки (чекбокса) используется уже известный тег &lt;input&gt; с атрибутом <strong>type="checkbox"</strong>. Данный элемент формы передает одно из значений, да или нет. Если да, то на сервер передается имя атрибута, если нет, то ничего. Чтобы по умолчанию галочка уже стояла прописываем атрибут checked.</p> <p>Если необходимо выбрать один из вариантов среди множества, используют элемент-переключатель. Опять используем тег &lt;input&gt;, но уже с другим атрибутом <strong>type="radio"</strong>. Уже понятно, что переключателей будет несколько, для полноты выбора. Атрибут name у них будет одинаковый, чтобы связать их между собой, а атрибут value у каждого свой.</p> <p>Для загрузки файлов используется наше любимое поле &lt;input&gt; с атрибутом <strong>type="file"</strong>. Чтобы передача файла работала добавьте <em>форме</em> атрибут <strong>enctype="multipart/form-data"</strong></p> <pre><code class="hljs xml"><span class="hljs-doctype">&lt;!DOCTYPE html&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">html</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">meta</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">title</span>&gt;</span>Сложные формы<span class="hljs-tag">&lt;/<span class="hljs-title">title</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">body</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">form</span> <span class="hljs-attribute">action</span>=<span class="hljs-value">"https://echo.htmlacademy.ru"</span> <span class="hljs-attribute">method</span>=<span class="hljs-value">"post"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>Выберите один вариант ответа?<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"radio"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"question"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"1"</span>&gt;</span><br> Ответ 1<br> <span class="hljs-tag">&lt;/<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">br</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"radio"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"question"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"2"</span>&gt;</span><br> Ответ 2<br> <span class="hljs-tag">&lt;/<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">br</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"radio"</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"question"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"3"</span>&gt;</span><br> Ответ 3<br> <span class="hljs-tag">&lt;/<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">br</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">textarea</span> <span class="hljs-attribute">rows</span>=<span class="hljs-value">"5"</span>&gt;</span>Комментарий<span class="hljs-tag">&lt;/<span class="hljs-title">textarea</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">label</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">input</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"submit"</span> <span class="hljs-attribute">value</span>=<span class="hljs-value">"Отправить"</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">form</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">body</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">html</span>&gt;</span></code></pre> <h3>Получаем в итоге:</h3> <p><a href="https://devnew.org/uploads/posts/2023-10/snimok-jekrana-2023-10-24-200444.webp" class="highslide"><img src="https://devnew.org/uploads/posts/2023-10/thumbs/snimok-jekrana-2023-10-24-200444.webp" style="float:left;" alt=""></a> </p>]]></content:encoded>
</item><item>
<title>Урок 5. Верстка таблиц, теги table, tr, td</title>
<link>https://devnew.org/blog/learn-html/881-urok-5-verstka-tablic-tegi-table-tr-td.html</link>
<pdalink>https://devnew.org/blog/learn-html/881-urok-5-verstka-tablic-tegi-table-tr-td.html</pdalink>
<guid>https://devnew.org/blog/learn-html/881-urok-5-verstka-tablic-tegi-table-tr-td.html</guid>
<pubDate>Tue, 24 Oct 2023 20:00:57 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<div class="entry-content"> <div class="entry-content"> <p>Мы уже знаем, что самое важное, что есть на любом сайте <span>— это информация. Для грамотного представляю данных часто возникает нужда в таблицах. У тех, кто только начинает знакомиться с версткой, часто возникают трудности с версткой именно таблиц. Иногда нужно оформлять большие и сложные таблицы, их верстка сопряжена с использованием различных тегов, структура которых не всегда понятна.</span></p> <p><span>Основным тегом для верстки таблиц является тег &lt;table&gt;. Он оборачивает все содержимое и закрывается по окончанию. Все мы знаем, что у таблицы есть строки и столбцы. Для обозначения строк используем тег &lt;tr&gt;, а для столбцов тег &lt;td&gt;. Содержимое каждого столбца оборачиваем тегом td. Теги td находятся внутри тегов tr. В случае с простейшей таблицей число тегов td в каждой строке(tr) одинаково.</span></p> <p><span>Иногда в процессе верстки таблиц возникает необходимость создать заголовки столбца, для этого мы используем тег th. Этот тег аналогичен тегу td, тоже расположен внутри tr, но идеологически и стилистически отличается. По умолчанию он выделен жирно, и текст в нем </span>выравнивается по центру.</p> <p><span>Не совесем понятно? Рассмотрим таблицу из 4 строк и 2х столбцов с заголовками:</span></p> <pre><code class="hljs xml"><span class="hljs-doctype">&lt;!DOCTYPE html&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">html</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">meta</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">title</span>&gt;</span>Простая таблица<span class="hljs-tag">&lt;/<span class="hljs-title">title</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">body</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">table</span> <span class="hljs-attribute">border</span>=<span class="hljs-value">"1"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">th</span>&gt;</span>Заголовок 1<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">th</span>&gt;</span>Заголовок 2<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 1<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 2<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 3<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 4<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 5<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 6<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример 7<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Длинный текст 8<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">table</span>&gt;</span> <br><span class="hljs-tag">&lt;/<span class="hljs-title">body</span>&gt;</span> <br><span class="hljs-tag">&lt;/<span class="hljs-title">html</span>&gt;</span></code></pre> <p>В итоге получаем:</p> <table border="1"> <tbody> <tr> <th>Заголовок 1</th> <th>Заголовок 2</th> </tr> <tr> <td>Пример столбца 1</td> <td>Пример столбца 2</td> </tr> <tr> <td>Пример столбца 3</td> <td>Пример столбца 4</td> </tr> <tr> <td>Пример столбца 5</td> <td>Пример столбца 6</td> </tr> <tr> <td>Пример 7</td> <td>Длинный текст 8</td> </tr> </tbody> </table> <h2>Объединение ячеек в таблице по вертикали и горизонтали, верстка</h2> <p>Теперь поговорим об одном достаточно сложном и непонятном моменте в верстке таблиц. Часто нам необходимо объединить ячейки таблицы между собой по вертикали или горизонтали. Для этого используется атрибут <span><strong>colspan</strong> для ячеек таблицы td. Значения у этого атрибута в виде чисел. Если ставим цифру 2 в значение, то совмещаем по горизонтали две ячейки, текущую и ту, что справа, но в разметке правой ячейки уже быть не должно, содержимое пишем в тот td, которому задали colspan.</span></p> <p><span>Для совмещения ячеек по вертикали необходимо использовать аналогичный атрибут<strong> rowspan</strong> для тега td. Например, задаем значение 2, значит совмещаем ячейку с нижней. Не забываем удалить ту ячейку, с которой совмешаем из разметки таблицы, иначе выйдет смещение и появление лишних элементов в таблице. Почему объединение по вертикали сложнее? Ведь в разметки таблицы данных нижняя ячейка лежит в следующем теге tr, поэтому ее удаление не столь очевидно, как при объединении по горизонтали.</span></p> <p><span>Можно объединить ячейки одновременно по вертикали и горизонтали, для это задаем оба атрибута сразу. Наглядно станет понятно в примере</span>:</p> <pre><code class="hljs xml"><span class="hljs-doctype">&lt;!DOCTYPE html&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">html</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">meta</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">title</span>&gt;</span>Простая таблица<span class="hljs-tag">&lt;/<span class="hljs-title">title</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">head</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">body</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">table</span> <span class="hljs-attribute">border</span>=<span class="hljs-value">"1"</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span> <span class="hljs-attribute">colspan</span>=<span class="hljs-value">"2"</span>&gt;</span>Объединяем вправо<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span> <span class="hljs-attribute">colspan</span>=<span class="hljs-value">"2"</span> <span class="hljs-attribute">rowspan</span>=<span class="hljs-value">"2"</span>&gt;</span>Объединяем все<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 3<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span> <span class="hljs-attribute">rowspan</span>=<span class="hljs-value">"2"</span>&gt;</span>Объединяем вниз<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 5<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример столбца 6<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Текст<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">tr</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Пример 7<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Длинный текст 8<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Текст<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">td</span>&gt;</span>Текст<span class="hljs-tag">&lt;/<span class="hljs-title">td</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">tr</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">table</span>&gt;</span> <br><span class="hljs-tag">&lt;/<span class="hljs-title">body</span>&gt;</span> <br><span class="hljs-tag">&lt;/<span class="hljs-title">html</span>&gt;</span></code></pre> <table border="1"> <tbody> <tr> <td colspan="2">Объединяем вправо</td> <td colspan="2" rowspan="2">Объединяем все</td> </tr> <tr> <td>Пример столбца 3</td> <td rowspan="2">Объединяем вниз</td> </tr> <tr> <td>Пример столбца 5</td> <td>Пример столбца 6</td> <td>Текст</td> </tr> <tr> <td>Пример 7</td> <td>Длинный текст 8</td> <td>Текст</td> <td>Текст</td> </tr> </tbody> </table> <h2>CSS-оформление таблиц</h2> <p>Верстать таблицы научились, теперь можно создавать таблицы с любым количеством столбцов и строк, нужно лишь корректировать необходимым образом html-разметку. Чтобы придать таблицам привычный вид, нужно знать о css-свойствах, которые полезны при верстке таблиц. </p> <p>Во-первых, таблицам можно задавать рамки. Рамку можно задать, как самой таблице, так и каждой размеченой ячейке таблицы. Но выглядят такие рамки неэстетично и непривычно, чтобы избежать просветов между рамками, используют свойство <strong>border-collapse: collapse;</strong> Оно накладывает рамки ячеек и убирает нежелательные расстояния между ними. Рамку задаем с помощью свойства <strong>border: 2px solid #000;</strong> Этим свойством и его значением задаем размер рамки в два пикселя, черного цвета, простой линией.</p> <p>С помощью рамок можно придать таблице определенный вид. Допустим, хотим расчертить таблицу только на строки или столбцы. Для этого используем css-свойства <strong>border-bottom</strong> и <strong>border-right</strong>.<strong> </strong>С помощью этих свойств задаем рамку у ячейки только с одной стороны,что расчерчивает таблицу нужным образом.</p> <p>Еще одним важным моментом в верстке таблиц становятся отступы внутри ячейки, их задаем с помощью свойства <strong>padding</strong>. Можно задать отступ только с одной стороны, для это используем одно из свойств padding-top, padding-right, padding-bottom или padding-left.</p> <p>Для выравнивания текста внутри ячейки по горизонтали используем css-свойство <strong>text-align</strong> со значениями left, center и right. Для выравнивания по вертикали подойдет свойство <strong>vertical-align</strong>. Оно имеет значения top, middle, bottom. Можно задать для ячеек и строк цвет текст (color), цвет фона (background-color), жирность текста (font-weight) и так далее. Чтобы присвоить определенные стили только для конкретной строки или ячейки целесообразно использовать классы для них, а затем писать css-свойства уже для новых классов.</p> <p>Пример css-кода для разметки простой таблицы.</p> <pre><code class="hljs css"><span class="hljs-tag">table</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">border-collapse</span>:<span class="hljs-value"> collapse</span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">border</span>:<span class="hljs-value"> <span class="hljs-number">2px</span> solid black</span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span><br><span class="hljs-tag">td</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">padding</span>:<span class="hljs-value"> <span class="hljs-number">5px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">padding-right</span>:<span class="hljs-value"> <span class="hljs-number">10px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">border-bottom</span>:<span class="hljs-value"> <span class="hljs-number">1px</span> solid lightgray</span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">text-align</span>:<span class="hljs-value">center</span></span>; <span class="hljs-rule">}</span></span> <span class="hljs-tag">th</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">padding</span>:<span class="hljs-value"> <span class="hljs-number">10px</span></span></span>;</span><br><span class="hljs-rules"> <span class="hljs-rule"><span class="hljs-attribute">border</span>:<span class="hljs-value"> <span class="hljs-number">1px</span> solid black</span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span><br><span class="hljs-tag">tr</span> <span class="hljs-rules">{</span><br><span class="hljs-rules"><span class="hljs-rule"><span class="hljs-attribute">background-color</span>:<span class="hljs-value"> <span class="hljs-hexcolor">#eee</span></span></span>;</span><br><span class="hljs-rules"><span class="hljs-rule">}</span></span></code></pre> </div> </div>]]></content:encoded>
</item><item>
<title>Урок 4. Верстка ссылок, изображений, файлов, якорей и прочих элементов</title>
<link>https://devnew.org/blog/learn-html/880-urok-4-verstka-ssylok-izobrazhenij-fajlov-jakorej-i-prochih-jelementov.html</link>
<pdalink>https://devnew.org/blog/learn-html/880-urok-4-verstka-ssylok-izobrazhenij-fajlov-jakorej-i-prochih-jelementov.html</pdalink>
<guid>https://devnew.org/blog/learn-html/880-urok-4-verstka-ssylok-izobrazhenij-fajlov-jakorej-i-prochih-jelementov.html</guid>
<pubDate>Tue, 24 Oct 2023 19:59:15 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<p>Переходим к следующему уроку верстки страниц. Без чего не обходится ни одна страница в сети, правильно, без информации. Как верстать текст, контент мы познакомились в прошлом <a href="https://devnew.org/learn-html/644-urok-3-razmetka-teksta-html-abzacy-spiski-zagolovki.html">Уроке верстки</a>, теперь пришло время поговорить еще об одном способе передачи информации и навигации по сети интернет. Речь пойдет о ссылках, как основных связующих элементах сайта, без которых нельзя сверстать меню или перелинковать сайт, о изображениях, якорях и файлах на сайте. </p> <p>Надеюсь, что все знакомы с понятием ссылки, она указывает на любую страницу в сети. Ссылка на html-странице задается с помощью тега &lt;a&gt;. Между открывающимся и закрывающимся тегами расположено название ссылки, которое мы видим на странице, с помощью атрибута href задаем адрес ссылки, куда она ведет. Понятно, что без этого атрибута она не имеет никакого значения. С помощью атрибута title можно добавить ссылке всплывающую на некоторое время подсказку, она будет всплывать при наведении. </p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"адрес ссылки"</span> <span class="hljs-attribute">title</span>=<span class="hljs-value">"подсказка"</span>&gt;</span>Название ссылки<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span></code></pre> <p>Адрес ссылки бывает абсолютный и относительный. Различия в том, что абсолютный - это адрес страницы в интернете целиком, с протоколом, доменом (хостом) и полным путем к странице. Например, адрес ссылки http://freehtmlthemes.ru/blog/uroki-verstki абсолютный. Относительные адреса чаще всего начинаются со слеша и не имеют протокола и домена, тогда браузер должен преобразовать данный адрес, подставив протокол и хост текущей страницы. Например, ссылка с адресом blog/uroki-verstki будет относительной ссылкой. Такие виды адресов часто используют в меню и при подключении внешних css-файлов.</p> <p>В ссылках можно указывать не только адреса информационных страниц на сайтах, но и адреса изображений и прочих файлов. Часто такие ссылки используются для размещения галереи или ссылки для скачивания документа. Когда в адресе ссылки указан путь к файлу, то чаще всего начинается его скачивание, однако, если браузер умеет такие файлы открывать, то начнется открытие файла в новом окне. Например, картинку и pdf файл. В примере приведена ссылка на текстовый файл и на картинку.</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"/assets/files/text.txt"</span>&gt;</span>Скачать файл<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"/assets/files/img.png"</span>&gt;</span>Открыть картинку<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span> </code></pre> <h2>HTML якорь, как поставить якорь на странице</h2> <p>Ссылки с якорем в адресе необходимы для навигации внутри страницы, на которой находится пользователь в данный момент. Чтобы поставить ссылку с якорем, необходимо сначала у блока или элемента, куда мы хотим переместиться поставить атрибут id (или идентификатор другими словами) с уникальным названием. А в атрибут href ссылки добавить название этого идентификатора после знака решетки. Пример: </p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#elem1"</span>&gt;</span>Ссылка якорь<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span> ...... <span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">id</span>=<span class="hljs-value">"elem1"</span>&gt;</span>Куда нужно переместиться<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span><br></code></pre> <p>Когда мы кликнем по этой ссылке, то страница прокрутится до элемента с указанным id, перезагрузки и перехода куда-либо не произойдет. Если добавить якорь к абсолютному адресу, то сначала произойдет переход на указанную страницу, а затем прокрутка до нужного места. Например :</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"http://devnew.org#elem1"</span>&gt;</span>Ссылка якорь<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span><br></code></pre> <h2>HTML картинка, как добавить картинку на страницу</h2> <p>Верстка картинок элементарна, нужно просто использовать тег img с атрибутом src, где задать адрес картинки. Тег img одиночный, он не требует закрытия. С помощью атрибутов width и height можно управлять размерами изображения. Высоту и ширину можно задавать в пикселях или процентах, при чем когда задаем пиксели не пишем после значения px, а в случае с процентами указываем значок процентов. Если задаем одно значение, то второе высчитывается автоматически.</p> <p>Еще у изображений есть важный для поисковиков атрибут alt или альтернативный текст картинки. Помимо значения для браузера он несет еще и визуальную функцию, когда изображения по каким-то причинам не загружаются, битые ссылки или не тянет интернет, то показывается этот альтернативный текст.</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">img</span> <span class="hljs-attribute">width</span>=<span class="hljs-value">"120"</span> <span class="hljs-attribute">height</span>=<span class="hljs-value">"70"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"альтернативный текст"</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"/assets/files/img.png"</span>&gt;</span><br></code></pre> <h2>Верстаем галерею, ссылка картинка</h2> <p>Внутри ссылки можно располагать не только текст, но и изображения, часто это нужно для верстки галереи, где по клику открывается большая картинка с помощью специальных плагинов. Внутри же ссылки расположена миниатюра.</p> <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"big-img.png"</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">img</span> <span class="hljs-attribute">src</span>=<span class="hljs-value">"small-img.png"</span> <span class="hljs-attribute">alt</span>=<span class="hljs-value">"маленькая картинка"</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span></code></pre>]]></content:encoded>
</item><item>
<title>Урок 3. Разметка текста HTML. Абзацы, списки, заголовки</title>
<link>https://devnew.org/blog/learn-html/879-urok-3-razmetka-teksta-html-abzacy-spiski-zagolovki.html</link>
<pdalink>https://devnew.org/blog/learn-html/879-urok-3-razmetka-teksta-html-abzacy-spiski-zagolovki.html</pdalink>
<guid>https://devnew.org/blog/learn-html/879-urok-3-razmetka-teksta-html-abzacy-spiski-zagolovki.html</guid>
<pubDate>Tue, 24 Oct 2023 19:53:24 +0000</pubDate>
<category>index</category>

<content:encoded><![CDATA[<p>Всем известно, что самой ценной составляющей каждой страницы вашего сайта является контент. Уникальный, грамотный, интересный текст завоевывает новых посетителей, заставляет возвращаться на ресурс старых. Помимо качества статьи ключевое значение в организации написания контента является его разметка. Чтобы правильно организовать текст на сайте нужно хорошо знать <a href="https://devnew.org/learn-html/642-urok-1-html5-i-struktura-html-dlja-nachinajuschih.html">структуру HTML</a> и теги для верстки текста. В этой статье мы рассмотрим абзацы, заголовки различного уровня, списки, цитаты, выделения, переносы текста и верстку этих элементов.<br><br></p> <h2>Абзацы, заголовки текста и списки. Основа верстки контента</h2> <p>Любая информация должна быть правильно структурирована для удобство чтения. В статьях на сайте основной единицей текста является абзац, его выделяем с помощью тега <strong>&lt;p&gt;</strong>, закрываем аналогичным тегом со слешем в начале <strong>&lt;/p&gt;</strong>. Стилистически абзац имеет отступ снизу, всегда начинается с новой строки.</p> <p>Для выделения основных пунктов, разделов в статье используют заголовки различного уровня. Если информации много, то наличие заголовков помимо главного обязательно, тем более для продвижения в поисковых системах это имеет особое значение. Заголовки бывают шести уровней. От <strong>&lt;h1&gt;</strong> до <strong>&lt;h6&gt;</strong>. В реальных примерах чаще всего можно встретить заголовки до третьего уровня. Их количество в статье варьируется, самый главный заголовок H1 должен встречаться в теле (body) только один раз, количество заголовков H2 желательно не делать больше 2-3, но это не строгое правило. По сути заголовки отображают иерархию страницы, перескакивать уровни не следует.</p> <p>Далее поговорим еще об одном инструменте для написания статьи — это маркированные и нумерованные списки. Для их обертки в случае с маркированным используют теги <strong>&lt;ul&gt;&lt;/ul&gt;</strong>, нумерованным теги <strong>&lt;ol&gt;&lt;/ol&gt;</strong> а элементы списка оборачивают тегом <strong>&lt;li&gt;</strong>. Для нумерованного списка есть атрибут start, благодаря которому можно назначить номер начального элемента. Списки можно делать многоуровневыми, с бесконечной вложенностью. Сначала создаем список первого уровня, затем внутри тега li располагаем еще один список, данный прием часто используют для создания меню на сайте. </p> <h2>Выделение текста, переносы, цитаты. Выделяем важное в статье</h2> <p>Зачастую помимо визуального эффекта в статье нужно добавить и смысловую важность части текста или фразе, для этого используют два тега <strong>&lt;b&gt;</strong> и <strong>&lt;strong&gt;</strong>. Выглядит текст обернутый этими тегами абсолютно идентично, он выделен полужирным шрифтом, однако в плане смыслового контента strong отмечает более важную информацию. Данные теги применяются внутри более крупных элементов, абзацей, списков и т.д.</p> <p>Далее поговорим о тегах, которые выделяют текст статьи курсивом, они тоже идентичны внешне, но отличаются по смыслу текста, заключенного в них, речь пойдет о тегах <strong>&lt;i&gt;</strong> и <strong>&lt;em&gt;</strong>. Тегом &lt;em&gt; мы выделим часть статьи, которая меняет смысловую нагрузку в предложении, а тегом &lt;i&gt; чаще всего размечают специфические слова или термины, возможно, иностранные заимствования.</p> <p>Немного поговорим о тегах, которые используются реже других и не так часто встречаются в контенте. Например:</p> <ul> <li>тег для переноса текста на новую строку <strong>&lt;br&gt;</strong></li> <li>теги для выделения цитат <span><strong>&lt;blockquote&gt;</strong> (длинные цитаты), <strong>&lt;q&gt;</strong> (небольшие элементы цитирования в предложении), <strong>&lt;cite&gt;</strong> (автор, источник цитаты)</span></li> <li>тег для создания верхнего <strong>&lt;sup&gt;</strong> и нижнего индекса <span><strong>&lt;sub&gt;</strong> в формулах или уравнениях</span></li> </ul> <h3>Пример верстки статьи</h3> <p>Пришло время посмотреть на пример сверстанной статьи, что же у нас получилось</p> <pre><code class="hljs xml"><span class="hljs-doctype">&lt;!DOCTYPE html&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">head</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">title</span>&gt;</span>Заголовок<span class="hljs-tag">&lt;/<span class="hljs-title">title</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">meta</span> <span class="hljs-attribute">charset</span>=<span class="hljs-value">"utf-8"</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">meta</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"description"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">"описание"</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">meta</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"keywords"</span> <span class="hljs-attribute">content</span>=<span class="hljs-value">"ключевые, слова, через, запятую"</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-title">head</span>&gt;</span> <br><span class="hljs-tag">&lt;<span class="hljs-title">body</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">h1</span>&gt;</span>Заголовок первого уровня<span class="hljs-tag">&lt;/<span class="hljs-title">h1</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>Пример абзаца. Пример абзаца. Пример абзаца. Пример абзаца.<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>Пример абзаца. Пример абзаца. Пример абзаца. Пример абзаца.<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>Пример абзаца. Пример абзаца. Пример абзаца. Пример абзаца.<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">h2</span>&gt;</span>Заголовок второго уровня<span class="hljs-tag">&lt;/<span class="hljs-title">h2</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>Снова пример длинного, <span class="hljs-tag">&lt;<span class="hljs-title">b</span>&gt;</span>интересного<span class="hljs-tag">&lt;/<span class="hljs-title">b</span>&gt;</span> абзаца. С очень <span class="hljs-tag">&lt;<span class="hljs-title">strong</span>&gt;</span>важной<span class="hljs-tag">&lt;/<span class="hljs-title">strong</span>&gt;</span> информацией и <span class="hljs-tag">&lt;<span class="hljs-title">i</span>&gt;</span>иностранными<span class="hljs-tag">&lt;/<span class="hljs-title">i</span>&gt;</span> терминами.<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span><br><span class="hljs-tag">&lt;<span class="hljs-title">ul</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">li</span>&gt;</span>1 пункт<br> <span class="hljs-tag">&lt;<span class="hljs-title">ul</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">li</span>&gt;</span>1.1 пункт<span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">li</span>&gt;</span>1.2 пункт<span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span><br> <span class="hljs-tag">&lt;<span class="hljs-title">li</span>&gt;</span>1.3 пункт<span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">ul</span>&gt;</span><br> <span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">li</span>&gt;</span>2 пункт<span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">li</span>&gt;</span>3 пункт<span class="hljs-tag">&lt;/<span class="hljs-title">li</span>&gt;</span> <span class="hljs-tag">&lt;/<span class="hljs-title">ul</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">body</span>&gt;</span><br><span class="hljs-tag">&lt;/<span class="hljs-title">html</span>&gt;</span></code></pre>]]></content:encoded>
</item></channel></rss>