Все о datalist, fieldset и button в HTML
Привет, в рамках этого урока мы разберемся оставшимися тегами формы, а именно: datalist, fieldset, legend, button. Также разберемся в нюансах и частоте использования этих тегов. Текстовая версия урока в полной версии этой статьи.
Datalist
<datalist> - содержит набор опций (<option>), доступных для выбора. Выбранное значение будет установлено для элемента <input>, с атрибутом list.
Не стоит использовать его вместо тега <select>, но можно использовать как вспомогательный тег для <input>. Причина в том что его сложнее обрабатывать через JavaScript.
<form action="">
<label for="ice-cream-choice">Choose a flavor:</label>
<input list="ice-cream-flavors" id="ice-cream-choice" name="ice-cream-choice" />
<datalist id="ice-cream-flavors">
<option value="Chocolate">
<option value="Coconut">
<option value="Mint">
<option value="Strawberry">
<option value="Vanilla">
</datalist>
</form>
Fieldset
<fieldset> - существует для группировки <input> внутри тега <form>, а также помогает удобно управлять группой полей.
<form action="#">
<h3>Registration form</h3>
<fieldset>
<div>
<label for="name_input">First name:</label>
<input id="name_input" type="text" placeholder="Email">
</div>
<div>
<label for="surname_input">Surname:</label>
<input id="surname_input" type="text" placeholder="Surname">
</div>
</fieldset>
<br>
<fieldset disabled>
<div>
<label for="email_input">Email:</label>
<input id="email_input" type="text" placeholder="Email">
</div>
<div>
<label for="password_input">Password:</label>
<input id="password_input" type="text" placeholder="Password">
</div>
</fieldset>
</form>
У <fieldset> также есть несколько атрибутов, которые помогают управлять сразу всей группой <input>.
name - задает общее имя для группы
disabled - делает группу недоступной для редактирования
form - если <fieldset> лежит вне тега <form> то этот атрибут позволит вам связать их.
<form action="" id="example_form">
<h3>Example form</h3>
<label>
<input type="text" placeholder="Some example input">
</label>
</form>
<fieldset form="example_form">
<div>
<label for="name_2_input">First name:</label>
<input id="name_2_input" type="text" placeholder="Email">
</div>
<div>
<label for="surname_2_input">Surname:</label>
<input id="surname_2_input" type="text" placeholder="Surname">
</div>
</fieldset>
Legend
<legend> - Является заголовком для группы элементов, сгруппированных через <fieldset>
<form action="">
<h3>Another Example Form</h3>
<fieldset>
<legend>User info</legend>
<div>
<label for="name_3_input">First name:</label>
<input id="name_3_input" type="text" placeholder="Email">
</div>
<div>
<label for="surname_3_input">Surname:</label>
<input id="surname_3_input" type="text" placeholder="Surname">
</div>
</fieldset>
<br>
<fieldset disabled>
<legend>User credentials</legend>
<div>
<label for="email_3_input">Email:</label>
<input id="email_3_input" type="text" placeholder="Email">
</div>
<div>
<label for="password_3_input">Password:</label>
<input id="password_3_input" type="text" placeholder="Password">
</div>
</fieldset>
Button
<button> - Парный тег, который предназначен для создания кнопки, имеет схожие атрибуты с тегом <input>. Может использовать как внутри <form> заменяя собой <input type="button">, так и просто как отдельный элемент на странице.
<form action="">
<h3>Another Example Form</h3>
<fieldset>
<legend>User info</legend>
<div>
<label for="name_3_input">First name:</label>
<input id="name_3_input" type="text" placeholder="Email">
</div>
<div>
<label for="surname_3_input">Surname:</label>
<input id="surname_3_input" type="text" placeholder="Surname">
</div>
</fieldset>
<br>
<fieldset disabled>
<legend>User credentials</legend>
<div>
<label for="email_3_input">Email:</label>
<input id="email_3_input" type="text" placeholder="Email">
</div>
<div>
<label for="password_3_input">Password:</label>
<input id="password_3_input" type="text" placeholder="Password">
</div>
</fieldset>
<fieldset>
<legend>Form Controls</legend>
<button type="submit">Submit</button>
<button type="reset">Clear Form</button>
</fieldset>
</form>
Из грязи во фронтендеры. День #2
Результаты:
1) Я по памяти написала код для простенького калькулятора на 4 действия из прошлой ДЗ.
2) Час-полтора решала проблему с новым репозиторием на Гитхабе, пока не получилось. Попробую завтра всё удалить и пересоздать, если не получится - буду писать наставникам.
Суммарно за день вышло часа два, это мало.
Что нужно сделать, чтобы завтра результаты были лучше?
1) Обращаться за помощью, если самостоятельный поиск решения дольше 30 минут безрезультатный. (Тем более если это не решение задач, а какие-то вспомогательные инструменты типа гитхаба).
2) Ставить более реалистичные и измеримые цели или снижать планку качества выполнения задач (например, для конспектов).
Из грязи во фронтендеры. День #0
Привет, пикабушники!
Сейчас я учусь на фронтенд-разработчика. Когда занимаюсь - мне нравится. Но усадить себя бывает сложно, а если забить - все резво летит под откос... все как у простых смертных, в общем. И если HTML/CSS я по верхам прошла, то с JS такое не прокатит, насколько я понимаю да и накой оно так нужно. У меня никогда не было навыка системно учиться, и вот видимо момент настал.
Я хочу каждый день отчитываться о проделанной работе, времени обучения и т.д. и т.п.
Интересно, что из этого выйдет, как долго я продержусь и как это повлияет на мою дисциплину и мотивацию. Вроде как должно положительно, если я даю такое обещание в социальном пространстве, где откосить должно быть не так просто.
Идеальный измеримый результат: пройти основы JS за три месяца. Это 30-40 часов на изучение в неделю.
Идеальный неизмеримый результат: добиться ощущения удовлетворения от обучения, которое перевешивает страхи/непонимание/фрустрацию и т.д.
Спасибо что дочитали и спасибо тем, кто захотел идти вместе со мной по этому пути!
Дополняю:
Почему "JS за три месяца"? У меня на курсах столько длится изучение блока, я просто беру этот срок как ориентир для себя. Согласна со всеми в комментах, что дело не во времени, а в усилиях. Вот и буду смотреть, к каким результатам за это время приведут мои усилия.
Вес селекторов в CSS
Привет, в этом уроке мы на примерах рассмотрим как работает вес и приоритетность селекторов. Текстовое описание урока в полной версии статьи.
Вес селектора - так как у нас в CSS есть огромное количество способов обращения к элементу по селектору, а селектор мы придумываем сами, внутри браузер разделяет их по весу, и отдает приоритет тем стилям вес селектора которых 'тяжелее'.
Селекторы по весу:
1. inline стили (те которые мы пишем внутри атрибута style для тега)
2. #id (селектор id)
3. .class (селектор class и любых других атрибутов кроме id)
4. <tagName> (название тега)
Так как мы можем комбинировать селекторы то и их вес тоже будет складываться.
Пример #1
Пытаемся изменить цвет текста у которого уже написаны inline стили
#p1 {
color: red;
}
Как видим цвет этого элемента не изменился, так происходит потому что у селектора inline стилей селектор тяжелее чем у селектора id, а значит браузер отдаст приоритет селектору inline стилей, а стили которые связаны с id этого элемента будут проигнорированы.
Аналогично будет происходить если мы будем пробовать обратится по классу, тегу или каким-то другим образом.
.p1 {
color: red;
}
Как видим, ни одно из перечисленных css правил не сработало.
[title="p1"] {
color: red;
}
Пример #2
Работаем с элементов #p2 у которого нет inline стилей.
Задам ему цвет через селектор id.
#p2 {
color: deeppink;
}
Пробуем изменить стили через селектор class
.p2 {
color: blueviolet;
}
и другие селекторы
[title="p2"] {
color: blueviolet;
}
p {
color: blueviolet;
}
Как видим цвет элемента не изменился, а остался таким как был задан в селекторе через id это происходит потому что id имеет больше вес чем остальные селекторы, а на текущем элементе нет никаких inline стилей которые могли бы изменять его цвет.
Пример #3
Что делать если наши селекторы одинаковые по весу?
Представим себе ситуацию, у нас есть элемент p3 у которого есть несколько классов и для каждого и этих классов написаны свои стили.
.p3-first {Так как вес этих селекторов одинаковый то в приоритете будут те стили что написаны ниже в файле .css
color: red;
}
.p3-second {
color: green;
}
Файлы с урока - ссылка
Мой youtube
Иду в IT (frontend-разработчик)
Всем привет!
2 недели назад купил курс фронтэнд-разработчика. Для меня это большой шаг, потому что я очень ленив и подвержен страху пробовать что-то новое. До сих пор чтение обсуждений полезности/бесполезности школ/курсов побуждает задать себе вопрос "А не зря ли я в это вписался?", а после покупки курсов эти обсуждения лезут изо всех щелей (привет Баадер-Майнхоф). Но тут же себя одёргиваю, потому что к 30 годам пришло осознание, что пора в своей жизни что-то менять и я иду куда-то не туда, а надо идти вооон туда.
Начитавшись противоречивых комментариев о школах/курсах решил не просто проходить курс, но и делиться успехами и неудачами. И мне лишняя мотивация не помешает и, возможно, кто-то на моём примере решится что-то изменить в своей жизни. В итоге проверю на себе и поделюсь с вами: как обстоят дела с работой после курсов; на сколько полезным/бесполезным было приобретение курсов; что вообще выйдет из затеи "войти в айти".
Выбор курсов (какие именно выбрал ниже) основывался только на отзывах друзей и знакомых, которые либо учатся, либо уже устроились в сфере. Какого-то анализа разницы школ/курсов не проводилось. Как я понял все они +/- одинаковые. Послушал советы, прошёл бесплатную вводную часть, понравилось, купил.
Исходные данные:
- Обо мне: только-только исполнилось 30 лет. Жена, 2 кота, собака и ипотека. Вышка ГМУ. Гуманитарий, так сказать. Работаю менеджером с ЗП в 70к.
- Видение ситуации: полное понимание, что курс - структурированная подача информации, а не билет в райскую жизнь. Нужная бесконечная практика, гуглёж, самостоятельное развитие в теме. При необходимости готов на вышку для расширения знаний.
- Интерес: присутствует. Без этого никуда. Зачем учить то, что не интересно?
- Мотивация: помимо преодоления самого себя и своей лени это, само собой, деньги. Не буду скрывать, что улучшение финансового состояния лично меня в частности и моей семьи в целом, то ради чего всё это было затеяно.
- Курсы: Хекслет. Стоимость обучения 124к. Заявленный срок обучения - 10 месяцев. Скорость прохождения курса зависит лично от меня. По итогам обучения мне обещали помощь в трудоустройстве: составление резюме, собеседование с их HR-ми, проектные работы. Никаких гарантий, что я куплю курс и считай уже устроен, мне не давали.
- Прогресс: на момент написания поста я на 1 модуле "Основы вёрстки и позиционирования" курс 2 "Основы вёрстки контента", который выполнен на 71%. Просто сухая информация о текущем процессе обучения.
- Личный прогноз: оптимистичный дедлайн - к Новому году сменить деятельность. Реалистичный - в течении 2023г. (если он будет, ха-ха). Пессимистичный - сгореть ещё на этапе обучения и забить болт. Как оно выйдет на деле узнаем.
Не вижу смысла скрывать название школы. Если решите, что это реклама их услуг, ваше право.
Не вижу смысла скрывать сумму обучения.
Не буду создавать посты с целью выпросить что почитать/посмотреть по теме. Этого и так в интернете, в том числе и на Пикабу, навалом. Тут только мой путь в IT. Даже наоборот, постараюсь сам делиться чем-то полезным, что поможет в обучении.
По понятным причинам раскрывать содержание уроков тоже не буду.
С тегами могу напутать. Простите.
Спасибо за внимание!
Undefined и null в JavaScript
Привет, в этом уроке мы подробно поговорим о типах данных undefined и null в JavaScript, рассмотрим то как они работают где их применять и как отвечать на каверзные вопросы на собеседовании связанные с этими типами данных. Текстовое описание в полной версии поста.
Undefined
undefined - примитивный тип данных который присваивается переменным как только они были объявлены.Также присваивается аргументам функции которые не были переданы и возвращается из функций внутри которых отсутствует 'return value' или присутствует 'return' без значения.
Не может вернуться и функции которая вызвана через оператор 'new'.
А также мы можем задать это значение явно. Также мы можем получить его и в других случаях, обычно когда значение не определено.
let exampleUndefined_1;
console.log('empty variable', exampleUndefined_1);
function exampleUndefined_2(a, b) {
console.log('func arguments', a, b);
}
exampleUndefined_2();
function exampleUndefined_3() {
return;
}
console.log(
'Empty return value',
exampleUndefined_3()
)
function exampleUndefined_4() {Нужно стараться избегать значения undefined, до того момента пока алгоритм решения вашей задачи не потребует обратного.
let a = 2 + 2;
}
console.log(
'No return value',
exampleUndefined_4()
)
Для того чтобы избежать undefined есть несколько способов. Самым простым из них является инициализация переменной сразу со значением, а также использование let и const вместо var.
let foo = 10; // Good
let bar; // Bad
bar = 10;
var baz = 10; // Bad
Null
null - примитивный тип данных, обычно представляет собой отсутствие какого либо значения в объекте.
Об объектах поговорим позднее. Для того чтобы создать null, мы можем присвоить значение null в переменную или свойству объекта.
let nullExample_1 = null;
// Фигурные скобки используются для создания объекта.
let nullInObjectExample = {
firstName: null,
lastName: null,
age: 10
};
Отличие null от undefined
null является определенным значением отсутствия объекта или отсутствия значения для которого внутри объекта определен ключ.
undefined обозначает неопределенность, а именно то что контейнер был создан но его значение не определили или свойство не было определено вовсе.
Баг оператора typeof
Если мы используем typeof для проверки тип данных null мы получи object.
console.log(
typeof null
)
Для проверки того что значение действительно null, делаем так:
const anotherNullVariable = null;
console.log(
anotherNullVariable === null)
Файлы с урока
undefined - link
null - link
P.S. Не забудь подписаться на мой youtube канал и на канал в telegram где я выкладываю контент каждый день.

