Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Веселая аркада с Печенькой для новогоднего настроения. Объезжайте препятствия, а подарки, варежки, конфеты и прочие приятности не объезжайте: они помогут набрать очки и установить новый рекорд.

Сноуборд

Спорт, Аркады, На ловкость

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Javascript + Telegram (ссылка)

С этим тегом используют

Программирование IT HTML IT юмор Программист Frontend CSS Вертикальное видео Юмор Картинка с текстом Короткие видео Девушки Эротика Кот Все
18 постов сначала свежее
3
user10424664
user10424664
15 дней назад

Как переносить «висячие» слова на новую строку с помощью JavaScript⁠⁠

Как переносить «висячие» слова на новую строку с помощью JavaScript Разработка, Программирование, Javascript, Типографика, Uxui, Ui, Ux, Frontend, Верстка, IT, Программист, Telegram (ссылка), Длиннопост

изображение сгенерировано в ChatGPT

В типографике существует понятие “висячих слов” — это короткие слова (предлоги, союзы, местоимения), которые остаются в конце строки при переносе текста. Такие переносы нарушают удобочитаемость и эстетику текста. В русской типографике принято избегать переносов после коротких слов длиной 1-2 символа.

Решение проблемы с помощью JavaScript

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

// Перенос висячих слов

document.addEventListener('DOMContentLoaded', function () {

// 1. Находим все текстовые элементы, которые нужно обработать

const textElements = document.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6, li, dt, dd');

// 2. Список предлогов и союзов, которые нельзя переносить

const prepositions = ['в', 'без', 'до', 'из', 'к', 'на', 'по', 'о', 'от', 'перед', 'при', 'через', 'для', 'с', 'у', 'и', 'а', 'но', 'да', 'или', 'либо', 'что', 'чтобы', 'как', 'когда', 'если', 'вы'];

// 3. Функция для обработки каждого элемента

textElements.forEach(element => {

// Получаем все текстовые узлы внутри элемента

const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);

const textNodes = [];

while (walker.nextNode()) {

textNodes.push(walker.currentNode);

}

// Обрабатываем каждый текстовый узел

textNodes.forEach(textNode => {

let text = textNode.nodeValue;

// Заменяем пробелы после коротких слов на неразрывные пробелы

text = text.replace(/(^|\s)([а-яё]{1,2})\s/gi, (match, prefix, word) => {

// Проверяем, есть ли слово в списке предлогов

if (prepositions.includes(word.toLowerCase())) {

return prefix + word + '\u00A0'; // \u00A0 - это неразрывный пробел

}

return match;

});

// Обновляем содержимое текстового узла

textNode.nodeValue = text;

});

});

});


Разбор кода по частям


1. Инициализация скрипта

document.addEventListener('DOMContentLoaded', function () {

Код выполняется после полной загрузки DOM-дерева страницы. Это гарантирует, что все элементы будут доступны для обработки.


2. Поиск текстовых элементов

const textElements = document.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6, li, dt, dd');

Скрипт находит все основные текстовые элементы на странице: параграфы, заголовки, элементы списков и другие. Вы можете расширить этот список, добавив другие селекторы.


3. Список коротких слов

const prepositions = ['в', 'без', 'до', 'из', 'к', 'на', 'по', 'о', 'от', 'перед', 'при', 'через', 'для', 'с', 'у', 'и', 'а', 'но', 'да', 'или', 'либо', 'что', 'чтобы', 'как', 'когда', 'если', 'вы'];

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


4. Обход текстовых узлов

const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);

TreeWalker позволяет пройти по всем текстовым узлам внутри элемента, включая вложенные теги. Это важно, так как текст может содержать форматирование (, и т.д.).


5. Регулярное выражение для замены

text = text.replace(/(^|\s)([а-яё]{1,2})\s/gi, (match, prefix, word) => {

Регулярное выражение ищет:
· (^|\s) — начало строки или пробел (группа 1);
· ([а-яё]{1,2}) — слово из 1-2 русских букв (группа 2);
· \s — пробел после слова;
· Флаги gi означают глобальный поиск без учёта регистра.


6. Условная замена

if (prepositions.includes(word.toLowerCase())) {

return prefix + word + '\u00A0'; // \u00A0 - это неразрывный пробел

}

Если найденное короткое слово есть в списке предлогов, обычный пробел заменяется на неразрывный пробел (\u00A0). Это предотвращает разрыв строки между предлогом и следующим словом.


Результат работы

После выполнения скрипта текст “Я иду в магазин” не будет разорван на строки как “Я иду в” и “магазин”. Предлог “в” всегда останется на одной строке со следующим словом благодаря неразрывному пробелу.

Настройка скрипта

Вы можете легко адаптировать скрипт под свои нужды:
· Добавить новые селекторы в querySelectorAll() для обработки других элементов;
· Расширить список слов в массиве prepositions;
· Изменить длину слов в регулярном выражении с {1,2} на другое значение;
· Добавить обработку других языков, изменив диапазон символов в регулярном выражении.

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

P.S.: это JS решение иногда не во всех случаях срабатывает + бывают сложности с адаптивностью: на смартфонах может переносить совсем не так, как хотелось бы, текст может «уехать» за пределы контейнера, нужно будет «фиксить» эти моменты в CSS.


Разработчики, а как вы решаете вопрос переноса «висячих» слов?

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

Показать полностью 1
Разработка Программирование Javascript Типографика Uxui Ui Ux Frontend Верстка IT Программист Telegram (ссылка) Длиннопост
13
119
Dehavilland56
1 месяц назад
IT-юмор

Здесь можно всё⁠⁠

Здесь можно всё IT юмор, Программирование, Картинка с текстом, Программист, Telegram (ссылка), Javascript, IT

Взято тут - https://t.me/memolecules/30

Показать полностью 1
IT юмор Программирование Картинка с текстом Программист Telegram (ссылка) Javascript IT
39
Dehavilland56
1 месяц назад
Программисты шутят

Когда наблюдаешь очередной срач между фанатами php и node.js⁠⁠

Когда наблюдаешь очередной срач между фанатами php и node.js IT юмор, Программирование, Картинка с текстом, Программист, Telegram (ссылка), PHP, Nodejs, IT, Javascript, Мемы

Взято тут - https://t.me/memolecules/29

IT юмор Программирование Картинка с текстом Программист Telegram (ссылка) PHP Nodejs IT Javascript Мемы
4
Партнёрский материал Реклама
specials
specials

Раз проценты, два проценты⁠⁠

Звучит приятно, если речь о выгоде и начисленном кешбэке. Сделали самый приятный калькулятор, который считает исключительно выгоду!

Реклама Реклама. ПАО «Банк ВТБ», ИНН: 7702070139

Калькулятор Выгода
0
Dehavilland56
2 месяца назад
IT-юмор

Простите за тонкий юмор⁠⁠

Простите за тонкий юмор IT юмор, Программирование, Картинка с текстом, Мемы, Telegram (ссылка), Javascript, Typescript, Программист

Взято тут - https://t.me/memolecules/22

Показать полностью 1
IT юмор Программирование Картинка с текстом Мемы Telegram (ссылка) Javascript Typescript Программист
2
2462
Dehavilland56
2 месяца назад
Программисты шутят

Но он пытался⁠⁠

Но он пытался IT юмор, Программирование, Telegram (ссылка), Картинка с текстом, Javascript, Backend, IT, Мемы, Программист, Nodejs

Мем взят тут - https://t.me/memolecules/21

Показать полностью 1
IT юмор Программирование Telegram (ссылка) Картинка с текстом Javascript Backend IT Мемы Программист Nodejs
135
cherkalexander
cherkalexander
2 месяца назад

Подводные камни при переходе с ES5 на ES6⁠⁠

🗿 Подводные камни при переходе с ES5 на ES6

Недавно мы с командой, наконец-то перешли с ES5 на ES6.

Всё прошло достаточно плавно, нам пришлось исправить всего несколько ошибок в рантайме. Почти все ошибки были в очень старых файлах, где были отключены проверки typescript с помощью @ts-nocheck.

Ошибка 1️⃣ — Action is not a constructor

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


const Action = () => {}; // ES6
const action = new Action(); // Action is not a constructor

var Action = function () {} // ES5
var action = new Action(); // Всё ОК


Ошибка 2️⃣ — Функции, объявленные через let, больше не попадают в window


let openAction = function () {}
window.openAction() // window.openAction is not a function

// Раньше let заменялся на var и всё работало
var openAction = function () {}
window.openAction() // всё ок


Дело в том, что когда переменная объявляется глобально через var, она автоматически становится свойством глобального объекта window. Подробнее тут.

Ошибка 3️⃣ — Cannot access variable before initialization

Одна из ошибок случалась, когда мы пытались получить доступ к переменной promise до её инициализации.


class Queue {
executing;

run(thenable) {
const promise = new Promise(async (resolve, reject) => {
// пытаемся получить значние promise
while (this.executing != promise) {
// ...
}
// ...
});
}
}

// Cannot access 'promise' before initialization
new Queue().run(Promise.resolve())


Раньше, const превращался в var и ошибки не было. Это связано с понятием временной мертвой зоны TDZ, которая не возникает у переменных, объявленных через var.

Были и другие ошибки, но они по сути вариации или комбинации тех ошибок, что я привел выше.

👉 Кстатии, размер бандлов уменьшился процентов на 20.

#TypeScript #JavaScript

Подводные камни при переходе с ES5 на ES6 Кросспостинг, Pikabu Publish Bot, Typescript, Javascript, Telegram (ссылка)
Показать полностью 1
Кросспостинг Pikabu Publish Bot Typescript Javascript Telegram (ссылка)
0
9
andrmm
3 месяца назад
IT - Комедия

Немного странностей в JavaScript⁠⁠

Пост взят отсюда: https://t.me/jsProger

🤯 Немного странностей в JavaScript.

Как думаете, что будет выведено в консоль ❓

Немного странностей в JavaScript Javascript, Странности, IT, Telegram (ссылка)

Если вы подумали, что мы получим два false или два true, то вас ждёт сюрприз. Правильный ответ ⬇️

Немного странностей в JavaScript Javascript, Странности, IT, Telegram (ссылка)

ЧТО? 🙌 КАК ЭТО?

JavaScript для сравнения приводит обе стороны равенства к одному типу. Если число начинается с 0, то JS предполагает, что оно написано в восьмеричном формате, и выполняет необходимые преобразования.

018 — недопустимое восьмеричное число (в восьмеричной системе цифры от 0 до 7). А так-как в числе 018 есть восьмёрка, то JS теперь рассматривает его как обычное десятичное, то есть равное 18. Выходит, что '018' == 18 — выражение является истинным.

А вот 017 — допустимое восьмеричное число, поэтому JS представляет его как 8-ричное число 15, потому что 1×8¹ + 7×8⁰ = 15. А строку '017' он рассматривает как десятичное число, в результате чего получается 17. Но 15 не равно 17, поэтому второе выражение неверно.

Заранее прошу извинить: не получается скопировать ссылку на сам пост.

Показать полностью 1
Javascript Странности IT Telegram (ссылка)
2
Партнёрский материал Реклама
specials
specials

Кешбэк прямиком из Римской империи⁠⁠

Да, первая версия кешбэка появилась еще в Античности. Тогда торговцы выдавали таблички — табулы, которые давали скидку на следующую покупку. А вы знаете, сколько табул кешбэка получаете ежемесячно? Давайте посчитаем!

Реклама Реклама. ПАО «Банк ВТБ», ИНН: 7702070139

Калькулятор Выгода
Блог компании
kata.academy
kata.academy
8 месяцев назад

8 причин выучить JavaScript к 2025 году⁠⁠

Популярность JavaScript в рейтинге TIOBE достигла максимума за последние шесть лет. Разбираемся, почему так и зачем учить язык именно сейчас.

8 причин выучить JavaScript к 2025 году Обучение, Javascript, Программирование, Разработка, Код, IT, Telegram (ссылка), Блоги компаний

Доминирование в веб-разработке

На JavaScript написано 98,9% всех сайтов — это основной язык в вебе. Чтобы понять, насколько от него зависит интернет, достаточно вспомнить историю с модулем left-pad, когда 11 строчек удаленного кода на JS привели к коллапсу сети.

Простота доступа

Чтобы кодить на JavaScript, достаточно обычного текстового редактора вроде Notepad++ и веб-браузера — все это запустится даже на среднем ПК или ноутбуке. Покупать мощное железо или апгрейдить старое необязательно. Также для работы с JS есть много песочниц для безопасного кодинга.

Обилие бесплатных материалов

За неполные 30 лет существования по JavaScript накопилась огромная образовательная база: от видеоуроков и форумов до масштабных вики, учебников и профессиональных курсов. А еще JS постоянно развивается: появляются новые фреймворки и библиотеки, которые расширяют возможности программистов.

Кроссплатформенность

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

Разработка полного цикла (Full-Stack)

С появлением Node.js JavaScript стал универсальным инструментом. Платформа позволяет работать как с фронтендом, так и с бэкендом.

Серверная разработка

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

Карьерные возможности

Кроссплатформенность и Full-Stack развязывают руки в выборе направлений для развития. Средняя зарплата специалиста по JavaScript в 2024 году по данным Хабр Карьеры — 225 000 рублей. На старте — 88 000 рублей.

Спрос на разработчиков JS тоже высокий. В октябре по запросу JavaScript на HH представлено 7 680 открытых вакансий в разработке и тестировании. Для сравнения, по запросу HTML — 3 145.

Сообщество программистов

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

Познакомьтесь с начинающими и опытными JS-разработчиками в нашем открытом чате: задавайте вопросы и читайте советы по карьерному пути.

Изучение JavaScript — инвестиция в будущее. С его помощью вы построите успешную карьеру в IT. Мы в Kata Academy обучаем фронтенду на JS за девять месяцев с оплатой после трудоустройства. Как это работает: вы проходите нашу программу, получаете работу с гарантированной зарплатой от 100 000 рублей на старте и только после этого оплачиваете учебу. Оставляйте заявку: расскажем подробнее.

НАЧАТЬ ОБУЧЕНИЕ

Реклама ООО «Ката Академия», ИНН: 7802925162

Показать полностью 1
Обучение Javascript Программирование Разработка Код IT Telegram (ссылка) Блоги компаний
57
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии