Логово верстальщика – 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
👩‍💻 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
👩‍💻 Настройка одного набора цветов для светлого и тёмного режимов

CSS переменные можно использовать, чтобы сделать цвета темнее, когда они отображаются на светлом фоне, и светлее, когда они отображаются на тёмном, что делает их более яркими в обоих случаях.

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

Создайте интерактивный счётчик с двумя кнопками: "Увеличить" и "Уменьшить". Счётчик должен отображать текущее значение, которое обновляется при нажатии на кнопки.

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

По умолчанию значение счётчика равно 0.
Кнопка "Увеличить" увеличивает значение счётчика на 1.
Кнопка "Уменьшить" уменьшает значение счётчика на 1.
Значение счётчика никогда не становится отрицательным.

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

<div>
<button id="decreaseButton">Уменьшить</button>
<span id="counter">0</span>
<button id="increaseButton">Увеличить</button>
</div>

const counter = document.getElementById('counter');
const decreaseButton = document.getElementById('decreaseButton');
const increaseButton = document.getElementById('increaseButton');

let count = 0;

decreaseButton.addEventListener('click', () => {
if (count > 0) {
count -= 1;
counter.textContent = count;
}
});

increaseButton.addEventListener('click', () => {
count += 1;
counter.textContent = count;
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как реализовать наследование в JavaScript: 7 способов

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Модальное окно с закрытием по кнопке и фону

Создайте модальное окно, которое открывается при клике на кнопку и закрывается при клике на кнопку закрытия или на фон вокруг модального окна.

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

При клике на кнопку "Открыть модальное окно" появляется модальное окно.
Модальное окно закрывается при клике на кнопку "Закрыть" или на затемнённый фон.
Фон страницы не прокручивается, пока открыто модальное окно.

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

<button id="openModal">Открыть модальное окно</button>

<div id="modal" class="modal">
<div class="modal-content">
<span id="closeModal" class="close-button">&times;</span>
<p>Это модальное окно</p>
</div>
</div>

body.modal-open {
overflow: hidden;
}

.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
justify-content: center;
align-items: center;
}

.modal-content {
background: white;
padding: 20px;
border-radius: 8px;
position: relative;
}

.close-button {
position: absolute;
top: 10px;
right: 15px;
font-size: 24px;
cursor: pointer;
}

const openModalBtn = document.getElementById('openModal');
const closeModalBtn = document.getElementById('closeModal');
const modal = document.getElementById('modal');
const body = document.body;

openModalBtn.addEventListener('click', () => {
modal.style.display = 'flex';
body.classList.add('modal-open');
});

closeModalBtn.addEventListener('click', closeModal);
modal.addEventListener('click', (e) => {
if (
e.target === modal) closeModal();
});

function closeModal() {
modal.style.display = 'none';
body.classList.remove('modal-open');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Подборка вакансий для джунов

React junior/middle
🟢React Native, TypeScript, CSS3, адаптивная верстка, Git
🟢от 70 000 до 150 000 ₽ | 1–3 года

Junior Front-end разработчик
🟢HTML, CSS, JavaScript, CMS (WordPress, Bitrix), SEO
🟢от 50 000 до 80 000 ₽ | 1–3 года

Junior Front-end developer
🟢JavaScript, React, Redux, Git, Sass
🟢от 80 000 до 120 000 ₽ | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Text Illumination

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

Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что такое addEventListener в JavaScript?

addEventListener — это метод, который позволяет добавлять обработчики событий к элементам на странице.

➡️ Пример:

// Функция для обработки клика
function handleClick() {
console.log('Кнопка нажата!');
}

// Добавляем обработчик к кнопке
const button = document.querySelector('button');
button.addEventListener('click', handleClick);


🗣️ В этом примере метод addEventListener связывает событие клика с кнопкой, выполняя функцию handleClick. Этот подход позволяет динамически добавлять или удалять обработчики.


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

Frontend-разработчик React / Vue.js / Nuxt.js (Middle-Senior)
🟢React, React Native, Vue.js, Nuxt.js, RESTful API, HTML, CSS, Git
🟢от 200 000 ₽ | от 2 лет

Системный аналитик на frontend и mobile в Т-Инвестиции
🟢SOAP, базы данных, REST, RabbitMQ, SQL, BPMN, системный анализ, Apache Kafka, UML, разработка решений по интеграции
🟢Уровень дохода не указан | от 3 лет

Frontend-разработчик
🟢TypeScript, Vue.js, Webpack, GraphQL
🟢до 200 000 ₽ | от 3 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Ultimatum — еще один форк хромиума, с претензией…

Статья анонсирует сборку браузера Chromium — Ultimatum. Браузер обходит техники трекинга, позволяет устанавливать расширения с любых сайтов и перехватывать сетевые запросы для их полной подмены.

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

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

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

Пользователь вводит текст задачи в поле и нажимает кнопку "Добавить".
Новая задача добавляется в список с кнопкой "Удалить" рядом с ней.
При нажатии на кнопку "Удалить" задача исчезает из списка.

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

<div>
<input type="text" id="taskInput" placeholder="Введите задачу" />
<button id="addButton">Добавить</button>
</div>
<ul id="taskList"></ul>

const taskInput = document.getElementById('taskInput');
const addButton = document.getElementById('addButton');
const taskList = document.getElementById('taskList');

addButton.addEventListener('click', () => {
const taskText = taskInput.value.trim();
if (taskText === '') return; // Не добавляем пустые задачи

const listItem = document.createElement('li');
listItem.textContent = taskText;

const deleteButton = document.createElement('button');
deleteButton.textContent = 'Удалить';
deleteButton.style.marginLeft = '10px';

deleteButton.addEventListener('click', () => {
taskList.removeChild(listItem);
});

listItem.appendChild(deleteButton);
taskList.appendChild(listItem);

taskInput.value = ''; // Очищаем поле ввода
});
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🗓 Как написать Google Calendar на коленке? Обзор FullCallendar

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

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

Анимированная кнопка с эффектом при наведении. Сделана на SVG, CSS и JavaScript.

Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM