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

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

По вопросам рекламы или разработки: @g_abashkin
Download Telegram
👩‍💻 5 HTML-атрибутов для улучшения пользовательского опыта и SEO

Разбираем мощные, но часто игнорируемые атрибуты HTML, способные значительно улучшить пользовательский опыт и SEO вашего сайта. От многоязычности до удобства заполнения форм – все, что нужно современному разработчику

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🧨 Работа с куки-файлами хуже сапёрного дела

Статья разбирает особенности работы с HTTP-куки и неожиданные проблемы, которые могут возникнуть при их использовании. Рассматривается пример с сериализацией JSON, казалось бы, безобидный, но вызывающий интересные нюансы в обработке браузерами и серверами.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Реализация кнопки с таймером блокировки

Создайте кнопку, которая становится недоступной (disabled) на 5 секунд после каждого нажатия. Отображайте обратный отсчёт времени на кнопке, чтобы пользователь видел, когда её можно будет нажать снова.

Ожидаемое поведение:

При нажатии на кнопку она становится недоступной.
На кнопке отображается обратный отсчёт времени: 5... 4... 3....
Через 5 секунд кнопка снова становится активной и текст возвращается в исходное состояние.

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

<button id="timer-button">Нажми меня</button>


#timer-button {
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
}

#timer-button:disabled {
background-color:
#ccc;
cursor: not-allowed;
}


const button = document.getElementById('timer-button');

button.addEventListener('click', () => {
let countdown = 5;

// Деактивируем кнопку и запускаем таймер
button.disabled = true;
const interval = setInterval(() => {
button.textContent = `Ждите... ${countdown}`;
countdown--;

if (countdown < 0) {
clearInterval(interval);
button.disabled = false;
button.textContent = 'Нажми меня';
}
}, 1000);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Веб-приложения будущего: что нужно знать о WebAssembly

Статья рассказывает о WebAssembly (Wasm) — мощном инструменте для запуска высокопроизводительных приложений в браузере. Обсуждается, как Wasm позволяет использовать языки вроде Rust и C++, решает задачи сложных вычислений, игр и анализа данных, а также его перспективы в веб-разработке.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Динамическое создание таблицы из массива объектов

Напишите функцию, которая принимает массив объектов и массив ключей. Функция должна возвращать HTML-строку, содержащую таблицу <table>, где каждая строка <tr> соответствует объекту из массива, а каждая ячейка <td> — значению указанных ключей.

Пример использования:

const data = [
{ id: 1, name: "Alice", role: "Frontend Developer", experience: 2 },
{ id: 2, name: "Bob", role: "Backend Developer", experience: 5 },
{ id: 3, name: "Charlie", role: "DevOps Engineer", experience: 3 }
];

const columns = ["name", "role", "experience"];

const renderedTable = renderTable(data, columns);
console.log(renderedTable);
// Ожидаемый результат:
// "<table>
// <tr><td>Alice</td><td>Frontend Developer</td><td>2</td></tr>
// <tr><td>Bob</td><td>Backend Developer</td><td>5</td></tr>
// <tr><td>Charlie</td><td>DevOps Engineer</td><td>3</td></tr>
// </table>"


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

function renderTable(array, keys) {
const headers = `<tr>${
keys.map(key => `<th>${key}</th>`).join("")}</tr>`;
const rows = array
.map(item => `<tr>${
keys.map(key => `<td>${item[key]}</td>`).join("")}</tr>`)
.join("");
return `<table>${headers}${rows}</table>`;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Подборка вакансий для джунов

Junior React Разработчик
🟢HTML, CSS, JavaScript, React, Redux, TypeScript, Docker, Webpack
🟢от 60 000 до 90 000 ₽ | 1–3 года

Frontend-разработчик (удалённо)
🟢HTML5, CSS3, JavaScript, React, Vue.js, Tailwind CSS, Git, Webpack, Sass, Less, Figma
🟢от 50 000 до 80 000 ₽ | 1–3 года

Разработчик (Frontend developer / Vue.js) junior+
🟢Vue.js, JavaScript, HTML/CSS, Git, GraphQL, SPA, TypeScript
🟢от 120 000 ₽ | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 On-Scroll Fire Transition

Красивая анимация горения страницы при скролле. Сделана на CSS и JavaScript.

Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что такое box-shadow в CSS и как оно работает?

box-shadow — это свойство CSS, которое добавляет тень к элементу. Оно позволяет задавать смещение, размытие, размер растушёвки и цвет тени.

➡️ Пример:

<div class="box">Я с тенью</div>

<style>
.box {
width: 200px;
height: 100px;
background: lightblue;
box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5); /* Смещение и размытие тени */
}
</style>


🗣️ В этом примере box-shadow добавляет мягкую тень с чётким смещением и прозрачностью. Это свойство отлично подходит для выделения элементов интерфейса.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
📝 Подборка вакансий для мидлов

Frontend Developer (брокерский бизнес)
HTML, CSS, JavaScript, React, Redux, TypeScript, Webpack, Babel, REST API
Уровень дохода не указан | 3+ года

Frontend-разработчик (React, Redux, TypeScript)
React, Redux, TypeScript, LESS, SCSS, Ant Design, REST API
от 120 000 ₽ | 1–3 года

Middle Frontend Developer Vue (Back-office)
Vue3, JavaScript, TypeScript, Webpack, Pinia, Element Plus, Figma
Уровень дохода не указан | 3+ года
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Обзор наследования в JavaScript

Статья изучает различные шаблоны наследования в JavaScript, основанные на прототипах. Обсуждаются их преимущества и применение в зависимости от задач для оптимального управления объектными отношениями.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Проверка сбалансированных скобок

Напишите функцию, которая принимает строку, содержащую различные типы скобок ((), {}, []), и проверяет, являются ли они сбалансированными. Строка считается сбалансированной, если каждая открывающая скобка имеет соответствующую закрывающую в правильном порядке.

Пример: Для строки "{[()]}" функция должна вернуть true, а для строки "{[(])}"false.

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

function isBalanced(str) {
const stack = [];
const pairs = { ')': '(', '}': '{', ']': '[' };

for (let char of str) {
if (['(', '{', '['].includes(char)) {
stack.push(char);
} else if ([')', '}', ']'].includes(char)) {
if (stack.pop() !== pairs[char]) return false;
}
}
return stack.length === 0;
}

// Пример использования
console.log(isBalanced("{[()]}")); // true
console.log(isBalanced("{[(])}")); // false
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Предзагрузка отзывчивых изображений

Статья объясняет, как правильно предзагружать отзывчивые изображения, чтобы ускорить загрузку страниц. Рассматривается взаимодействие предзагрузки с решениями браузера для выбора изображений под устройство.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Fancy Glowing Button

Крутая кнопка с RGB подсветкой и эффектом при наведении. Сделана на чистом CSS.

Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
📝 Подборка вакансий для сеньоров

Senior Fullstack Developer
React, Vue.js, TypeScript, Node.js, MongoDB, Webpack
от 3 800 до 6 500 $ | 3+ лет

Fullstack PHP-разработчик
PHP, Laravel, MySQL, Vue.js, Apache, Linux
от 2 200 до 2 800 $ | 2+ года

JavaScript Fullstack программист (разработчик)
Node.js, React, Redux, PostgreSQL, Redis, RabbitMQ, MongoDB
от 250 000 до 400 000 ₽ | 3+ года
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Безопасное взаимодействие с API: от ошибок к стабильности

В статье разбираются причины распространённых ошибок JavaScript, связанных с несоответствием данных, и предлагаются три ключевых решения: создание API-слоя, использование Backend-for-Frontend (BFF) и валидация данных через Zod для повышения стабильности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что такое свойство aspect-ratio в CSS и как оно используется?

aspect-ratio — это свойство CSS, которое задаёт соотношение ширины к высоте элемента. Оно упрощает создание адаптивных контейнеров, таких как видео, изображения или карточки.

➡️ Пример:

<div class="box"></div>

<style>
.box {
width: 300px;
aspect-ratio: 16 / 9; /* Соотношение сторон 16:9 */
background: lightblue;
}
</style>


🗣️ В этом примере элемент .box сохраняет соотношение сторон 16:9 независимо от ширины. Это свойство полезно для создания адаптивных сеток и медиа-контейнеров.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Эксперимент: Автоматическое включение View Transitions с MutationObserver

Вместо того чтобы добавлять document.startViewTransition в различные места JS, используйте MutationObserver, следящий за мутациями DOM. В обратном вызове Observer'а отмените исходную мутацию и примените её снова, но на этот раз обернув во View Transition.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Хочу прожарки на MVP своего проекта, который задеплоил буквально пару дней назад

Hack Frontend — платформа для подготовки к собеседованию по фронтенду. Обещает базу знаний, задачи и интерактивную подготовку. Но насколько она удобна и полезна? В статье — критика, фидбэк и предложения.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Подборка зарубежных вакансий

Frontend Developer (React Native)
🟢React Native, JavaScript, TypeScript
🟢Уровень дохода не указан | 3–6 лет

Lead React Native Developer
🟢React Native, TypeScript, CI/CD
🟢Уровень дохода не указан | 5+ лет

PHP разработчик
🟢PHP, Laravel, REST API, SOAP, MySQL, October CMS, Docker
🟢Уровень дохода не указан | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM