Свежие статьи

Обрезка блоков текста с помощью line-clamp

Обрезка блоков текста с помощью line-clamp

Функция line-clamp находится в статусе ограниченной доступности в Baseline, но уже широко используется для создания аккуратных текстовых блоков. Это свойство позволяет ограничить отображение текста заданным количеством строк, скрывая всё, что выходит за пределы. Оно идеально подходит для превью статей, цитат или карточек товаров, где нужно показать только часть текста, не перегружая страницу.

В основе line-clamp лежит комбинация свойств, включающих display: -webkit-box, -webkit-line-clamp и -webkit-box-orient: vertical. Современные браузеры поддерживают стандартное свойство line-clamp без префиксов, но для максимальной совместимости лучше использовать и префиксные версии. Это особенно важно для старых версий браузеров, таких как Safari.

Давайте разберём, как работает line-clamp, и посмотрим на несколько примеров.

Читать дальше
CSS
  • 18 октября 2025
Форматирование относительного времени в JavaScript

Форматирование относительного времени в JavaScript

API Intl.RelativeTimeFormat доступно в Baseline в статусе «Widely Available» с 16 марта 2023 года. Это мощный инструмент для отображения относительного времени в локализованном виде, например, «через минуту», «вчера» или «2 недели назад». Он автоматически адаптируется к языку и культурным особенностям региона, делая интерфейс более понятным и дружелюбным для пользователей.

В этой статье мы разберём, как работает Intl.RelativeTimeFormat, и приведём несколько примеров его использования.

Читать дальше
JS
  • 17 октября 2025
Что такое null-коалесцентный оператор ?? в JavaScript

Что такое null-коалесцентный оператор ?? в JavaScript

Операторы ?? и ??= стали доступны в Baseline в статусе «Widely Available» с 16 марта 2023 года. Они упрощают работу с переменными, которые могут быть null или undefined, позволяя задавать значения по умолчанию или обновлять переменные только в этих случаях. Это делает код чище и понятнее, особенно при работе с потенциально отсутствующими данными.

В этой статье мы разберём, как работают операторы нулевого слияния, и покажем примеры их использования.

Читать дальше
JS
  • 15 октября 2025
Кодирование и декодирование Base64 с atob и btoa

Кодирование и декодирование Base64 с atob и btoa

Функции btoa() и atob() — это встроенные средства JavaScript для кодирования и декодирования строк в формате Base64.

С 20 марта 2019 года они входят в статус «Widely Available» по Baseline — значит, поддерживаются всеми современными браузерами и подходят для использования в продакшене.

Читать дальше
JS
  • 14 октября 2025

Как в 2025 году вибрануть сайтом

Шутки в сторону, на кону серьёзная задача — нужно вибрануть сайтом. К счастью, в 2025 году это не очень сложно и нужна поддержка есть. Vibration API поддерживается почти везде, кроме Safari. Конечно, ещё нужно устройство с вибромотором, но тут подойдут почти все телефоны, если есть нужный браузер.

Не будем растягивать эту инструкцию и давайте начнём с базовой страницы (это будет просто кнопка, выровненная по центру.)

<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Кнопка по центру</title>
</head>
<body>
 <button>Нажми меня</button>
</body>
</html>

Ну или ладно, сначала она вообще не по центру. Добавим стили, чтобы кнопка получила цвет и оказалась там, где мы хотим. Вставьте весь этот тег <style> куда-нибудь внутри <head>.

<style>
   body {
     margin: 0;
     height: 100vh;
     display: flex;
     justify-content: center;
     align-items: center;
     background-color: #f0f0f0;
   }
   button {
     padding: 15px 30px;
     font-size: 18px;
     background-color: #007bff;
     color: white;
     border: none;
     border-radius: 5px;
     cursor: pointer;
   }
   button:hover {
     background-color: #0056b3;
   }
 </style>

Чтобы добавить поддержку вибрации, слегка изменим код внутри <body> — добавим скрипт, который проверяет поддержку вибрации и вибрирует.

<body>
 <button id="vibrateButton">Нажми меня</button>
 <p id="status">Проверка поддержки вибрации...</p>

 <script>
   const vibrateButton = document.getElementById('vibrateButton');
   const statusText = document.getElementById('status');

   if ('vibrate' in navigator) {
     statusText.textContent = 'Vibration API поддерживается!';
     vibrateButton.addEventListener('click', () => {
       navigator.vibrate(200); // Вибрация на 200 мс
       statusText.textContent = 'Устройство завибрировало!';
     });
   } else {
     vibrateButton.disabled = true;
     statusText.textContent = 'Vibration API не поддерживается.';
   }
 </script>
</body>

И всё!

Есть, конечно, нюанс. В теории с поддержкой всё хорошо, а на практике при проверке у редакции на Андроид-смартфоне вибрация поддерживается в Chrome и Яндекс-браузере, а в Firefox не работает (хотя на CanIUse и написано обратное).

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

JS
  • 3 октября 2025
Как найти элемент в массиве по индексу на JS

Как найти элемент в массиве по индексу на JS

Метод at() возвращает элемент массива по индексу. Отрицательные индексы позволяют отсчитывать элементы с конца массива.

const numbers = [10, 20, 30, 40, 50];

// Получаем элемент по индексу
console.log(numbers.at(0));   // 10
console.log(numbers.at(2));   // 30

// С конца массива
console.log(numbers.at(-1));  // 50
console.log(numbers.at(-3));  // 30

Здесь показано, что at() работает как обычный доступ по индексу, но с преимуществом: отрицательные числа позволяют легко получать элементы с конца массива. Это особенно удобно, когда размер массива заранее неизвестен.

// Использование с типизированными массивами
const typedArr = new Uint8Array([1, 2, 3, 4]);
console.log(typedArr.at(1));   // 2
console.log(typedArr.at(-2));  // 3

Метод одинаково хорошо работает и с типизированными массивами (TypedArray), что делает его универсальным инструментом для работы с любыми последовательностями чисел.

// Безопасный доступ
console.log(numbers.at(10));   // undefined
console.log(numbers.at(-10));  // undefined

Если индекс выходит за границы массива, метод возвращает undefined. Это безопаснее, чем напрямую обращаться к элементу через квадратные скобки, так как код остаётся читаемым и предсказуемым.

Метод at() делает код чище и удобнее, особенно когда нужно работать с элементами с конца массива или с переменной длиной массива.

JS
  • 3 октября 2025

Основы работы с Ubuntu VPS для новичка: установка node.js и веб-сервера

Допустим, вы только что купили VPS с Ubuntu, чтобы захостить там какого-нибудь бота или даже простой сайт, экспериментов с Linux и автоматизации задач. В этой статье мы пошагово разберём базовые команды и операции, которые нужны каждому новичку, чтобы уверенно работать в терминале, управлять файлами, процессами и устанавливать приложения. Все примеры даны на практике, с пояснениями, чтобы вы сразу могли применять их на своём сервере.

Читать дальше
Софт
  • 1 октября 2025
Как подключиться к VPS через Visual Studio Code: короткий гайд

Как подключиться к VPS через Visual Studio Code: короткий гайд

В прошлой заметке мы настроили доступ к нашему VPS-серверу, а теперь попробуем подключаться к нему через VS Code, чтобы было удобнее заливать код.

Заходите в VS Code и найдите слева вкладку Remote Explorer. Там будет пункт SSH и кнопка с плюсиком рядом.

Remote Explorer в VS Code

Смело жмите в плюсик, сверху появится такой пункт. Туда нужно ввести команду для подключения к ssh, например, такую (не забудьте подставить свой IP-адрес).

ssh root@194.00.00.00
Ввод ssh команды

На следующем шаге выберем файл конфигурации. Нужен первый в списке:

Выбор конфигурационного файла

И после этого появится окошко с успехом — можно подключиться или открыть конфиг (это просто файл с адресом и логином). Подключаемся и нас спросят пароль:

Запрос пароля при подключении

Вводите не стесняясь. Если у вас не установлен VS Code Server, то нужно подождать, пока он скачается. А дальше готово — вы на собственном сервере, можете легко загружать, создавать и удалять файлы. Всё сохранится автоматически после сохранения.

Работа с файлами на сервере через VS Code

Надеемся, что вы будете аккуратными и никому не расскажете свой пароль. А чтобы не вводить его каждый раз, прочитайте статью о работе с Git через консоль, там есть раздел о создании SSH-ключей.

Софт
  • 27 сентября 2025
Как сделать свой сайт на VPS. Самая простая инструкция

Как сделать свой сайт на VPS. Самая простая инструкция

Итак, вы купили себе личный сервер, вообще не важно, для чего именно. Может, чтобы поднять там телеграм‑бота, а может, чтобы сделать сервер в Майнкрафте. Но рано или поздно появляется желание сделать себе сайт и показать друзьям и знакомым.

Давайте разбираться.

Читать дальше
Софт
  • 26 сентября 2025
CSS-свойство image-orientation: исправляем ориентацию изображений из EXIF

CSS-свойство image-orientation: исправляем ориентацию изображений из EXIF

При загрузке фотографий со смартфонов или камер на сайтах порой возникает проблема с неправильной ориентацией изображений. Это связано с тем, что устройства сохраняют ориентацию изображения в метаданных EXIF, а браузеры могут не всегда учитывать эти данные при отображении. Свойство CSS image-orientation позволяет корректировать ориентацию изображений, обеспечивая их правильное отображение.

Читать дальше
CSS
  • 25 сентября 2025

7 интересных тем для Visual Studio Code этой осенью

Visual Studio Code — один из самых популярных редакторов кода, и он действительно преображается с помощью красивых и удобных цветовых тем. Мы собрали для вас подборку из 7 свежих и стильных тем, которые помогут настроить рабочее пространство этой осенью. В списке вы найдёте и тёмные, и светлые варианты — от минимализма до неонового киберпанка.

Читать дальше
Софт
  • 19 сентября 2025

7 промптов, чтобы очистить код от следов вайбкодинга

Вайбкодинг — это когда код вроде бы работает, но написан «по вайбу»: с кривыми отступами, странными именами переменных, копипастой и магическими числами. Такой код сложно поддерживать. Многие настоящие программисты с большим опытом добавляют себе в портфолио фразу «очищу ваш вайбкод». Но что, если я скажу, что и нейросети отлично помогают его чистить, особенно в небольших проектах?

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

Читать дальше
Софт
  • 18 сентября 2025

4 плагина в Figma, которыми я реально пользуюсь

По работе мне постоянно нужно делать картинки для статей в блоге, поэтому я постоянно экспериментирую с плагинами в Figma. Некоторые остаются «про запас», но есть плагины, без которых я уже не представляю ежедневную работу. Ниже — мой личный топ инструментов, которые экономят время и реально делают проекты лучше.

Читать дальше
Софт
  • 18 сентября 2025
Использование метода normalize() для строк в JavaScript

Использование метода normalize() для строк в JavaScript

Метод normalize() приводит строки к единой форме Unicode. Это нужно, когда один символ (например, буква с акцентом) записан по-разному, но должен обрабатываться одинаково. Метод доступен с 20 марта 2019 года (статус Baseline «Widely Available»).

Пример: буква «é» может быть единой или комбинацией «e» и «́». normalize() делает их одинаковыми для сравнения.

const str1 = 'e\u0301'; // «e» + акцент
const str2 = 'é'; // единая «é»

console.log(str1 === str2); // false
console.log(str1.normalize() === str2.normalize()); // true

Получается, в Unicode один символ может быть записан разными способами, что мешает при сравнении строк, поиске или сортировке. normalize() решает эту проблему, приводя строку к стандартной форме.

Читать дальше
JS
  • 12 сентября 2025
Визуализация: nth-child – как выбирать элементы на странице

Визуализация: nth-child – как выбирать элементы на странице

Давайте разберёмся с :nth-child(). Это встроенная возможность CSS, которая помогает выбрать элементы на странице по их порядку внутри какого-нибудь контейнера, например, списка или блока. Хочется выделить каждый второй элемент? Или, скажем, каждый третий, начиная с четвёртого? С :nth-child() это легко! Можно просто написать номер, чтобы взять, к примеру, пятый элемент, или использовать что-то вроде «чётные» или «каждые три», чтобы всё красиво стилизовать.

Читать дальше
CSS
  • 7 сентября 2025
Использование rel="prefetch" и другие методы предзагрузки страницы

Использование rel="prefetch" и другие методы предзагрузки страницы

Ресурсные подсказки (Resource Hints) — это механизмы, позволяющие браузеру заранее загружать ресурсы или устанавливать соединения для ускорения навигации и загрузки страниц. Одним из таких механизмов является атрибут rel="prefetch", который указывает браузеру загружать ресурсы с низким приоритетом для возможного использования в будущем. Это сокращает время загрузки страниц и улучшает пользовательский опыт, особенно на сайтах с частыми переходами.

Читать дальше
HTML
  • 7 сентября 2025
Таймеры в JS с setTimeout и clearTimeout

Таймеры в JS с setTimeout и clearTimeout

setTimeout — это метод, предоставляемый API браузеров и Node.js, который позволяет выполнять код с заданной задержкой. Он принимает функцию (коллбэк), время задержки в миллисекундах и, опционально, аргуtimes для передачи в функцию. Для отмены выполнения используется clearTimeout.

setTimeout и setInterval были введены в первых версиях JavaScript (ECMAScript 1, 1997) как часть API WindowOrWorkerGlobalScope. Эти методы интегрированы в цикл событий (event loop), который управляет асинхронным выполнением в JavaScript. Несмотря на появление современных инструментов, таких как Promises и async/await, setTimeout остаётся востребованным благодаря своей простоте и универсальности.

const timerId = setTimeout(() => {
  console.log('Сообщение появится через 2 секунды');
}, 2000);

// Отмена выполнения
clearTimeout(timerId);

Здесь setTimeout возвращает числовой идентификатор таймера (timerId), который используется в clearTimeout. В Node.js возвращается объект Timeout.

Читать дальше
JS
  • 6 сентября 2025
Именованные цвета в CSS

Именованные цвета в CSS

Цвета в CSS можно задавать не только в форматах RGB, HEX или HSL, но и с помощью именованных цветов. Такие названия, как red, limegreen, blue или rebeccapurple, упрощают стилизацию, делая код более читаемым и интуитивным. Этот подход особенно полезен для быстрого прототипирования и учебных проектов.

Именованные цвета были введены в спецификации CSS1 (1996 год) и основаны на палитре X11, используемой в оконной системе UNIX. Названия вроде aliceblue, papayawhip или moccasin пришли именно из этой палитры. В CSS Color Level 4 (2022 год) стандарт закрепил 147 именованных цветов, включая transparent и currentcolor. Эти цвета поддерживаются во всех современных браузерах и могут использоваться для задания фона, текста, границ, теней и других свойств.

Читать дальше
CSS
  • 5 сентября 2025
Операторы присваивания &&= и ||= в JavaScript

Операторы присваивания &&= и ||= в JavaScript

JavaScript развивается быстрыми темпами, и новые возможности языка часто появляются именно для того, чтобы писать меньше кода и делать его более читаемым. Одной из таких возможностей стали логические операторы присваивания &&= и ||=, которые вошли в стандарт относительно недавно и уже поддерживаются во всех современных браузерах (статус Widely Available в Baseline с 16 марта 2023 года).

До появления этих операторов разработчики писали длинные конструкции с проверками:

let a = true;
if (a) {
  a = false;
}

Код был понятен, но избыточен. Новые операторы &&= и ||= позволяют объединить проверку и присваивание в одну строку.

Читать дальше
JS
  • 30 августа 2025