Дата: Понедельник, 01.09.2025, 02:42 | Сообщение # 1 |
|
Написал: Начинающий
Автор темы
Мурчанн
не в сети
Сообщений: 101
Ну что ж, если говорить по чесноку, это, наверное, самый болезненный информер , который я когда-либо создавал. 😅 Но я смог исправить все проблемы и довести его до стабильной работы.В нём масса визуальных эффектов: При наведении происходит анимация рейтинга , как на шкале голосования. Это косвенно показывает, что информер относится к рейтингу пользователей. Аватар пользователя закруглён, а число каждого пользователя отображается в отдельном кружочке. При наведении на аватар он подсвечивается и слегка увеличивается, как будто приглашает к взаимодействию. Стрелка справа изначально невидима, но стоит навести курсор на правую часть блока , она появляется, анимационно смещается и меняет цвет. Клик по стрелке ведёт прямо в профиль автора. Присутствует звездочка, которая также намекает на характер информера, она немного вращается при наведении, подчёркивая, что здесь происходит голосование.Если присмотреться внимательнее, видно, что продумано множество мелких визуальных деталей. И чтобы всё это работало одновременно и выглядело аккуратно, пришлось потратить немало времени. Пример блока Инормера с белым номером Код
<style> /* Общий контейнер */ .spa { position: relative; display: flex; align-items: center; margin: 4px 0; padding: 6px 8px; border-radius: 8px; background: #222; overflow: hidden; color: #fff; font-family: Arial, sans-serif; transition: background 0.2s ease; } .spa:hover { background: #2a2a2a; } /* Полоска слева */ .spa::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px; background: var(--stripe-color, #4b0082); transition: width 0.4s ease, opacity 0.4s ease; opacity: 0.8; } .spa:hover::before { width: 100%; opacity: 0.15; } /* Левая часть (аватар + ник + роль) */ .informer-left { display: flex; align-items: center; gap: 12px; position: relative; z-index: 1; /* выше полоски */ } /* Аватарка */ .infsimg1 { border-radius: 50%; box-shadow: 0 0 4px rgba(0,0,0,0.4); width: 36px; height: 36px; transition: transform 0.2s ease; } .infsimg1:hover { transform: scale(1.05); } /* Кружок с номером над аватаркой */ .avatar-number { position: absolute; top: -4px; right: -4px; width: 16px; height: 16px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: bold; box-shadow: 0 1px 3px rgba(0,0,0,0.5); z-index: 2; } /* Варианты фона */ .avatar-number-red { background: red; color: #fff; } .avatar-number-white { background: #fff; color: #000; } /* Текст и роль */ .informer-text { display: flex; flex-direction: column; font-size: 12px; } .username-link { color: #fff; text-decoration: none; font-weight: bold; transition: color 0.2s ease, text-shadow 0.2s ease; } .username-link:hover { text-decoration: underline; color: #ffd700; text-shadow: 0 0 4px rgba(255,215,0,0.6); } .user-role { font-size: 10px; color: #aaa; } /* Правая часть (репутация + стрелка) */ .informer-right { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); display: flex; align-items: center; gap: 4px; flex-shrink: 0; /* не сжимать */ } /* Репутация */ .positive { display: flex; align-items: center; justify-content: center; padding: 4px 8px; font-size: 11px; font-weight: 500; color: #fff; border-radius: 12px; background: linear-gradient(135deg, #4b0082, #7d3c98); box-shadow: 0 2px 6px rgba(0,0,0,0.2); cursor: pointer; transition: background 0.2s ease, opacity 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; flex-shrink: 0; position: relative; } .positive::before { content: "⭐"; font-size: 11px; margin-right: 3px; display: inline-block; transition: transform 0.3s ease; } .positive:hover { opacity: 0.85; box-shadow: 0 2px 6px rgba(0,0,0,0.3); background: linear-gradient(135deg, #6a0080, #a14ebf); } .positive:hover::before { transform: rotate(-20deg) scale(1.2); } /* Стрелка */ .informer-arrow { font-size: 14px; color: #9b59b6; opacity: 0; text-decoration: none; display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; transition: transform 0.3s ease, opacity 0.3s ease; } .spa:hover .informer-arrow { transform: translateX(3px) scale(1.1); opacity: 1; } </style> <!-- Пример блока с белым номером --> <div class="spa" style="--stripe-color:#4b0082;"> <div class="informer-left"> <div style="position: relative;"> <img class="infsimg1" src="$AVATAR_URL$" alt="$USERNAME$"> <div class="avatar-number avatar-number-white">$NUMBER$</div> <!-- белый --> </div> <div class="informer-text"> <a href="$PROFILE_URL$" class="username-link" title="$USERNAME$">$USERNAME$</a> <span class="user-role">Автор</span> </div> </div> <div class="informer-right"> <span class="positive">$REPUTATION$</span> <a href="$PROFILE_URL$" class="informer-arrow">➜</a> </div> </div>
Пример блока с красным номером Код
<style> /* Общий контейнер */ .spa { position: relative; display: flex; align-items: center; margin: 4px 0; padding: 6px 8px; border-radius: 8px; background: #222; overflow: hidden; color: #fff; font-family: Arial, sans-serif; transition: background 0.2s ease; } .spa:hover { background: #2a2a2a; } /* Полоска слева */ .spa::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px; background: var(--stripe-color, #4b0082); transition: width 0.4s ease, opacity 0.4s ease; opacity: 0.8; } .spa:hover::before { width: 100%; opacity: 0.15; } /* Левая часть (аватар + ник + роль) */ .informer-left { display: flex; align-items: center; gap: 12px; position: relative; z-index: 1; /* выше полоски */ } /* Аватарка */ .infsimg1 { border-radius: 50%; box-shadow: 0 0 4px rgba(0,0,0,0.4); width: 36px; height: 36px; transition: transform 0.2s ease; } .infsimg1:hover { transform: scale(1.05); } /* Кружок с номером над аватаркой */ .avatar-number { position: absolute; top: -4px; right: -4px; width: 16px; height: 16px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: bold; box-shadow: 0 1px 3px rgba(0,0,0,0.5); z-index: 2; } /* Варианты фона */ .avatar-number-red { background: red; color: #fff; } .avatar-number-white { background: #fff; color: #000; } /* Текст и роль */ .informer-text { display: flex; flex-direction: column; font-size: 12px; } .username-link { color: #fff; text-decoration: none; font-weight: bold; transition: color 0.2s ease, text-shadow 0.2s ease; } .username-link:hover { text-decoration: underline; color: #ffd700; text-shadow: 0 0 4px rgba(255,215,0,0.6); } .user-role { font-size: 10px; color: #aaa; } /* Правая часть (репутация + стрелка) */ .informer-right { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); display: flex; align-items: center; gap: 4px; flex-shrink: 0; /* не сжимать */ } /* Репутация */ .positive { display: flex; align-items: center; justify-content: center; padding: 4px 8px; font-size: 11px; font-weight: 500; color: #fff; border-radius: 12px; background: linear-gradient(135deg, #4b0082, #7d3c98); box-shadow: 0 2px 6px rgba(0,0,0,0.2); cursor: pointer; transition: background 0.2s ease, opacity 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; flex-shrink: 0; position: relative; } .positive::before { content: "⭐"; font-size: 11px; margin-right: 3px; display: inline-block; transition: transform 0.3s ease; } .positive:hover { opacity: 0.85; box-shadow: 0 2px 6px rgba(0,0,0,0.3); background: linear-gradient(135deg, #6a0080, #a14ebf); } .positive:hover::before { transform: rotate(-20deg) scale(1.2); } /* Стрелка */ .informer-arrow { font-size: 14px; color: #9b59b6; opacity: 0; text-decoration: none; display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; transition: transform 0.3s ease, opacity 0.3s ease; } .spa:hover .informer-arrow { transform: translateX(3px) scale(1.1); opacity: 1; } </style> <!-- Пример блока с красным номером --> <div class="spa" style="--stripe-color:#4b0082;"> <div class="informer-left"> <div style="position: relative;"> <img class="infsimg1" src="$AVATAR_URL$" alt="$USERNAME$"> <div class="avatar-number avatar-number-red">$NUMBER$</div> <!-- красный --> </div> <div class="informer-text"> <a href="$PROFILE_URL$" class="username-link" title="$USERNAME$">$USERNAME$</a> <span class="user-role">Автор</span> </div> </div> <div class="informer-right"> <span class="positive">$REPUTATION$</span> <a href="$PROFILE_URL$" class="informer-arrow">➜</a> </div> </div>
Скрипт Код
<script> document.addEventListener("DOMContentLoaded", () => { // цвета немецкого флага const colors = ["#000000","#ff0000","#ffcc00"]; const blocks = document.querySelectorAll('.spa'); blocks.forEach((block, index) => { block.style.setProperty('--stripe-color', colors[index % colors.length]); }); }); </script>
Код
Скрипт необходимо вставлять в конце шаблона главной страницы форума, перед закрывающим тегом </body> . Это важно, чтобы все эффекты работали корректно. Не стоит помещать скрипт внутрь информера, так как движок форума может его блокировать, и браузер просто не сможет его обработать.
Прикрепления:
1565244.jpg
(40.4 Kb)
·
5170895.jpg
(43.7 Kb)
Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.
Дата: Понедельник, 01.09.2025, 03:04 | Сообщение # 2 |
|
Написал: Новичок
Всё это выглядит на миллион, но зачем так себя нагружать? Вряд ли кто-то оценит все эти усилия.
Сообщение отредактировал Mihaela - Понедельник, 01.09.2025, 03:04
Или вот это... «Ну всё. До вечера. Чмоки.» Ну какие, нахер, чмоки?! Хочешь поцеловать — поцелуй.
Дата: Понедельник, 01.09.2025, 17:35 | Сообщение # 3 |
|
Написал: Новичок
Цитата Mihaela (
)
Всё это выглядит на миллион, но зачем так себя нагружать? Вряд ли кто-то оценит все эти усилия.
Не для широкой публики.