Логово верстальщика
8.09K subscribers
996 photos
48 videos
4 files
1.68K links
Канал для верстальщиков с инфой о HTML и CSS, а так же JavaScript на уровне верстальщиков.

Канал на бирже - https://telega.in/c/webdevlair

По вопросам рекламы или разработки: @g_abashkin
Download Telegram
👩‍💻 Как создать компонент тегов с автозаполнением на React

В этом руководстве мы создадим компонент ввода тегов с автозаполнением, используя React JS без сторонних библиотек.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Обрабатываем ошибки в React: полное руководство

Независимо от уровня внимательности и количества написанных тестов всегда что-то может пойти не так. Рассмотрим обработку ошибок в React: что делать при их появлении, как их выявить и устранить.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Управление памятью JavaScript: как избежать утечек памяти и повысить производительность

Если вы разрабатывали приложения, то могли сталкиваться с такой проблемой, как утечка памяти. В сегодняшней статье мы расскажем об управлении памятью в JS и о том, как не допустить ее утечек.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Что такое замыкания (closures) в JavaScript?

Замыкания позволяют функции запоминать переменные из своей внешней области видимости даже после завершения выполнения внешней функции.

function makeCounter() {
let count = 0;
return function() {
return ++count;
};
}

const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2


🗣️ Замыкания полезны для создания функций с внутренним состоянием, например, счётчиков или настройки приватных данных.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Проблемы экспорта по умолчанию в модулях JavaScript

Модули JavaScript — способ организации кода в многократно используемые компоненты, используемые совместно в разных файлах и проектах. Модули можно импортировать и экспортировать с помощью двух различных методов: экспорта по умолчанию и именованного экспорта. Рассмотрим экспорт по умолчанию и причины, по которым следует избегать его использования в модулях JavaScript.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
📐 Стандарты — это не бюрократия, а освобождение

Кажется, что code style, правила коммитов и шаблоны PR — скучная формальность? На деле это способ сэкономить мозг.

👉 Совет: стандартизируй мелочи: от названий веток до структуры директорий. Это избавляет от принятия сотен ненужных решений и оставляет ресурсы на то, что важно — на саму логику и архитектуру.
Please open Telegram to view this post
VIEW IN TELEGRAM
3
👩‍💻 BCMath: Новая функция bcdivmod

bcdivmod может быть использован в случаях, когда необходимо получить частное и остаток от деления, и избавляет от необходимости вызывать функции bcdiv и bcmod по отдельности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🦕 7 HTML-привычек, которые выдают в тебе динозавра

Пора устроить генеральную уборку в твоем HTML. Мы нашли 7 устаревших приемов, которые кричат: «Я застрял в прошлом!» Разберем каждый и найдем современную замену. Готов к обновлению?

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
➡️ Главные ошибки новичков-фронтендеров в HTML

Рассказываем про частые ошибки в HTML и о том, как их избежать. Добавляйте в закладки!

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 ISBN-10

Идентификаторы ISBN-10 состоят из десяти цифр. Первые девять символов - это цифры 0-9. Последняя цифра может быть от 0 до 9 или X, чтобы указать значение 10.

Номер ISBN-10 действителен, если остаток при делении суммы произведений цифр и их позиций на 11 равен 0.

Алгоритм:

ISBN: 1 1 1 2 2 2 3 3 3 9
Позиция: 1 2 3 4 5 6 7 8 9 10
Это действительный ISBN, потому что:
(1*1 + 1*2 + 1*3 + 2*4 + 2*5 + 2*6 + 3*7 + 3*8 + 3*9 + 9*10) % 11 = 0

Пример кода:

validISBN10("1112223339") => true
validISBN10("048665088X") => true
validISBN10("1234512345") => false
validISBN10("XXXXXXXXXX") => false
validISBN10("048665088XZ") => false


Решение задачи🔽

function validISBN10(isbn) {
if (isbn.length !== 10) {
return false;
}

let sum = 0;
for (let i = 0; i < 10; i++) {
let char = isbn[i];
let value;

if (i === 9 && char === 'X') {
value = 10;
} else if (char >= '0' && char <= '9') {
value = parseInt(char, 10);
} else {
return false;
}

sum += value * (i + 1);
}

return sum % 11 === 0;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Полное руководство по “this” в JavaScript

Благодаря поддержке Unicode 16 расширение MBString может работать со всеми новейшими символами Emoji, а также имеет самую актуальную информацию о смене регистра и ширине символов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как сделать таймер на CSS

Давайте рассмотрим использование CSS в качестве альтернативы JavaScript для создания простых таймеров. Используем современные свойства CSS, такие, как @property, @keyframes, и псевдоэлементы со значениями counter().

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 5 непростых вопросов по JavaScript

Разберем пять непростых вопросов: о сравнениях, пустых массивах, странном try catch, стрелочной функции и коварном JSON.stringify. Сможете ответить на них правильно?

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
11 инструментов для ускорения создания пользовательского интерфейса

Предлагаем подборку бесплатных инструментов для стилистического оформления пользовательских интерфейсов. Они помогут фронтенд-разработчикам и дизайнерам существенно сэкономить время и повысить производительность.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Cube & Dots Loader

Анимированная загрузка в виде точек и куба. Сделана на чистом CSS.

Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ В чем разница между == и === в JavaScript?

В JavaScript операторы == и === используются для сравнения, но ведут себя по-разному. == выполняет нестрогое сравнение, при котором JavaScript может преобразовать типы данных для сопоставления значений. В отличие от него, === выполняет строгое сравнение, проверяя как значение, так и тип данных, без приведения типов.

➡️ Пример:
console.log(5 == '5');   // true, так как '5' преобразуется к числу
console.log(5 === '5'); // false, так как разные типы данных

console.log(null == undefined); // true, при нестрогом сравнении они считаются равными
console.log(null === undefined); // false, строгий оператор учитывает типы данных


🗣️ Использование === рекомендуется для избегания ошибок, связанных с преобразованием типов. Это помогает сделать код более предсказуемым и читаемым.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
👩‍💻 CSS :has() — Псевдокласс, который давно ждали

Преобразуйте свой CSS с помощью псевдокласса :has(), позволяющего стилизовать элементы на основе их дочерних элементов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Простой калькулятор с динамическим вводом

Создайте калькулятор, который позволяет выполнять основные арифметические операции (сложение, вычитание, умножение, деление). Пользователь вводит два числа и выбирает операцию из выпадающего списка. Результат отображается автоматически.

Требования:

Два текстовых поля для ввода чисел.
Выпадающий список для выбора операции.
Динамическое отображение результата при изменении любого из входных значений.

Решение задачи🔽

<div>
<input type="number" id="num1" placeholder="Введите первое число">
<select id="operation">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">×</option>
<option value="divide">÷</option>
</select>
<input type="number" id="num2" placeholder="Введите второе число">
</div>
<div>
<h3>Результат: <span id="result">0</span></h3>
</div>

const num1 = document.getElementById('num1');
const num2 = document.getElementById('num2');
const operation = document.getElementById('operation');
const result = document.getElementById('result');

function calculate() {
const value1 = parseFloat(num1.value) || 0;
const value2 = parseFloat(num2.value) || 0;

let res = 0;
switch (operation.value) {
case 'add':
res = value1 + value2;
break;
case 'subtract':
res = value1 - value2;
break;
case 'multiply':
res = value1 * value2;
break;
case 'divide':
res = value2 !== 0 ? value1 / value2 : 'Ошибка (деление на 0)';
break;
}

result.textContent = res;
}

[num1, num2, operation].forEach(element => {
element.addEventListener('input', calculate);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
⚙️ Кнопки с несколькими состояниями

Как правило, кнопки либо нажаты, либо нет. Но при условии, что обеспечена доступность, можно сделать группу радиокнопок внешне похожей на кнопку с несколькими состояниями с помощью CSS-хитростей.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
⚙️ 9 open source библиотек для вашего следующего проекта

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

В этой статье я расскажу о 9 библиотеках с открытым исходным кодом, которые улучшат ваш проект.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM