[html]
<!-- HTML --><div class="warframe-map">
<div class="particles-container"></div>
<svg class="map-lines" viewBox="0 0 100 100" preserveAspectRatio="none"></svg>
<!-- Карта -->
<div class="map-grid">
<!-- Планеты и спутники -->
<div class="planet unlocked" data-planet="mercury" style="left: 15%; top: 40%;">
<div class="planet-icon"></div>
<div class="planet-name">Меркурий</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Меркурий</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Начальная планета</p>
</div>
</div>
<div class="planet unlocked" data-planet="venus" style="left: 25%; top: 30%;">
<div class="planet-icon"></div>
<div class="planet-name">Венера</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Венера</h3>
<p>Управляется: Корпус</p>
<p>Требуется: Завершить миссию на Меркурии</p>
</div>
</div>
<div class="planet unlocked" data-planet="earth" style="left: 40%; top: 50%;">
<div class="planet-icon"></div>
<div class="planet-name">Земля</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Земля</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Завершить миссию на Венере</p>
</div>
</div>
<div class="planet unlocked" data-planet="lua" style="left: 45%; top: 55%;">
<div class="planet-icon"></div>
<div class="planet-name">Луа</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Луа</h3>
<p>Управляется: Орокин</p>
<p>Требуется: Доступ через Землю</p>
</div>
</div>
<div class="planet unlocked" data-planet="mars" style="left: 55%; top: 35%;">
<div class="planet-icon"></div>
<div class="planet-name">Марс</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Марс</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Убить босса на Земле</p>
</div>
</div>
<div class="planet locked" data-planet="phobos" style="left: 60%; top: 30%;">
<div class="planet-icon"></div>
<div class="planet-name">Фобос</div>
<div class="planet-status">
<i class="fas fa-times"></i>
</div>
<div class="planet-info">
<h3>Фобос</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Убить босса на Марсе</p>
</div>
</div>
<div class="planet locked" data-planet="deimos" style="left: 65%; top: 40%;">
<div class="planet-icon"></div>
<div class="planet-name">Деймос</div>
<div class="planet-status">
<i class="fas fa-times"></i>
</div>
<div class="planet-info">
<h3>Деймос</h3>
<p>Управляется: Инфестировано</p>
<p>Требуется: Убить босса на Марсе</p>
</div>
</div>
<div class="planet unlocked" data-planet="ceres" style="left: 70%; top: 50%;">
<div class="planet-icon"></div>
<div class="planet-name">Церера</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Церера</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Завершить миссию на Марсе</p>
</div>
</div>
<div class="planet unlocked" data-planet="jupiter" style="left: 80%; top: 60%;">
<div class="planet-icon"></div>
<div class="planet-name">Юпитер</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Юпитер</h3>
<p>Управляется: Корпус</p>
<p>Требуется: Завершить миссию на Церере</p>
</div>
</div>
<div class="planet unlocked" data-planet="europa" style="left: 85%; top: 65%;">
<div class="planet-icon"></div>
<div class="planet-name">Европа</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Европа</h3>
<p>Управляется: Корпус</p>
<p>Требуется: Завершить миссию на Юпитере</p>
</div>
</div>
<div class="planet unlocked" data-planet="saturn" style="left: 60%; top: 70%;">
<div class="planet-icon"></div>
<div class="planet-name">Сатурн</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Сатурн</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Завершить миссию на Европе</p>
</div>
</div>
<div class="planet unlocked" data-planet="uranus" style="left: 40%; top: 80%;">
<div class="planet-icon"></div>
<div class="planet-name">Уран</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Уран</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Завершить миссию на Сатурне</p>
</div>
</div>
<div class="planet unlocked" data-planet="neptune" style="left: 20%; top: 70%;">
<div class="planet-icon"></div>
<div class="planet-name">Нептун</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Нептун</h3>
<p>Управляется: Корпус</p>
<p>Требуется: Завершить миссию на Уране</p>
</div>
</div>
<div class="planet unlocked" data-planet="pluto" style="left: 10%; top: 60%;">
<div class="planet-icon"></div>
<div class="planet-name">Плутон</div>
<div class="planet-status">
<i class="fas fa-check"></i>
</div>
<div class="planet-info">
<h3>Плутон</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Завершить миссию на Нептуне</p>
</div>
</div>
<div class="planet locked" data-planet="sedna" style="left: 5%; top: 50%;">
<div class="planet-icon"></div>
<div class="planet-name">Седна</div>
<div class="planet-status">
<i class="fas fa-times"></i>
</div>
<div class="planet-info">
<h3>Седна</h3>
<p>Управляется: Гринир</p>
<p>Требуется: Убить босса на Плутоне</p>
</div>
</div>
<div class="planet locked" data-planet="eris" style="left: 15%; top: 20%;">
<div class="planet-icon"></div>
<div class="planet-name">Эрида</div>
<div class="planet-status">
<i class="fas fa-times"></i>
</div>
<div class="planet-info">
<h3>Эрида</h3>
<p>Управляется: Инфестировано</p>
<p>Требуется: Убить босса на Уране</p>
</div>
</div>
<div class="planet locked" data-planet="void" style="left: 50%; top: 20%;">
<div class="planet-icon"></div>
<div class="planet-name">Бездна</div>
<div class="planet-status">
<i class="fas fa-times"></i>
</div>
<div class="planet-info">
<h3>Бездна</h3>
<p>Управляется: Орокин</p>
<p>Требуется: Ключи Орокин</p>
</div>
</div>
</div>
</div>
<svg style="position: absolute; width: 0; height: 0;">
<filter id="particle-filter">
<feGaussianBlur in="SourceGraphic" stdDeviation="4" result="blur"/>
<feColorMatrix in="blur" mode="matrix"
values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 18 -7"/>
</filter>
</svg>
<!-- Контейнер для линий -->
<svg class="map-lines" width="100%" height="100%"></svg>
<!-- Центральный элемент с лучами -->
<div class="central-radial"></div>
<style>
/* CSS */
.warframe-map {
background:
linear-gradient(45deg, rgba(50, 50, 50, 0.1) 25%, transparent 25%, transparent 75%, rgba(50, 50, 50, 0.1) 75%),
linear-gradient(45deg, rgba(50, 50, 50, 0.1) 25%, transparent 25%, transparent 75%, rgba(50, 50, 50, 0.1) 75%);
background-size: 20px 20px;
background-color: #1a1a2a;
border: 2px solid #3a3a5a;
border-radius: 10px;
padding: 20px;
position: relative;
overflow: hidden;
box-shadow: 0 0 20px rgba(255, 85, 0, 0.1);
}
/* Сетка карты */
.map-grid {
position: relative;
width: 100%;
height: 600px; /* Настройте под свои нужды */
background: rgba(0, 0, 0, 0.5);
border: 1px solid #444466;
}
/* Планета */
.planet {
position: absolute;
width: 100px;
height: 100px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
transform: translate(-50%, -50%); /* Центрирование */
}
/* Иконка планеты */
.planet-icon {
width: 50px;
height: 50px;
background: rgba(255, 255, 255, 0.1);
border: 1px solid #ff5500;
border-radius: 50%;
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { transform: scale(0.95); opacity: 0.7; }
50% { transform: scale(1); opacity: 1; }
100% { transform: scale(0.95); opacity: 0.7; }
}
/* Название планеты */
.planet-name {
margin-top: 5px;
color: #e0e0ff;
font-size: 0.9em;
text-align: center;
}
/* Статус планеты */
.planet-status {
margin-top: 5px;
font-size: 1.2em;
}
.planet-status .fa-check {
color: #00ff00;
text-shadow: 0 0 5px #00ff00;
}
.planet-status .fa-times {
color: #ff0000;
opacity: 0.5;
}
/* Информация о планете */
.planet-info {
position: absolute;
top: 120%;
left: 50%;
transform: translateX(-50%);
background: rgba(0, 0, 0, 0.8);
border: 1px solid #444466;
padding: 10px;
border-radius: 5px;
opacity: 0;
visibility: hidden;
transition: all 0.3s ease;
width: 200px;
text-align: center;
z-index: 10;
}
.planet:hover .planet-info {
opacity: 1;
visibility: visible;
}
.planet-info h3 {
margin: 0;
color: #ff8844;
text-transform: uppercase;
letter-spacing: 2px;
}
.planet-info p {
margin: 5px 0 0;
color: #e0e0ff;
font-size: 0.9em;
}
/* Линии соединения */
.map-lines {
position: relative;
top: auto;
left: 0;
pointer-events: none; /* Чтобы не мешали взаимодействию */
}
.map-lines path {
stroke: #ff5500;
stroke-width: 2;
stroke-dasharray: 5;
fill: none;
animation: lineFlow 1s linear infinite;
}
@keyframes lineFlow {
0% { stroke-dashoffset: 0; }
100% { stroke-dashoffset: 10; }
}
/* Центральный элемент с лучами */
.central-radial {
position: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
background: #ff5500;
border-radius: 50%;
transform: translate(-50%, -50%);
box-shadow: 0 0 20px rgba(255, 85, 0, 0.5);
animation: pulse 2s infinite;
}
.central-radial::before,
.central-radial::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 100%;
border: 1px solid #ff5500;
border-radius: 50%;
transform: translate(-50%, -50%);
animation: radialPulse 3s infinite;
}
.central-radial::before {
width: 200%;
height: 200%;
animation-delay: 0.5s;
}
.central-radial::after {
width: 300%;
height: 300%;
animation-delay: 1s;
}
@keyframes radialPulse {
0% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
100% { opacity: 0; transform: translate(-50%, -50%) scale(1.5); }
}
.locked .planet-icon {
filter: grayscale(100%);
border-color: #666 !important;
}
.locked .planet-name {
color: #666 !important;
}
.locked-notice {
color: #ff4444;
font-size: 0.8em;
margin-top: 5px;
text-shadow: 0 0 5px #ff0000;
}
/* Анимация линий при наведении */
.connection-line {
transition: all 0.3s ease;
}
.particle:nth-child(odd) {
animation-timing-function: ease-in-out;
}
.particle::after {
content: '';
position: absolute;
width: 100%;
height: 100%;
background: inherit;
border-radius: inherit;
animation: particlePulse 1s infinite;
}
@keyframes particlePulse {
0% { transform: scale(1); opacity: 0.8; }
50% { transform: scale(1.5); opacity: 0.4; }
100% { transform: scale(1); opacity: 0.8; }
}
.particles-container {
width: 100%;
height: 650px;
position: absolute;
}
/* Стили для частиц */
.particle {
position: absolute;
width: 3px;
height: 3px;
background: #ff5500;
border-radius: 50%;
pointer-events: none;
mix-blend-mode: screen;
animation: particleMove 3s linear infinite;
opacity: 0;
}
/* Дополнительные стили для блокированных планет */
.locked .planet-icon {
filter: grayscale(100%);
border-color: #666 !important;
}
.locked .planet-name {
color: #666 !important;
}
.locked-notice {
color: #ff4444;
font-size: 0.8em;
margin-top: 5px;
text-shadow: 0 0 5px #ff0000;
}
.map-lines {
position: absolute;
top: 0;
left: 0;
pointer-events: none; /* Чтобы не мешали взаимодействию */
}
.map-lines path {
stroke: #ff5500;
stroke-width: 2;
stroke-dasharray: 5;
fill: none;
animation: lineFlow 1s linear infinite;
}
iframe {
height: 700px !important;
}
@keyframes particleMove {
0% {
opacity: 0.8;
transform: translate(-50%, -50%) scale(1);
}
100% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.5)
translate(var(--tx), var(--ty));
}
}
</style>
<script>
// JavaScript
const planets = [
{ name: "mercury", x: 15, y: 40, unlocked: true, faction: "Гринир", requirement: "Начальная планета", connections: ["venus"] },
{ name: "venus", x: 25, y: 30, unlocked: true, faction: "Корпус", requirement: "Завершить миссию на Меркурии", connections: ["mercury", "earth"] },
{ name: "earth", x: 40, y: 50, unlocked: true, faction: "Гринир", requirement: "Завершить миссию на Венере", connections: ["venus", "lua", "mars"] },
{ name: "lua", x: 45, y: 55, unlocked: true, faction: "Орокин", requirement: "Доступ через Землю", connections: ["earth"] },
{ name: "mars", x: 55, y: 35, unlocked: true, faction: "Гринир", requirement: "Убить босса на Земле", connections: ["earth", "phobos", "deimos"] },
{ name: "phobos", x: 60, y: 30, unlocked: false, faction: "Гринир", requirement: "Убить босса на Марсе", connections: ["mars"] },
{ name: "deimos", x: 65, y: 40, unlocked: false, faction: "Инфестировано", requirement: "Убить босса на Марсе", connections: ["mars"] },
{ name: "ceres", x: 70, y: 50, unlocked: true, faction: "Гринир", requirement: "Завершить миссию на Марсе", connections: ["mars", "jupiter"] },
{ name: "jupiter", x: 80, y: 60, unlocked: true, faction: "Корпус", requirement: "Завершить миссию на Церере", connections: ["ceres", "europa"] },
{ name: "europa", x: 85, y: 65, unlocked: true, faction: "Корпус", requirement: "Завершить миссию на Юпитере", connections: ["jupiter", "saturn"] },
{ name: "saturn", x: 60, y: 70, unlocked: true, faction: "Гринир", requirement: "Завершить миссию на Европе", connections: ["europa", "uranus"] },
{ name: "uranus", x: 40, y: 80, unlocked: true, faction: "Гринир", requirement: "Завершить миссию на Сатурне", connections: ["saturn", "neptune", "eris"] },
{ name: "neptune", x: 20, y: 70, unlocked: true, faction: "Корпус", requirement: "Завершить миссию на Уране", connections: ["uranus", "pluto"] },
{ name: "pluto", x: 10, y: 60, unlocked: true, faction: "Гринир", requirement: "Завершить миссию на Нептуне", connections: ["neptune", "sedna"] },
{ name: "sedna", x: 5, y: 50, unlocked: false, faction: "Гринир", requirement: "Убить босса на Плутоне", connections: ["pluto"] },
{ name: "eris", x: 15, y: 20, unlocked: false, faction: "Инфестировано", requirement: "Убить босса на Уране", connections: ["uranus"] },
{ name: "void", x: 50, y: 20, unlocked: false, faction: "Орокин", requirement: "Ключи Орокин", connections: [] }
];
// Функция генерации частиц
function generateParticle() {
const container = document.querySelector('.particles-container');
const particle = document.createElement('div');
particle.className = 'particle';
// Начальные координаты центра
const centerX = 50;
const centerY = 50;
// Случайный угол и расстояние
const angle = Math.random() * Math.PI * 2;
const distance = 30 + Math.random() * 50;
// Цвета из палитры
const colors = ['#ff5500', '#9c27b0', '#00bcd4', '#ffeb3b'];
particle.style.background = colors[Math.floor(Math.random() * colors.length)];
// Параметры анимации
particle.style.setProperty('--tx', `${Math.cos(angle) * distance}%`);
particle.style.setProperty('--ty', `${Math.sin(angle) * distance}%`);
// Позиционирование
particle.style.left = `${centerX}%`;
particle.style.top = `${centerY}%`;
// Размер и задержка
particle.style.width = `${2 + Math.random() * 3}px`;
particle.style.height = particle.style.width;
particle.style.animationDelay = `${Math.random() * 2}s`;
container.appendChild(particle);
// Удаление после анимации
setTimeout(() => particle.remove(), 3000);
}
// Запуск генерации частиц
function startParticles() {
setInterval(generateParticle, 100);
}
// Инициализация после загрузки
document.addEventListener('DOMContentLoaded', () => {
startParticles();
// Добавляем свечение при наведении на центральный узел
const centralNode = document.querySelector('.central-radial');
centralNode.addEventListener('mouseover', () => {
document.querySelectorAll('.particle').forEach(p => {
p.style.transform += ' scale(1.5)';
});
});
});
// Инициализация карты
document.addEventListener('DOMContentLoaded', () => {
const svg = document.querySelector('.map-lines');
// Создание соединительных линий
planets.forEach(planet => {
planet.connections.forEach(connection => {
const target = planets.find(p => p.name === connection);
if(target) {
const line = document.createElementNS("http://www.w3.org/2000/svg", "path");
line.setAttribute('d', `M ${planet.x}% ${planet.y}% L ${target.x}% ${target.y}%`);
line.classList.add('connection-line');
line.dataset.connection = `${planet.name}-${target.name}`;
svg.appendChild(line);
}
});
});
// Обработчики событий для планет
document.querySelectorAll('.planet').forEach(planetElement => {
const planetName = planetElement.dataset.planet;
const planetData = planets.find(p => p.name === planetName);
// Анимация при наведении
planetElement.addEventListener('mouseover', () => {
// Подсветка связанных линий
document.querySelectorAll(`path[data-connection*="${planetName}"]`).forEach(line => {
line.style.stroke = '#ffaa00';
line.style.strokeWidth = '3';
});
});
planetElement.addEventListener('mouseout', () => {
document.querySelectorAll(`path[data-connection*="${planetName}"]`).forEach(line => {
line.style.stroke = '#ff5500';
line.style.strokeWidth = '2';
});
});
// Динамическое обновление информации
if(planetData) {
const infoElement = planetElement.querySelector('.planet-info');
infoElement.innerHTML = `
<h3>${planetElement.querySelector('.planet-name').textContent}</h3>
<p>Управляется: ${planetData.faction}</p>
<p>Требуется: ${planetData.requirement}</p>
${!planetData.unlocked ? '<div class="locked-notice">ДОСТУП ЗАКРЫТ</div>' : ''}
`;
}
});
});
// Инициализация частиц
startParticles();
// Обработчик для центрального узла
const centralNode = document.querySelector('.central-radial');
// Добавляем свечение при наведении на центральный узел
const centralNode = document.querySelector('.central-radial');
centralNode.addEventListener('mouseover', () => {
document.querySelectorAll('.particle').forEach(p => {
p.style.transform += ' scale(1.5)';
});
});
</script>
[/html]
- Подпись автора
Оружие: акцельтра Питомец: кават
Оружие: споромёт Питомец: кубрау