Логово верстальщика – 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
📝 Подборка вакансий для мидлов

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
📝 Подборка вакансий для сеньоров

React Native разработчик
React Native, TypeScript, HTML, CSS, React
от 150 000 до 200 000 ₽ | 1–3 года

Web Разработчик / Fullstack
PHP8, MySQL, JavaScript, Node.js, Git, Linux
от 300 000 до 700 000 ₽ | 5+ лет

Tech Lead (Senior PHP-разработчик)
PHP, Yii framework, Symfony, PostgreSQL, JSON, Git, ООП, Docker, CI/CD
Уровень дохода не указан | 5+ лет
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Выкинь свой RoadMap: что на самом деле нужно знать начинающему фронтендеру

Сколько бы раз я ни смотрел RoadMap для начинающих фронтендеров, всегда натыкаюсь на одну проблему: RoadMap, как правило, — просто свалка технологий, которую можно описать одной фразой: "Учи всё, что есть". Но так ли это? Нужно ли учить всё это в самом начале? Давайте отбросим большую схему с технологиями в сторону и поговорим начистоту.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что такое Intersection Observer в JavaScript и зачем он используется?

Intersection Observer — это API, которое позволяет отслеживать, когда элемент появляется или исчезает из области видимости (viewport). Он полезен для ленивой загрузки изображений, бесконечной прокрутки и анимаций при прокрутке.

➡️ Пример:

const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('Элемент видим:', entry.target);
}
});
});

// Наблюдаемый элемент
const target = document.querySelector('.observe-me');
observer.observe(target);


🗣️ В этом примере Intersection Observer отслеживает элемент .observe-me и выполняет код, когда элемент появляется в области видимости. Это позволяет избежать постоянного использования события scroll, улучшая производительность.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Народный браузер — каким он мог бы быть?

Статья раскрывает идеи и обсуждения, связанные с развитием сборки Хромиума Ultimatum. Автор стремится понять реальные запросы пользователей и обсудить востребованные функции.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Разбираем стандарты нейминга на примерах

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔨 Ломай свои решения до того, как их сломает продакшен

Ты уверен, что твоя фича работает идеально? Отлично. А что будет, если передать в неё неожиданные данные?

👉 Совет: тестируй свои решения агрессивно. Вводи странные значения, симулируй обрывы соединения, загружай систему до предела. Лучше пусть код сломается у тебя, чем у пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Подборка зарубежных вакансий

Full Stack Developer (Node.js, React)
🟢Node.js, React, NestJS, TypeScript, MySQL, RabbitMQ, Redis, AWS
🟢Уровень дохода не указан | 3–6 лет

Angular Developer
🟢Angular 2+, MS SQL, EF Core, OAuth 2.0, JWT, RESTful APIs, Swagger, HTML, CSS/SCSS, Bootstrap
🟢Уровень дохода не указан | 3–6 лет

Full Stack Developer
🟢Node.js, TypeScript, VueJS, React, DevOps, PostgreSQL, Redis, AWS
🟢Уровень дохода не указан | 5+ лет
Please open Telegram to view this post
VIEW IN TELEGRAM
1
➡️ Frontend в 2025 году: тренды, которые изменят разработку

В этой статье мы подводим итоги 2024 года и делимся нашими прогнозами на 2025 год. Приводим мнение трех экспертов по ключевым трендам фронтенд‑разработки и фреймворков, которые будут актуальными в следующем году.

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

Создайте поле для ввода пароля и кнопку "Показать/Скрыть". При нажатии на кнопку символы пароля должны переключаться между скрытым (type="password") и видимым (type="text") состоянием.

Требования:

Кнопка переключает тип поля ввода пароля между "password" и "text".
Текст кнопки меняется в зависимости от текущего состояния видимости пароля.

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

<input type="password" id="password" placeholder="Введите пароль">
<button id="toggleBtn">Показать</button>

const password = document.getElementById('password');
const toggleBtn = document.getElementById('toggleBtn');

toggleBtn.addEventListener('click', () => {
const isHidden = password.type === 'password';
password.type = isHidden ? 'text' : 'password';
toggleBtn.textContent = isHidden ? 'Скрыть' : 'Показать';
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как мы мигрируем с JQuery на React

Обсуждаем миграцию с jQuery на React. В статье — реальный опыт, причины перехода, основные шаги и способы преодоления сложностей.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Анимация загрузочного индикатора

Создайте кнопку, при нажатии на которую появляется анимация загрузочного индикатора (спиннера) на 3 секунды. После завершения загрузки спиннер исчезает, а на кнопке отображается текст "Готово!".

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

<button id="loadButton">Начать загрузку</button>
<div id="spinner" class="spinner" style="display: none;"></div>

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

.spinner {
margin-top: 10px;
width: 30px;
height: 30px;
border: 4px solid
#ccc;
border-top: 4px solid
#007bff;
border-radius: 50%;
animation: spin 1s linear infinite;
}

@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}

const button = document.getElementById('loadButton');
const spinner = document.getElementById('spinner');

button.addEventListener('click', () => {
button.disabled = true;
button.textContent = 'Загрузка...';
spinner.style.display = 'block';

setTimeout(() => {
button.textContent = 'Готово!';
spinner.style.display = 'none';
button.disabled = false;
}, 3000);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Подборка вакансий для джунов

Junior Frontend-разработчик Vue
🟢JavaScript, Vue.js, Git, HTML5, ES6, TypeScript
🟢от 60 000 до 90 000 ₽ | Без опыта

Junior PHP Backend Developer Yii2
🟢PHP7.4, MySQL, Yii2, jQuery, Git, JavaScript
🟢от 50 000 ₽ | 1–3 года

Младший фронтенд разработчик (JS/Vue)
🟢JavaScript, Vue3, Vuex, chart.js, Bootstrap, Git, HTML5, CSS3, SVG
🟢от 60 000 до 80 000 ₽ | 1–3 года опыта
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Новые возможности CSS за 2024 год

Центрирование без боли, улучшенный тёмный режим, анимация скрытых элементов и даже решения математических задач — меньше сложностей, больше возможностей.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что такое теневые DOM-деревья (Shadow DOM) и как они работают?

Shadow DOM — это ключевая часть технологии Web Components, которая позволяет создавать инкапсулированные области DOM с собственным стилем и поведением. Теневые DOM-деревья изолированы от остального документа, что предотвращает конфликты стилей и упрощает создание переиспользуемых компонентов.

➡️ Пример:

// Создание элемента с Shadow DOM
const host = document.createElement('div');
const shadowRoot = host.attachShadow({ mode: 'open' });

// Добавление стилей и контента
shadowRoot.innerHTML = `
<style>
p {
color: blue;
}
</style>
<p>Это текст внутри Shadow DOM</p>
`;

document.body.appendChild(host);
console.log(document.querySelector('p')); // null (элемент скрыт из глобального DOM)


🗣️ В этом примере текст внутри Shadow DOM изолирован. Стили из Shadow DOM не влияют на остальную страницу, и наоборот. Shadow DOM полезен для создания самодостаточных UI-компонентов.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM