Недавно я опубликовал последнюю часть по разработке сайта-визитки на ReactJS (все части в плейлисте на моём ютуб каналe). Это серия роликов, где я поэтапно показываю как разрабатываю одностраничный сайт-портфолио используя NodeJS и библиотеку React ⚛️
Если вы еще не смотрели ни одной части — предлагаю посмотреть на то, что у нас получилось по итогу в ролике обзор финального результата 👈 жми, чтобы посмотреть 🔴
В рамках частей мы также рассмотрели интересные моменты html верстки 🟧, стилизации и создании некоторых CSS анимаций 🟦
Буду благодарен, если поддержите видео лайком и напишите свое мнение в комментарии под видео 💬
Если вы еще не смотрели ни одной части — предлагаю посмотреть на то, что у нас получилось по итогу в ролике обзор финального результата 👈 жми, чтобы посмотреть 🔴
В рамках частей мы также рассмотрели интересные моменты html верстки 🟧, стилизации и создании некоторых CSS анимаций 🟦
Буду благодарен, если поддержите видео лайком и напишите свое мнение в комментарии под видео 💬
❤🔥4👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Интересная идея кнопки, по нажатию на которую появляется текст на чистом html и CSS, без добавления функции на JavaScript 🟨
Всё что необходимо это прописать саму кнопку, текст в файле index.html и три стиля в файле index.css 📁
С кнопкой связан скрытый checkbox. При нажатии на кнопку ставится галочка в checkbox. Подробнее в видео 👁🗨
Код с видео:
Всё что необходимо это прописать саму кнопку, текст в файле index.html и три стиля в файле index.css 📁
С кнопкой связан скрытый checkbox. При нажатии на кнопку ставится галочка в checkbox. Подробнее в видео 👁🗨
Код с видео:
// ✦ index.html
<label for="btn" class="btn">Кнопка</label>
<input type="checkbox" id="btn"></input>
<div class="text">привет</div>
// ✦ index.css
.text, input[type="checkbox"] {
opacity: 0;
margin-top: -10px;
transition: opacity 400ms, margin-top 500ms;
display: block;
}
input[type="checkbox"]:checked ~ .text {
opacity: 1;
margin-top: 10px;
}
.btn {
padding: 6px 18px;
background-color: #485dff;
color: #eceeff;
cursor: pointer;
border-radius: 8px;
}
👍4🔥2
С помощью метода indexOf можно узнать индекс элемента в массиве 🟨
Для этого прописываем название массива, далее метод и в скобках указываем элемент из массива, индекс которого хотим узнать 🔮
Но есть нюанс: все элементы массива должны быть разными. Если в массиве больше двух одинаковых элементов, то хоть и есть еще один метод lastIndexOf, который находит индекс последнего такого же элемента, не обойтись без итераций. Если в массиве, допустим, 3 одинаковых элемента (подробнее на скрине) 👁🗨
Код со скрина:
Для этого прописываем название массива, далее метод и в скобках указываем элемент из массива, индекс которого хотим узнать 🔮
Но есть нюанс: все элементы массива должны быть разными. Если в массиве больше двух одинаковых элементов, то хоть и есть еще один метод lastIndexOf, который находит индекс последнего такого же элемента, не обойтись без итераций. Если в массиве, допустим, 3 одинаковых элемента (подробнее на скрине) 👁🗨
Код со скрина:
let arr = ["White", "Fring", "Goodman", "Pinkman"];
console.log("Индекс личности", "Fring -", arr.indexOf("Fring"));
let arr2 = ["BTC", "BTC", "BTC"];
console.log("\nИндекс первого", "BTC -", arr2.indexOf("BTC"));
console.log("Индекс последнего", "BTC -", arr2.lastIndexOf("BTC"));
🔥5
Рассмотрим тип объекта RegExp в JavaScript ⚜️
RegExp – это тип объекта, который используется для работы с регулярными выражениями, позволяющими выполнять расширенные операции со строками, такие как: поиск, замена и извлечение определенных паттернов 🔖
Объект RegExp можно создать с помощью литерала регулярного выражения или конструктора 🏗
На скрине продемонстрированы 2 метода: test и search. Но объект RegExp предоставляет и другие различные методы выполнения операций со строками, такие как: exec, match, replace и другие 👁🗨
Код со скрина:
RegExp – это тип объекта, который используется для работы с регулярными выражениями, позволяющими выполнять расширенные операции со строками, такие как: поиск, замена и извлечение определенных паттернов 🔖
Объект RegExp можно создать с помощью литерала регулярного выражения или конструктора 🏗
На скрине продемонстрированы 2 метода: test и search. Но объект RegExp предоставляет и другие различные методы выполнения операций со строками, такие как: exec, match, replace и другие 👁🗨
Код со скрина:
const pattern1 = new RegExp('Codorum');
const pattern2 = new RegExp('JavaScript');
const text = 'Codorum - пишу на JavaScript';
// проверка наличия паттерна в тексте "text"
console.log(pattern1.test(text));
// поиск позиции слова "JavaScript" в тексте "text"
const position = text.search(pattern2);
console.log(`Позиция слова "JavaScript": ${position}`);👍3🔥2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Рубрика разборов возможных вопросов из собеседований по JavaScript 🟨
👉 Где на практике часто используют методы setTimeout и setInterval?
⏲️ setTimeout можно использовать для:
➖ задержки выполнения действий
➖ последовательного выполнения действий
➖ задержки ввода в поле поиска
⏳ setInterval можно использовать для:
➖ регулярного обновления интерфейса
➖ повторного запроса на сервер
В видео рассмотрели эти примеры в виде кодов 👁🗨
👉 Где на практике часто используют методы setTimeout и setInterval?
⏲️ setTimeout можно использовать для:
➖ задержки выполнения действий
➖ последовательного выполнения действий
➖ задержки ввода в поле поиска
⏳ setInterval можно использовать для:
➖ регулярного обновления интерфейса
➖ повторного запроса на сервер
В видео рассмотрели эти примеры в виде кодов 👁🗨
🔥5❤1👍1
Делимся лаконичной светлой CSS-стилистикой для блоков, которую можно назвать трендовой, так как подобная стилистика сейчас часто встречается в UI/UX-дизайне 🎨
Стилизовав контейнеры таким подходом можно добавить пространственности за счёт теней, ненавязчиво намекнуть на наличие блока, внутри которого находится контент, при этом не перегрузив интерфейс деталями 🟦
Как можно заметить, основная реализация такой стилистики заключается в комбинации светлой тени, уходящей в левый верхний угол и несильной тёмной тени, уходящей в правый нижний угол 👁🗨
Код со скрина:
Стилизовав контейнеры таким подходом можно добавить пространственности за счёт теней, ненавязчиво намекнуть на наличие блока, внутри которого находится контент, при этом не перегрузив интерфейс деталями 🟦
Как можно заметить, основная реализация такой стилистики заключается в комбинации светлой тени, уходящей в левый верхний угол и несильной тёмной тени, уходящей в правый нижний угол 👁🗨
Код со скрина:
.laconic-style {
background: #fff;
border-radius: 16px;
filter:
drop-shadow(-5px -5px 5px #ffffff)
drop-shadow(-10px -10px 15px #d387f850)
drop-shadow( 15px 15px 15px #00000010);
width: 100px;
height: 70px;
margin: 20px;
outline: 2px solid #faf2ff20;
outline-offset: -1px;
}❤6👍2🔥2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
useState – это React хук, который используется для контролирования какого-либо локального состояния в компоненте и предоставления обновления этого состояния ⚛️
На гифке пример использования хука useState: есть компонент с надписью и кнопкой ⏏️
➖ "
➖ setCount – функция, обновляющая состояние
➖ значение возле хука "
Также кнопке присвоена функция, увеличивающая значение переменной count на единицу – "
Код из гифки:
На гифке пример использования хука useState: есть компонент с надписью и кнопкой ⏏️
➖ "
const [count, setCount] = useState(0)" – это состояние, сохраняющее значение переменной count➖ setCount – функция, обновляющая состояние
➖ значение возле хука "
(0)" – это значение переменной count по умолчаниюТакже кнопке присвоена функция, увеличивающая значение переменной count на единицу – "
onClick={() => setCount(count + 1)}"Код из гифки:
import React from 'react';
import { useState } from 'react';
const MyComponent = () => {
const [count, setCount] = useState(0);
return (
<div>
<p>Счетчик: {count}</p>
<button onClick={() => setCount(count + 1)}>
добавить
</button>
</div>
);
};
export default MyComponent;
🔥7👍2❤1👏1
Приняли решение поменять дизайн фона вертикальных видео, которые публикуем в соц. сетях 🔮
Хотим узнать ваше мнение, помогите определиться какое дизайнерское решение выглядит более лаконично и презентабельно стилистически 🪁
🔹 Решение №1: текущий дизайн, который определенно хотим поменять
🔹 Решение №2: пространственный фон с мягким объёмным блоком кода
🔹 Решение №3: стильное ребристое стекло, легкий непринуждённый фон
Проголосуйте в следующем посте 👇
Хотим узнать ваше мнение, помогите определиться какое дизайнерское решение выглядит более лаконично и презентабельно стилистически 🪁
🔹 Решение №1: текущий дизайн, который определенно хотим поменять
🔹 Решение №2: пространственный фон с мягким объёмным блоком кода
🔹 Решение №3: стильное ребристое стекло, легкий непринуждённый фон
Проголосуйте в следующем посте 👇
👍2❤🔥1🔥1🤩1
Какой фон понравился больше всего?
Anonymous Poll
28%
Решение №1 📱
32%
Решение №2 🔭
40%
Решение №3 🪼
👏6❤1👍1🐳1
Что такое конструктор в JavaScript? 🏗
Конструктор – это специальная функция, которая используется для создания и инициализации разных объектов. Основная идея конструкторов заключается в возможности создавать много объектов с одинаковыми свойствами и методами по определенному шаблону 🃏
На скрине пример создания объекта Homer с помощью конструктора Person 🍩
👉 Теперь у объекта есть:
➖ два свойства/параметра: age и hometown
➖ метод speak
Но на практике удобнее пользоваться классами, использование которых в разы проще 👁🗨
Код со скрина:
Конструктор – это специальная функция, которая используется для создания и инициализации разных объектов. Основная идея конструкторов заключается в возможности создавать много объектов с одинаковыми свойствами и методами по определенному шаблону 🃏
На скрине пример создания объекта Homer с помощью конструктора Person 🍩
👉 Теперь у объекта есть:
➖ два свойства/параметра: age и hometown
➖ метод speak
Но на практике удобнее пользоваться классами, использование которых в разы проще 👁🗨
Код со скрина:
// ✦ объявление конструктора
function Person(age, hometown) {
this.age = age;
this.hometown = hometown;
this.speak = function() {
console.log(`Hi, I'm ${this.age} years old, my hometown is ${this.hometown}`)
};
}
// ✦ создание объекта с помощью конструктора
let Homer = new Person(40, 'Springfield')
Homer.speak();
👍5👏2❤1🔥1🤝1
Как сделать градиентный текст в CSS? 🍡
👉 Благодаря комбинации трёх свойств:
➖ background-image со значением в виде градиента
➖ background-clip со значением text (чтобы градиент обрёл форму текста, к которому применяется класс, вместо формы контейнера элемента текста)
➖ color со значением transparent (градиент применяется к фону контейнера элемента, то есть контейнера текста. Благодаря тому что мы сделаем текст прозрачным за ним будет виден фон контейнера - градиент в форме текста)
Код со скрина:
👉 Благодаря комбинации трёх свойств:
➖ background-image со значением в виде градиента
➖ background-clip со значением text (чтобы градиент обрёл форму текста, к которому применяется класс, вместо формы контейнера элемента текста)
➖ color со значением transparent (градиент применяется к фону контейнера элемента, то есть контейнера текста. Благодаря тому что мы сделаем текст прозрачным за ним будет виден фон контейнера - градиент в форме текста)
Код со скрина:
.gradient-text {
background-image: linear-gradient(90deg, #d815ff, cyan, #414aff);
background-clip: text;
color: transparent;
}👍5🔥3❤2
Решили разнообразить контент вопросами в виде тестов разной сложности. Сегодня вопрос средней сложности ✴️
🔘 Для чего используется метод Array.prototype.map() в JavaScript?
🔘 Для чего используется метод Array.prototype.map() в JavaScript?
Anonymous Quiz
9%
Меняет исходный массив, добавляя новые элементы
70%
Перебирает массив и возвращает новый с результатами вызова передаваемой функции для каждого элемента
14%
Фильтрует элементы массива на основе переданного условия
8%
Сортирует массив в порядке возрастания или убывания
👍6🔥2👏2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
JavaScript – универсальный язык, используемый как на клиентской (frontend), так и на серверной (backend) части. Однако подход к использованию языка значительно отличается 🟨
Фронтенд — это о взаимодействии с пользователем и работе с браузером 🖥
Бэкенд — об управлении логикой, обработке данных и работе с серверными ресурсами. Но синтаксис языка остается схожим 🗄
JavaScript – мост между двумя мирами, и именно это делает его таким популярным ⭐️
Фронтенд — это о взаимодействии с пользователем и работе с браузером 🖥
Бэкенд — об управлении логикой, обработке данных и работе с серверными ресурсами. Но синтаксис языка остается схожим 🗄
JavaScript – мост между двумя мирами, и именно это делает его таким популярным ⭐️
🔥3👍2❤1
С помощью метода clearTimeout можно отменить выполнение отложенной функции, которая должна была выполниться через некоторое время 🧹
На скрине условный пример загрузки страницы сайта ⭕️
Если по истечению 15 секунд с момента открытия страницы медиафайлы не загрузятся (предположим у пользователя слабый интернет) - пользователь увидит сплывающее окно с сообщением про слабый интернет 📡
Если медиафайлы загрузились в течение 15 секунд - после момента их загрузки отложенная функция сплывающего окна удалится методом clearTimeout 👁🗨
На скрине условный пример загрузки страницы сайта ⭕️
Если по истечению 15 секунд с момента открытия страницы медиафайлы не загрузятся (предположим у пользователя слабый интернет) - пользователь увидит сплывающее окно с сообщением про слабый интернет 📡
Если медиафайлы загрузились в течение 15 секунд - после момента их загрузки отложенная функция сплывающего окна удалится методом clearTimeout 👁🗨
🔥6👏2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Создаём прокручиваемый контейнер как в каруселях Инстаграм 📷
Для его реализации понадобятся 2 ключевых свойства: scroll-snap-type и scroll-snap-align 🟦
Применив эти свойства при прокрутке контейнера пользователи будут попадать на ширину или высоту кратную ширине или высоте контейнера ↕️
К примеру если высота контейнера 300 пикселей - значит при прокручивании пользователь сможет останавливаться на высоте в 300, 600, 900 пикселей и так далее (в видео разобрали детальнее) 👁🗨
Код из видео:
Для его реализации понадобятся 2 ключевых свойства: scroll-snap-type и scroll-snap-align 🟦
Применив эти свойства при прокрутке контейнера пользователи будут попадать на ширину или высоту кратную ширине или высоте контейнера ↕️
К примеру если высота контейнера 300 пикселей - значит при прокручивании пользователь сможет останавливаться на высоте в 300, 600, 900 пикселей и так далее (в видео разобрали детальнее) 👁🗨
Код из видео:
// index.html
<div className="container">
<div className="block" style={{ background: "black" }}>
1 блок
</div>
<div className="block" style={{ background: "#9966ff" }}>
2 блок
</div>
</div>
/* index.css */
.container {
width: 200px;
height: 250px;
overflow-y: scroll;
overflow-x: hidden;
scroll-snap-type: y mandatory;
}
.block {
width: 200px;
height: 250px;
scroll-snap-align: center;
color: white;
text-align: center;
align-content: center;
}
👍5❤🔥4🔥2
Продолжаем рубрику тестовых вопросов разной сложности. Сегодня вопрос лёгкой сложности ❇️
🔘 Что возвращает метод Array.prototype.length в JavaScript?
🔘 Что возвращает метод Array.prototype.length в JavaScript?
Anonymous Quiz
60%
Количество элементов в массиве
4%
Сумму всех числовых элементов в массиве
12%
Суммарное количество символов всех элементов массива
24%
Новый массив с элементами в виде значений длины элементов старого массива
👏3👍2🔥2❤1
Скоупинг – понятие, охватывающее несколько аспектов, направленных на правильное управление переменными и функциями кода. Для избежания конфликтов и обеспечения прозрачного и безопасного взаимодействия элементов программы 🧿
Основные аспекты скоупинга: Объявление переменных, Объем видимости, Жизненный цикл, Поднятие, Замыкание 🔹
Рассмотрим аспект – жизненный цикл ⏱️
Все переменные в коде существует определенное время. Жизненный цикл локальных переменных, например, короче чем глобальных переменных. Всё потому, что глобальные переменные существуют в течении всего времени работы программы, а локальные только во время работы функций, например. Жизненный цикл блочных переменных обычно ещё короче 👁🗨
Основные аспекты скоупинга: Объявление переменных, Объем видимости, Жизненный цикл, Поднятие, Замыкание 🔹
Рассмотрим аспект – жизненный цикл ⏱️
Все переменные в коде существует определенное время. Жизненный цикл локальных переменных, например, короче чем глобальных переменных. Всё потому, что глобальные переменные существуют в течении всего времени работы программы, а локальные только во время работы функций, например. Жизненный цикл блочных переменных обычно ещё короче 👁🗨
👍2🔥2❤1👏1
componentDidMount – это метод жизненного цикла в компонентах React, срабатывающий сразу после добавления какого-либо компонента (в который был добавлен метод) на страницу (или в DOM) ⚛️
То есть код внутри метода не срабатывает при полном запуске и работе React проекта, а только после встраивания компонента на страницу, в следствие выполнения какого-то действия пользователем, например 🏌️♂️
В примере на скрине: когда выбирается категория "Одежда", компонент Clothes добавляется на страницу, и вызывается componentDidMount 👁🗨
👉 На практике метод используется для:
➖ загрузки данных с сервера
➖ настройки подписок или таймеров
➖ выполнения действий, требующих доступа к DOM
То есть код внутри метода не срабатывает при полном запуске и работе React проекта, а только после встраивания компонента на страницу, в следствие выполнения какого-то действия пользователем, например 🏌️♂️
В примере на скрине: когда выбирается категория "Одежда", компонент Clothes добавляется на страницу, и вызывается componentDidMount 👁🗨
👉 На практике метод используется для:
➖ загрузки данных с сервера
➖ настройки подписок или таймеров
➖ выполнения действий, требующих доступа к DOM
👍2❤1🔥1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
🍾 С наступающим или наступившим 2025 годом! 🎄
Желаем всем, чтоб 2025 год стал для вас годом, в котором вы побьете свои собственные рекорды в вашей профессиональной деятельности, добьетесь новых высот в ваших увлечениях, начинаниях и любых жизненных аспектах 📈
Новичкам, только приступившим к изучению программирования желаем легкого старта! 🏁
🎊 Спасибо за то что читаете, желаем отлично встретить Новый 2025 год! 🎉
Желаем всем, чтоб 2025 год стал для вас годом, в котором вы побьете свои собственные рекорды в вашей профессиональной деятельности, добьетесь новых высот в ваших увлечениях, начинаниях и любых жизненных аспектах 📈
Новичкам, только приступившим к изучению программирования желаем легкого старта! 🏁
🎊 Спасибо за то что читаете, желаем отлично встретить Новый 2025 год! 🎉
🥰2🎉2🎄2🍾1
This media is not supported in your browser
VIEW IN TELEGRAM
Как поменять цвет выделения текста в CSS? 🖌
Для этого нужно изменить 2 свойства в псевдоэлементе ::selection 💠
По умолчанию цвет выделения синий, а цвет текста при выделении белый 👁🗨
👉 Чтобы поменять цвета:
➖ в свойстве background-color задаем цвет фона выделения
➖ в свойстве color задаем цвет текста при выделении
Код из гифки:
Для этого нужно изменить 2 свойства в псевдоэлементе ::selection 💠
По умолчанию цвет выделения синий, а цвет текста при выделении белый 👁🗨
👉 Чтобы поменять цвета:
➖ в свойстве background-color задаем цвет фона выделения
➖ в свойстве color задаем цвет текста при выделении
Код из гифки:
::selection {
/* цвет выделения */
background-color: #b685ff;
/* цвет текста на фоне
выделения */
color: #f7f4ff;
}👍6🔥2