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

Арканоид Пикабу

Арканоид, Аркады, Веселая

Играть

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

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

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

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

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

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

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

CSS + Программирование

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

HTML Верстка Javascript IT Web Frontend Программист IT юмор Разработка Python Картинка с текстом Юмор Все
191 пост сначала свежее
2
mars.frontier
mars.frontier
1 месяц назад

Как мы делали мини-игру про ровер на Марсе внутри Telegram WebApp⁠⁠

«Хочется сделать простую карту, чтобы листать её в Telegram». С этого всё и началось. А закончилось — изометрическим движком, авторизацией по WebApp, системой энергии, покупкой участков и боевым ровером с шестью колёсами.

1/3

🚀 С чего всё началось?

В начале всё было очень просто.
Мы сделали простенького бота, о котором я уже как-то тут писал, и бэк рендерил картинки с кусочком карты, где ты находишься.

В целом, даже эта идея была вполне рабочей и первые 300 пользователей с разных источников легко собрались. Мы даже провели на 9 мая конкурс "найди звезду победы" и выплатили победителю небольшой приз :)

Но само собой, что бот - не предел мечтаний, нужно было пилить полноценный мини-апп.

На боте лишь проверили гипотезу, отладили механики, типа уменьшения энергии, подзарядки аккумулятора в течении времени, пока не заходишь в игру.

Первый шаг в сторону мини-аппки - сделали вебстраничку, где можно было листать мышкой или пальцем — просто ради визуализации. Прямоугольная сетка, тайлы, немного стилей. Telegram WebApp проглатывал HTML5 на ура. Тогда не было никакой логики, просто подгрузка текстур и картинка под пальцем.

Вот как это выглядело:

  • Пользователь заходил и видел карту Марса.

  • Никакого взаимодействия — только “глянуть”.

🎮 А потом захотелось интерактивности

Следующим шагом стало добавление изометрии — чтобы выглядело как псевдо-3D. Самое интересное, что даже не потребовалось изменять текстуры. Серьезно :) Они по-прежнему те же самые, квадратные, 64 х 64. И не используется никакой 3д - движок.

вот краткое и понятное объяснение, как строится изометрическая карта из квадратных тайлов:


🧠 Основная идея:

Каждый квадратный тайл поворачивается на 45° и масштабируется по вертикали, чтобы получился ромб (изометрическая проекция). Вместо привычной сетки (x, y) мы рассчитываем экранные координаты (left, top) по формуле:


📐 Формулы для отображения:

При размере одного тайла T:

  • W = T * sqrt(2) — изометрическая ширина (диагональ квадрата).

  • H = W / 2 — изометрическая высота (высота ромба).

  • WX2 = W / 2, HX2 = H / 2 — половинки для смещения от центра.

Переход от логических координат (dx, dy) к пиксельным:

isoX = (dx - dy) * WX2 + centerX; isoY = (dx + dy) * HX2 + centerY;


🧩 Что это даёт:

  • (dx - dy) — смещает тайл по горизонтали.

  • (dx + dy) — смещает тайл по вертикали.

  • centerX, centerY — центр экрана, чтобы карта строилась относительно игрока.


🎯 В результате:

  • Из обычной квадратной сетки (x, y) формируется ромбовидная карта, где видны и горизонтальные, и вертикальные соседние тайлы.

  • Центральная клетка (текущий игрок) — всегда по центру, а остальные располагаются вокруг.

    Ну а дальше уже дело техники - придумали алгоритм перемещения в 8 направлениях: вверх, вниз, влево, вправо, плюс диагонали.

    Подключили ранее обкатанный в чатботе расход энергии за каждый шаг, и разный расход за диагональные движения, в сравнении с линейным. Плюс небольшой рандом :)

    Задали запреты на воду, скалы и занятую клетку, чтобы не было “читов”.

🔐 Само собой - авторизация

Чтобы пользователь не “прыгал” по чужим роверам и участкам, мы внедрили Telegram WebApp InitData (это такая строка с хешем, которую фронт передает нам в бэк, а мы - уже на сервере телеграм с токеном бота валидируем подпись. Если сошлась - то пользователь зашел к нам через телегу. Если нет - скорее всего он просто открыл веб-страницу как сайт, или что-то пытается поломать, подделать :)

Если кратко:

  • Telegram сам отдаёт токен с подписью.

  • Мы проверяем подпись на бэке по HMAC SHA256.

  • Получаем ID пользователя, сохраняем его в сессии.

Теперь всё честно: ровер – только твой, кристаллы – только твои.

🪐 Стало красивее: добавили кристаллы и рамки

Потом появились:

  • Кристаллы на клетках — можно собирать.

  • Подсветка клеток: белая рамка — твоя, красная — чужая.

  • Имена владельцев, чтобы было видно, кто что захватил.

    В планах: Покупка участков за кристаллы. Это было в текстовом боте. И ползая по карте, даже видны купленные тобой (белым) и оппонентами (красным) участки.

⚡️ Оптимизация и загрузка ассетов

Мы поняли, что каждая картинка может тормозить игру на слабом устройстве, и:

  • Добавили прелоадер, который подгружает PNG-шки перед игрой.

  • Сделали показ спиннера на любом действии (движение, загрузка).

  • Кэшируем тайлы и обновляем только при движении.

🤖 Как выглядит сейчас

Игрок:

  • Заходит в Telegram Mini App.

  • Авторизуется за доли секунды.

  • Видит изометрическую карту с ровером, кристаллами, участками, рекламными баннерами.

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

А мы — всё это рисуем прямо в DOM.
Никаких Canvas, WebGL, или тяжелых движков. Только HTML, CSS и немного магии на JS.


💬 Если интересно — покажу, как это выглядит вживую.
Тестить можно тут. А если зайдёт — добавим NFT, фермы и квесты на выживание 😄

Показать полностью 3
[моё] Gamedev Разработка Программирование Telegram Javascript Python Unity Frontend Backend Web Web-программирование Ton HTML CSS Верстка Длиннопост
9
Вопрос из ленты «Эксперты»
tablepedia
5 месяцев назад
Web-технологии

Генерация HTML файлов с помощью Excel и бесплатного OpenOffice Calc⁠⁠

Я в феврале 2025 года работаю над проектом "Генерация HTML файлов с помощью табличного редактора". Напишите, пожалуйста, в комментариях ссылки на похожие проекты. Точнее, на файл табличного редактора для генерации HTML.

[моё] Вопрос Спроси Пикабу Программа Программирование Microsoft Excel HTML Основы HTML Windows Файл Генерация Таблица Сайт IT Web Web-программирование Приложение CSS Дизайн Веб-дизайн Графический дизайн Короткопост Текст
14
maximz
maximz
5 месяцев назад

Frontend girl⁠⁠

Продолжаем делать проект на next js, разбираем структуру проекта, роутинг и создаем компоненты разной сложности

[моё] Программирование IT Сайт Приложение React CSS Javascript Frontend Видео YouTube
5
maximz
maximz
5 месяцев назад

Обычный рабочий день frontend разработчика⁠⁠

Всем привет, окунитесь в обычный рабочий день frontend разработчика. Жена пикабушника делает листинг каталога для онлайн бронирования vr игр

Приятного просмотра, с удовольствием отвечу на все вопросы по теме

Показать полностью
[моё] Стримеры React IT Приложение Web-программирование Программирование Javascript Айтишники Сайт Frontend Разработчики Видео YouTube CSS
3
2
cherkalexander
cherkalexander
6 месяцев назад

Всего несколько строк CSS для плавных переходов между страницами⁠⁠

Я давно не рекомендовал ничего почитать, но эта короткая статья не оставила меня равнодушным.

"Всего несколько строк CSS для плавных переходов между страницами"

  • перевод на хабре

  • оригинал

Я много раз слышал, про View Transitions API и о том, что теперь можно настраивать анимации перехода между страницами, но никогда не пробовал.

В статье автор предлагает сделать переходы между страницами плавными с помощью одной строчки кода.

@View-transition { navigation: auto; }

Чтобы понять о чём говорит автор просто посмотрите прикреплённое видео:

  • или откройте оригинал статьи и воспроизведите видео

  • или же откройте мой блог и попробуйте перейти на одну из последних статей

В SPA приложениях также есть возможность использовать View Transitions API. Можете посмотреть демки в статье: "Введение в View Transitions API".  Анимация реализуется с помощью startViewTransition

document.startViewTransition(() => updateTheDOMSomehow());

При использовании View Transitions API происходит следующее:

  • делается снимок текущего состояния страницы

  • выполняется обновление DOM (updateTheDOMSomehow)

  • делается снимок нового состояния страницы

  • переход между этими состояниями анимируется с помощью дефолтного плавного затухания или с помощью кастомной анимации

Более сложные примеры  можно узнать отсюда:

  • The View Transitions API And Delightful UI Animations (Part 1)

  • The View Transitions API And Delightful UI Animations (Part 2)

  • Никита Дубко. По-настоящему красивые переходы средствами браузера

Для блогов на Astro:

  • Документация View Transitions в доке Astro

  • Как починить темную и светлую темы после внедрения view transitions — читать тут

Показать полностью
Программирование CSS HTML Javascript IT Разработка Видео Без звука
1
AlexeyPerfilev
AlexeyPerfilev
8 месяцев назад

Исповедь фронтендера: Когда твой код – это комедия ошибок⁠⁠

Привет, Пикабушники! Сегодня я хочу поделиться с вами своими приключениями в мире фронтенд-разработки. Готовьтесь смеяться и плакать одновременно!

1. CSS – мой личный босс из ада

Кто сказал, что CSS прост? Это как игра "Твистер", только вместо конечностей ты двигаешь div'ы и span'ы. Один неверный ход – и твой сайт выглядит как произведение современного искусства. Абстракционизм, знаете ли.

2. JavaScript: когда твой код живет своей жизнью

Я: пишу простую функцию JavaScript: "Хм, а что если я буду работать только по четным вторникам?" Я: в панике проверяю документацию JavaScript: "Шучу! Я просто забыл закрывающую скобку. Упс!"

3. Совместимость браузеров – мой персональный квест

Разработка для разных браузеров – это как готовка для семьи с кучей аллергий. Internet Explorer – это дядя, который не ест ничего после 1995 года.

4. Фреймворки: выбери меня! Нет, меня!

React, Vue, Angular... Иногда мне кажется, что я на шоу "Холостяк", только вместо роз раздаю свое время и нервные клетки.

5. Отладка: детективная история с открытым финалом

Я – Шерлок Холмс мира кода. Мой Watson – это консоль браузера. Вместе мы расследуем загадочное исчезновение рабочего кода после "небольших изменений".

Вывод

Если вы думаете, что фронтенд – это просто красивые кнопочки и анимации, то вы глубоко заблуждаетесь. Это целый мир, полный приключений, разочарований и неожиданных открытий. Но знаете что? Я бы не променял это ни на что другое. Потому что в какой еще профессии можно почувствовать себя и художником, и детективом, и укротителем строптивых браузеров одновременно?

P.S. Если вы фронтендер и узнали себя в этом посте – добро пожаловать в клуб! У нас есть печеньки и бесконечный запас кофе.

Показать полностью
[моё] Разработка Программирование IT Frontend Javascript CSS Текст
5
0
Ragnoboy
Ragnoboy
9 месяцев назад
Серия BZC - просто о веб-технологиях

Просто о стилях⁠⁠

Просто о стилях CSS, Программирование, Рекомендации, IT юмор, Саморазвитие, Длиннопост

JavaScript — это мозг веб-разработки, то CSS — это, наверное, душа... Та самая, которая иногда решает уйти в астрал, оставляя вас разбираться с багами, которые проявляются только на старых версиях Internet Explorer. В этой статье я расскажу, как остаться в здравом уме, когда весь ваш мир оборачивается вокруг float, flex, grid и магии, известной как "как заставить это выглядеть одинаково во всех браузерах". Поехали!

1. Флексбокс: или как заставить дивы слушаться

Флексбокс — это как дрессировка котов: когда он работает, это чудо, а когда не работает — всё, что остаётся, это покачать головой и сказать "ладно, попробуем ещё раз". Но давайте честно: display: flex — это одно из тех редких мест в CSS, где можно почувствовать контроль над ситуацией. Вот див, вот его ребенок, вот другой ребенок, и теперь они выстраиваются в линейку, как солдаты. Или нет?

Главное, помните: если что-то не получается, добавьте justify-content: center, затем align-items: center, а потом просто ждите, пока всё заработает. Иногда создается впечатление, что флексбокс больше похож на детскую загадку: "если на одной стороне слона добавить зебру, то выравнивание должно быть по центру, но, только если отнять медведя".

2. Грид: или как строить дворцы из дивов

Грид — это тот инструмент, который позволяет строить веб-сайты, как строят города в SimCity. Сетка, оси, области — все строго и по правилам, пока вы не решите добавить что-то "спонтанное" и не поймёте, что весь ваш дизайн начал выглядеть, как пачка картофельных чипсов после вечеринки.

Грид делает возможным то, что раньше казалось невозможным: размещение блоков в разных частях экрана без магии с margin-left: -9999px. Но не стоит обманываться: как только вы решите, что наконец всё поняли, придет браузер Safari и скажет: "Нет, здесь у нас по-прежнему всё выглядит как желе".

Процесс работы с grid-template-areas — это как расставить мебель в квартире, где стены внезапно меняют местами каждую пятницу. Но есть и хорошая новость — теперь, чтобы центрировать элемент по горизонтали и вертикали, достаточно лишь пары строчек кода. А раньше... ну, вы знаете.

3. Проклятые float: не пробуйте это дома

float — это тот старый дедушка CSS, который где-то в углу бормочет о временах, когда всё было лучше и таблицы для вёрстки были нормой. Когда-то float был нашим единственным спасением, чтобы текст обтекал изображение, и чтобы дива хоть как-то держались рядом друг с другом. Но давайте честно: когда float "ломался", его починка могла вызывать нервный тик.

Здесь приходила классическая комбинация: clear: both;, что-то вроде спасительного плаща, который кричит: "Да пусть все отпустят друг друга и ведут себя нормально!".

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

4. Центрирование: хроника попыток и страданий

Центрирование элемента по горизонтали — это такая часть CSS, которая заставляла многих из нас задуматься о своём жизненном пути. Вертикальное центрирование — это уже отдельная глава в энциклопедии адской пытки. Каждый фронтенд-разработчик хотя бы раз проводил ночь в попытках заставить текст посередине блока быть действительно по центру, а не "почти по центру, но с лёгким смещением на пару пикселей".

Всё изменилось с приходом flexbox. Это как будто вам дали ключ от всех дверей: align-items: center; и justify-content: center;. Но всё же, иногда этот метод не работает, и тогда старый добрый transform: translate(-50%, -50%); выходит на арену, как герой в последнюю минуту.

5. CSS-переменные: "где моя тема?"

CSS-переменные — это как старые добрые глобальные переменные в JavaScript, но с немного меньшим шансом сломать всё к чёртовой бабушке. Если раньше вы меняли цвет на сайте и чувствовали, что нужно переименовать каждую строчку с #ff6347, то теперь --main-color пришёл вам на помощь. Просто представьте: вы можете одним махом изменить все кнопки на сайте с томатного на спокойный синий! С переменными главное — не переусердствовать, чтобы не превратиться в алхимика, который забыл, какой ингредиент за что отвечает.

6. Анимации: потому что статично — это скучно

С приходом @keyframes все ваши мечты об анимациях стали возможны. Теперь можно сделать так, чтобы див плавно выезжал справа, вращался и исчезал, как иллюзионист в цирке. Правда, спустя пару часов можно заметить, что сайт превратился в нечто, напоминающее анимационное шоу на утреннике в детском саду, где всё прыгает, мерцает и исчезает.

Главное правило здесь — использовать анимации с осторожностью. В противном случае, пользователь вашего сайта может почувствовать себя как на дискотеке 80-х — куча светящихся элементов, которые хотят украсть его внимание. Но когда всё сделано аккуратно — эффект просто магический!

7. Как справляться с непослушными элементами? Запретить!

Иногда лучший способ справиться с упрямым элементом — просто запретить ему делать что угодно. overflow: hidden; — это как родительский контроль, который говорит: "Хватит вылезать за пределы своей коробки, пожалуйста". А для элементов, которые любят "убегать", всегда есть position: absolute; или position: fixed; — они словно ремни безопасности, которые держат всё на своих местах, даже если мир рушится.

И в конце, CSS — это как дикий, необузданный сад: если не ухаживать, всё превратится в хаос. Но если вы научитесь понимать флексбокс, грид, анимации и даже старый добрый float, вы сможете создать нечто прекрасное. Просто помните: главное — терпение, чувство юмора и понимание того, что иногда вам придется добавлять !important и просто жить с этим.

Так что не теряйте надежды, даже если ваш макет внезапно сломался — каждый опытный разработчик знает, что это часть пути. Будьте стойкими, как display: block, и гибкими, как display: flex, и тогда CSS вам не только покорится, но и станет вашим союзником.

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

Показать полностью
[моё] CSS Программирование Рекомендации IT юмор Саморазвитие Длиннопост
0
3
cherkalexander
cherkalexander
9 месяцев назад

Соседние селекторы в CSS⁠⁠

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

Тут я подумал, что в первый раз в жизни смогу использовать "Родственные селекторы" ~, чтобы пофиксить стили если оба элемента отображаются на странице:

.new-feature-element ~ .element-with-scroll {
// тут фиксим стили, они применяются к .element-with-scroll
}



Посмотрел на разметку, понял что .element-with-scroll всегда идёт непосредственно после .new-feature-element поэтому можно поменять на +:


.new-feature-element + .element-with-scroll {
// тут фиксим стили, они применяются к .element-with-scroll
}


Основные различия + и ~:

- + выбирает только один элемент, который непосредственно следует за первым элементом.
- ~ выбирает все элементы, которые следуют за первым элементом, но не обязательно сразу за ним.

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

https://t.me/cherkashindev/226

UPD:

cherkashin.dev

cherkashin.dev

cherkashin.dev

Показать полностью
[моё] CSS Программирование IT HTML Текст
3
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии