Показаны сообщения с ярлыком полезное. Показать все сообщения
Показаны сообщения с ярлыком полезное. Показать все сообщения

понедельник, 3 августа 2020 г.

HTML5. 10 полезных тегов и атрибутов, которые Вы должны знать!

Структурная разметка HTML5

В HTML5 появилось несколько новых тегов, которые призваны заменить уже прижившиеся блоки div (не все конечно :) ). Внешне, так сказать, ничего не изменилось, но в сущности новые теги несут в себе смысловую (семантическую) нагрузку, и строго определяют для каждого блока его место и роль:
Семантические теги HTML5
  • <header> </header> — Определяет область «шапки» сайта с логотипом, первичной навигацией и тд.;
  • <footer> </footer> — Определяет «подвал», колонтитул веб страницы сайта или раздела, в котом обычно размещается дополнительная информация;
  • <section> </section> — Определяет блок, который служит для группировки однотипных объектов, или для разделения текста на разделы;
  • <article> </article> — Определяет автономную часть страницы, это может быть сообщение форума, журнала или газетную статью, запись в блоге и тд.;
  • <nav> </nav> — Определяет область навигации, как правило список ссылок;

Форма

Новые типы input полей

HTML5 введены новые типы input полей. Они позволяют писать более семантически правильный код, адаптированный для мобильных устройствах. Например при использовании типа email происходит автоматическая валидация введенного текста, на предмет идентичности адресу электронной почты и тд.
<input type="url"> <!-- поле для ввода URL адреса -->
<input type="email"> <!-- поле для ввода адреса электронной почты -->
<input type="color"> <!-- поле для выбора цвета -->
<input type="date"> <!-- поле для выбора даты -->
<input type="datetime"> <!-- поле для выбора даты и времени (с часовым поясом) -->
<input type="datetime-local"> <!-- поле для выбора даты и времени (без часового пояса) -->
<input type="month"> <!-- поле для выбора месяца и года -->
<input type="number"> <!-- поле для ввода числового значения -->
<input type="range"> <!-- бегунок для выбора числа из диапазона -->
<input type="search"> <!-- тип поискового поля -->
<input type="tel"> <!-- поле для ввода номера телефона -->
<input type="time"> <!-- поле для ввода времени -->
<input type="week"> <!-- поле для выбора недели и года -->

Регулярные выражения для валидации

До появления HTML5, при использовании формы на вашем сайте, вы должны были пропускать введенный текст через JavaScript для проверки. Теперь с HTML5 и атрибутом pattern, вы можете определить шаблон регулярного выражения для проверки данных.
<!-- для проверки адресов электронной почты -->
<input type="text" title="электронный адрес" required pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}" />
<!-- для паролей -->
<input type="text" title="по крайней мере восемь символов, содержащих хотя бы одну цифру, один символ нижнего и верхнего регистра" required pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" />
<!-- для проверки телефонного номера -->
<input type="text" required pattern="(\+?\d[- .]*){7,13}" title="интернациональный, национальный или местный номер телефона"/>
HTML5 атрибут pattern

Автозаполнение с HTML5 datalist

Использование dataList элемента HTML5, позволяет создавать список данных для автозаполнения полей ввода. Супер полезно!
<input name="frameworks" list="frameworks" />

<datalist id="frameworks">
   <option value="MooTools">
   <option value="Moobile">
   <option value="Dojo Toolkit">
   <option value="jQuery">
   <option value="YUI">
</datalist>
HTML5 autocomplete

Автофокус полей формы

Атрибут autofocus позволит вам установить фокус на любой элемент формы (в том числе кнопку).
<input type="text" autofocus="autofocus" />

Замещающий текст поля

Это тот самый (серенький) текст который находится к примеру в поле поиска и призывает ввести искомое слово и нажать Enter. В HTML5 замещающий текст реализуется вот-так:
<input type="search" placeholder="Поиск на сайте" />
Замещающий текст поля

Скрытые элементы с помощью HTML5

В HTML5 введен атрибут hidden, который позволяет скрыть определенный элемент, на подобии того как это применяется в CSS с использованием dispaly: none
<p hidden>Здесь находится текст, который скрыт с помощью HTML5!</p>

HTML5 prefetching — предварительная загрузка

С помощью этого механизма можно заранее кэшировать указанный ресурс (картинку, страницу или файл), например сразу подгрузить стили которые будут использованы на сайте:
<link rel="prefetch" href="style_dark.css">

HTML5 <details> и <summary> теги

C помощью этих тегов пользователь может манипулировать отображением (раскрывать и скрывать снова), какой либо дополнительной информации.
<details>
   <summary>Заголовок 1</summary>
      <p>Pellentesque habitant morbi tristique senectus et netus ....</p>
</details>
<details>
   <summary>Заголовок 2</summary>
      <p>Pellentesque habitant morbi tristique senectus et netus et malesuada ...</p>
</details>
Теги Details и Summary
Создаем аккордеон для сайта — http://xozblog.ru/2012/06/accordions/

Атрибут download

В HTML5 появился новый атрибут для ссылок. Теперь чтобы указать браузеру, что ссылку надо загружать, а не открывать достаточно использовать данный атрибут.
<!-- имя в диалоге будет muzika.mp3-->
<a href="sound.mp3" download="muzika">Скачать песню</a>
Чтобы оставаться в курсе свежих статей и уроков следите за нашим блогом или добавляйте в ищбранное. Не забывайте оставлять комментарии к статьям и урокам. Спасибо!

источник - http://xozblog.ru/2013/03/html5-tags-attributes/

понедельник, 12 ноября 2018 г.

Что я узнал на личном опыте за годы фриланса






Первоначально опубликовано в /r/freelance на Reddit, но выкладываю здесь для потомков.

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

Типичный штатный сотрудник обходится компании в 2-3 раза дороже его номинальной зарплаты


Используй это в качестве основы для расчёта своих тарифов. $90 в час может показаться дорогой альтернативой сотруднику, который получает зарплату $30 в час, но в реальности это эквивалент $90, и расходы прекращаются сразу по окончании проекта.

Если клиент просит 6+ часов в день, ты потратишь 8 часов


Ты не сделаешь ничего полезного (читай: оплачиваемого) в оставшиеся два часа. Они отняли у тебя целый день, но заплатили только за 75%. В таких ситуациях взимай дневную ставку.

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

Ты бизнес, а не работник


Некоторые переговоры в порядке вещей, но в конечном счете ты участвуешь в деловой сделке, поэтому клиент не может диктовать рабочие часы, ставки и т.д. Он может предложить или спросить о них, но в конечном итоге именно ты решаешь, когда и на каких условиях работать. Что приводит к…

Необоснованные запросы заслуживают необоснованных ставок


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

Установи рабочие часы и придерживайся их


Я работаю довольно нерегулярно в течение дня и вечером, но для клиентов моё рабочее время с 9 до 17, со вторника по пятницу. Любые запросы в нерабочее время означают увеличение ставки на 30%. Обратите внимание, что это складывается с тарифом за срочность (решение чрезвычайной ситуации в полночь обойдётся минимум в два часа с тарифом 160%, даже если займёт у меня 15 минут). Если я сам решу работать в нерабочее время, то буду взимать стандартную ставку, но явные запросы на такую работу ведут к повышению тарифа.

Будь открытым, честным и искренним


Самое худшее для клиента — услышать о проблемах за день до (или после) сдачи. Если у тебя возникли проблемы, заранее поговори с ним и согласуй ожидания. Может та фича, на которой ты застрял, на самом деле не настолько важна, чтобы задержать проект, а может задержка — просто проблемы с общением. В любом случае, всегда лучше поговорить с клиентом раньше, чем позже. Часто они понимают и одобряют небольшую корректировку плана работ.

Голод не означает отчаяние


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

Если ты не можешь справиться, пусть это сделает другой


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

Твой проект бесконечно важнее для тебя, чем для клиента


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

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