ОЗВБСВПВГАЕЗГБТПТМС
ЛАСЕМСР О САОЕОРРЕИ
Е ЁРЕЁЕ В Л ВР ОАНЛ
Г ЁЛ В Н И НЁ СТЬ
ТО Р О ОТ ТИШ
С А С ОТЕ
Я Щ Я
А
Е
Т
С
Я
Сегодня вместо видео — небольшой пятничный пример для обработки текста, чтобы можно было писать такие сообщения для Телеграмма: https://codepen.io/detepr/pen/MzyjLO
На этой неделе попробуем новый подход к обучению. Всю неделю будем разбирать одну тему при помощи серии коротких видео (менее 5 минут каждое). Кроме того, добавлю разбор домашки.
Код примера при этом остаётся единым, так что его можно легко прочитать от начала до конца: https://codepen.io/detepr/pres/BGNJqw
Есть гипотеза, что так будет легче воспринимать материал. Сейчас видео смотрят менее 10 процентов подписчиков. Посмотрим, возрастёт ли число просмотров у коротких видео.
На этой неделе — условные операторы. График публикаций:
пн — основы;
вт — булевые значения и операторы сравнения;
ср — приведение типов к логическому;
чт — логические операции && и ||;
пт — тринарный оператор;
сб — условное присвоение;
вс — разбор домашнего задания.
Код примера при этом остаётся единым, так что его можно легко прочитать от начала до конца: https://codepen.io/detepr/pres/BGNJqw
Есть гипотеза, что так будет легче воспринимать материал. Сейчас видео смотрят менее 10 процентов подписчиков. Посмотрим, возрастёт ли число просмотров у коротких видео.
На этой неделе — условные операторы. График публикаций:
пн — основы;
вт — булевые значения и операторы сравнения;
ср — приведение типов к логическому;
чт — логические операции && и ||;
пт — тринарный оператор;
сб — условное присвоение;
вс — разбор домашнего задания.
Сегодня — первое видео про основы условных операторов: https://www.youtube.com/watch?v=pcz3oj6BSMM
YouTube
Условные операторы: Основы [JS Basics]
Для чего нужны условные операторы и как они работают, базовый пример.
Код примера: https://codepen.io/detepr/pres/BGNJqw
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений:…
Код примера: https://codepen.io/detepr/pres/BGNJqw
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений:…
Если что, то видео продолжают публиковаться на Ютюбе по расписанию. В канал не пишу о выходе каждого, чтобы зря не беспокоить тех, для кого видео слишком простые. :)
Но про сегодняшний выпуск расскажу, так как он — про тернарный оператор (который я всю жизнь называл «тринарным», чёртова латынь). Выглядит он так:
Если условие в скобках верно, то результатом присвоения будет значение1, иначе — значение2.
Раньше знать или не знать о тернарном операторе можно было по желанию. Но сейчас без него никуда — он часто используется в условной шаблонизации, в том же Реакте, например.
https://www.youtube.com/watch?v=NUTzTyd97ks
Но про сегодняшний выпуск расскажу, так как он — про тернарный оператор (который я всю жизнь называл «тринарным», чёртова латынь). Выглядит он так:
let a = (условие) ? значение1 : значение2;
Если условие в скобках верно, то результатом присвоения будет значение1, иначе — значение2.
Раньше знать или не знать о тернарном операторе можно было по желанию. Но сейчас без него никуда — он часто используется в условной шаблонизации, в том же Реакте, например.
https://www.youtube.com/watch?v=NUTzTyd97ks
YouTube
Условные операторы: Тернарный оператор [JS Basics]
Как работает операция a = (условие)?d:e
Код примера: https://codepen.io/detepr/pen/BGNJqw
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений: https://t.me/detepr_black
Код примера: https://codepen.io/detepr/pen/BGNJqw
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений: https://t.me/detepr_black
Оптимальным темпом выступлений считается 120 слов в минуту. У меня ни разу не получилось его выдержать, я всегда тараторю. Поэтому в этот раз решил попробовать написать текст целиком, благо, что тайминг всего 5 минут. Т. е. нужно уложиться в 600 слов.
Но вот беда, все программы считают слова вместе с предлогами и союзами. Текст длиной 600 слов получается размерено прочитать за 4 минуты. Нужен был способ посчитать слова без предлогов.
За 6 минут написал скрипт для этого (потом ещё 20 минут оформлял): https://codepen.io/detepr/pen/QJpyMB/. Вдруг он вам пригодится.
А ещё его интересно разобрать, так как почти всё то, что в нём используется — мы уже прошли в видео-курсе. Попробуйте разобраться сами, а я потом как-нибудь видео-разбор запишу.
Но вот беда, все программы считают слова вместе с предлогами и союзами. Текст длиной 600 слов получается размерено прочитать за 4 минуты. Нужен был способ посчитать слова без предлогов.
За 6 минут написал скрипт для этого (потом ещё 20 минут оформлял): https://codepen.io/detepr/pen/QJpyMB/. Вдруг он вам пригодится.
А ещё его интересно разобрать, так как почти всё то, что в нём используется — мы уже прошли в видео-курсе. Попробуйте разобраться сами, а я потом как-нибудь видео-разбор запишу.
В этом видео рассказываю почему истина и барсук — это барсук, а истина или барсук — истина: https://youtu.be/1hIYrfXyFmg
YouTube
Условия: Условное присваивание [JS Basics]
Почему true && барсук — это барсук, а true || барсук — true
Код примера: https://codepen.io/detepr/pen/BGNJqw
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений: https://t…
Код примера: https://codepen.io/detepr/pen/BGNJqw
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений: https://t…
Также выложил видео про разбор домашки. Ссылку на него давать не буду, так как тот, кто делал домашку — найдёт. :)
HTML-разметка — это просто текст, который делит страницу на смысловые (и не очень) блоки. Когда браузер получает HTML-документ, он на его основе создаёт древовидную структуру блоков, вложенных друг в друга. Каждый объект при этом называется узлом.
Потом к узлам применяются CSS-стили и получается та страница, которую мы видим в браузере.
К любому из узлов можно обратиться через JS как к объекту, чтобы узнать и изменить их свойства или содержимое, создать новые узлы или удалить старые. Структура этих объектов и называется DOM — Document Object Model. Она нужна для того, чтобы вы могли динамически менять содержимое документа после его загрузки в браузер.
Подробнее в видео: https://youtu.be/TKxR2tNxTcA
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
Потом к узлам применяются CSS-стили и получается та страница, которую мы видим в браузере.
К любому из узлов можно обратиться через JS как к объекту, чтобы узнать и изменить их свойства или содержимое, создать новые узлы или удалить старые. Структура этих объектов и называется DOM — Document Object Model. Она нужна для того, чтобы вы могли динамически менять содержимое документа после его загрузки в браузер.
Подробнее в видео: https://youtu.be/TKxR2tNxTcA
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
YouTube
DOM: Основы [JS Basics]
HTML-разметка — это просто текст, который делит страницу на смысловые (и не очень) блоки. Когда браузер получает HTML-документ, он на его основе создаёт древовидную структуру блоков, вложенных друг в друга. Каждый объект при этом называется узлом.
Код примера:…
Код примера:…
Чтобы обратиться к какому-либо узлу, его сначала надо найти. Для этого есть разные методы, но в современном прототипировании чаще всего применяются два метода:
Оба метода получают на вход CSS-селектор элемента. Например:
Отличие их в том, что querySelector вернёт один узел, который попался первым, а querySelectorAll вернёт список всех узлов на странице, соответствующих селектору.
Список узлов очень похож на массив, но не является массивом. Например, у него, как и у массивов, есть метод forEach, при помощи которого можно перебрать один элемент за другим. Но у него нет метода map, который позволяет преобразовать один массив в другой, применив к каждому элементу функцию-колбэк.
Если же вам всё-таки нужен метод map, то вы можете преобразовать список узлов в массив при помощи конструкции [...nodeList]:
Подробнее в видео: https://youtu.be/KIBv7QMToP4
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
let el = document.querySelector(selector)
и
let elems = document.querySelectorAll(selector)
Оба метода получают на вход CSS-селектор элемента. Например:
let el = document.querySelector(".someClass b");
Отличие их в том, что querySelector вернёт один узел, который попался первым, а querySelectorAll вернёт список всех узлов на странице, соответствующих селектору.
Список узлов очень похож на массив, но не является массивом. Например, у него, как и у массивов, есть метод forEach, при помощи которого можно перебрать один элемент за другим. Но у него нет метода map, который позволяет преобразовать один массив в другой, применив к каждому элементу функцию-колбэк.
Если же вам всё-таки нужен метод map, то вы можете преобразовать список узлов в массив при помощи конструкции [...nodeList]:
let arr = document.querySelecroAll("a");
[...arr].map(el => el.innerText);
Подробнее в видео: https://youtu.be/KIBv7QMToP4
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
YouTube
DOM: Поиск узлов на странице [JS Basics]
Чтобы обратиться к какому-либо узлу, его сначала надо найти. Для этого есть разные методы, но в современном прототипировании чаще всего применяются два метода:
```
let el = document.querySelector(selector)
и
let elems = document.querySelectorAll(selector)…
```
let el = document.querySelector(selector)
и
let elems = document.querySelectorAll(selector)…
После того, как вы нашли элемент, вы можете узнать его содержимое и свойства, а таке поменять их.
Назначенные узлу стили можно узнать через свойство sytle:
Но в нём содержатся только те CSS-свойства, которые назначены непосредственно узлу. Чтобы узнать все свойства, которые получил узел из CSS-стилей, потребуется более сложная конструкция:
Если захотите узнать более сложные свойства, то не забудьте преобразовать их названия в camelCase. Например: background-color → backgroundColor;
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
let el = document.querySelector(".someClass");
el.innerText // текстовое содержимое
el.innerHTML // HTML-разметка содержимого
el.outerHTML // полная HTML-разметка
el.offsetWidth // ширина, аналогично Height
el.offsetLeft // координата левого угла
// и так далее
Назначенные узлу стили можно узнать через свойство sytle:
el.style.color // цвет текста
Но в нём содержатся только те CSS-свойства, которые назначены непосредственно узлу. Чтобы узнать все свойства, которые получил узел из CSS-стилей, потребуется более сложная конструкция:
getComputedStyle(el).color // цвет текста
Если захотите узнать более сложные свойства, то не забудьте преобразовать их названия в camelCase. Например: background-color → backgroundColor;
Подробнее в видео: https://youtu.be/kM8YAhsaHfEИ в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
YouTube
DOM: Чтение свойств узлов и их содержимого [JS Basics]
Про свойства innerText, innerHTML, offsetWidth и т. п.
Код примера: https://codepen.io/detepr/pres/mQqKZO
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений: https://t.me/detepr_black
Код примера: https://codepen.io/detepr/pres/mQqKZO
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений: https://t.me/detepr_black
Свойства и содержимое можно не только читать, но и записывать:
let el = document.querySelector(".someClass")
el.innerText = "<b>О!</b>" // вставится как текст
el.innerHTML = "<b>О!</b>" // вставится как тег
el.style.fontSize = "12px" // изменится стиль
Подробнее в видео: https://youtu.be/tX1dmw8m66A
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
let el = document.querySelector(".someClass")
el.innerText = "<b>О!</b>" // вставится как текст
el.innerHTML = "<b>О!</b>" // вставится как тег
el.style.fontSize = "12px" // изменится стиль
Подробнее в видео: https://youtu.be/tX1dmw8m66A
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
YouTube
DOM: Редактирование узлов [JS Basics]
Как редактировать содержимое DOM-узлов и их свойства, как создавать новые
Код примера: https://codepen.io/detepr/pres/mQqKZO
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений:…
Код примера: https://codepen.io/detepr/pres/mQqKZO
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа для обсуждений:…
Иногда нужно обойти дерево узлов. Например, чтобы найти родительский элемент и заменить его содержимое, или найти соседний элемент и переключить на него фокус.
Для этого есть набор методов:
let el = document.querySelector(".someClass")
el.childNodes // дочерние элементы
el.nextSibling // сосед справа
el.parentNode // родительский элемент
Подробнее в видео: https://youtu.be/MoEWUWIDFDs
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
✨Домашнее задание ✨
Взять пример из урока: https://codepen.io/detepr/pen/rQYYbx
1. Посчитать сумму цен всех подарков и вывести её в консоль
2. Отсортировать подарки по цене
Для этого есть набор методов:
let el = document.querySelector(".someClass")
el.childNodes // дочерние элементы
el.nextSibling // сосед справа
el.parentNode // родительский элемент
Подробнее в видео: https://youtu.be/MoEWUWIDFDs
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO
✨Домашнее задание ✨
Взять пример из урока: https://codepen.io/detepr/pen/rQYYbx
1. Посчитать сумму цен всех подарков и вывести её в консоль
2. Отсортировать подарки по цене
YouTube
DOM: Обход дерева узлов [JS Basics]
Как обойти дерево узлов. Например, чтобы найти родительский элемент и заменить его содержимое, или найти соседний элемент и переключить на него фокус
Код примера: https://codepen.io/detepr/pres/mQqKZO
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/…
Код примера: https://codepen.io/detepr/pres/mQqKZO
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/…
За последний месяц я записал 20 видео про основы JS. За это время их посмотрели 1474 раза, общее время просмотра составило 4169 минут. Среднее время просмотра — 2,5 минуты.
Есть тенденция: чем дальше, тем меньше просмотров у видео набирается за неделю. Это недвусмысленно намекает на то, что формат нужно дорабатывать или менять. Поэтому два небольших опроса:
Есть тенденция: чем дальше, тем меньше просмотров у видео набирается за неделю. Это недвусмысленно намекает на то, что формат нужно дорабатывать или менять. Поэтому два небольших опроса:
В этом видео рассказал о том, как сверстать секси-кнопку (Серёга очень просил): https://youtu.be/_gDY3TzG_hs
YouTube
Как сверстать секси-кнопку
Как при помощи теней оформить кнопку и сделать её реагирующей на наведение и нажатие
Код примера: https://codepen.io/detepr/pres/VVoNpg
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа…
Код примера: https://codepen.io/detepr/pres/VVoNpg
Группа в Фейсбуке: https://www.facebook.com/groups/detepr/
Канал в Телеграме: https://t.me/detepr
Неформальная группа…
Один мой коллега попросил написать про его канал: «Простой маркетолог» (https://t.me/marketingdot). А я и не против.
Во-первых, я сам читаю его канал и он мне кажется интересным. Во-вторых, автор канала — человек, во многом благодаря которому состоялся успешный запуск Андромеды, ему есть о чём рассказать.
А рассказывает автор об основах маркетинга и интересных кейсах. Посты читаются легко, наводят на интересные мысли и составляют неплохую конкуренцию другому вечернему чтению.
Дополнительно интересно следить за каналом потому, что его автор — маркетолог. Любопытно наблюдать за тем, как он растит свой собственный канал и пробует разные подходы к его продвижению. В общем, рекомендую.
Во-первых, я сам читаю его канал и он мне кажется интересным. Во-вторых, автор канала — человек, во многом благодаря которому состоялся успешный запуск Андромеды, ему есть о чём рассказать.
А рассказывает автор об основах маркетинга и интересных кейсах. Посты читаются легко, наводят на интересные мысли и составляют неплохую конкуренцию другому вечернему чтению.
Дополнительно интересно следить за каналом потому, что его автор — маркетолог. Любопытно наблюдать за тем, как он растит свой собственный канал и пробует разные подходы к его продвижению. В общем, рекомендую.
This media is not supported in your browser
VIEW IN TELEGRAM
В Developer Tools есть вкладка Animation при помощи которой можно препарировать анимации и разбирать как они устроены. Показываю на примере анимации кнопки аплодисментов на Медиуме:
https://youtu.be/lJ8ekUMjrnA
https://youtu.be/lJ8ekUMjrnA
Только что родился новый телеграмм-канал, которым я просто не могу не поделиться: https://t.me/zastavil
Его ведёт дизайнер Поиска Андрей Репин. Иногда у меня сладывается ощущение, что он знает обо всём, что происходит в дизайн-среде. Поэтому мы заставили его делиться ценными находками со всеми.
Андрей очень стеснительный, поддержите его подписками. Люто рекомендую.
Его ведёт дизайнер Поиска Андрей Репин. Иногда у меня сладывается ощущение, что он знает обо всём, что происходит в дизайн-среде. Поэтому мы заставили его делиться ценными находками со всеми.
Андрей очень стеснительный, поддержите его подписками. Люто рекомендую.
This media is not supported in your browser
VIEW IN TELEGRAM
Когда переходишь на Фигму после Скетча, очень не хватает способа быстро расставить много картинок (как это делает, например, плагин Craft).
Оказывается, способ есть, но большинство новичков Фигмы о нём не знает.
Нужно выделить примитивы и нажать Cmd + Shift + K (Ctrl + Shift+ K на Windows). После чего нужно выбрать несколько картинок и расставить их по нужным шейпам.
Оказывается, способ есть, но большинство новичков Фигмы о нём не знает.
Нужно выделить примитивы и нажать Cmd + Shift + K (Ctrl + Shift+ K на Windows). После чего нужно выбрать несколько картинок и расставить их по нужным шейпам.