Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta http-equiv="X-UA-Compatible" content="IE=11">
- <title>Click Image to Change Profile</title>
- <link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap" rel="stylesheet">
- <style>
- body {
- margin: 0;
- font-family: 'Orbitron', sans-serif;
- color: #00ffff;
- background-image: url("Link Here") !important;
- text-align: center;
- transition: background 0.5s ease;
- background-size: cover;
- background-attachment: fixed;
- background-position: center;
- }
- .hud-container {
- width: 400px;
- margin: 50px auto;
- padding: 20px;
- background: rgba(255,215,0,0.3);
- border: 2px solid rgba(220, 255, 255, 0.5);
- border-radius: 15px;
- }
- .hud-header {
- padding: 10px;
- font-size: 1.5rem;
- text-transform: uppercase;
- color: gold;
- border: 2px solid rgba(0, 255, 255, 0.5);
- border-radius: 10px;
- background: black;
- }
- .hud-image {
- width: 100%;
- height: 400px;
- background-size: contain;
- background-repeat: no-repeat;
- background-position: center top;
- border-radius: 10px;
- cursor: pointer;
- transition: background 0.5s ease;
- }
- .audio-controls {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 10px;
- margin-top: 15px;
- }
- .audio-controls input[type="range"] {
- width: 120px;
- }
- .popup {
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- width: 600px;
- padding: 25px;
- background: rgba(0,0,0,0.9);
- border: 2px solid silver;
- border-radius: 12px;
- text-align: center;
- color: gold;
- font-size: 0.9rem;
- box-shadow: 0 0 25px gold;
- display: none;
- }
- .popup-title {
- font-size: 1.5rem;
- margin-bottom: 10px;
- }
- .popup-content {
- display: flex;
- gap: 15px;
- text-align: left;
- padding-top: 10px;
- }
- .popup-menu {
- flex-shrink: 0;
- display: flex;
- flex-direction: column;
- gap: 10px;
- }
- .popup-tab-button {
- background: transparent;
- border: 2px solid silver;
- border-radius: 5px;
- color: silver;
- padding: 6px 10px;
- font-family: 'Orbitron', sans-serif;
- font-size: 0.75rem;
- cursor: pointer;
- transition: background 0.3s ease;
- text-align: left;
- }
- .popup-tab-button:hover {
- background: rgba(0, 255, 255, 0.2);
- }
- .popup-tab-content {
- flex-grow: 1;
- font-size: 0.9rem;
- max-height: 350px;
- overflow-y: auto;
- padding-left: 15px;
- border-left: 2px solid rgba(255, 255, 255, 0.3);
- padding-top: 5px;
- }
- .popup-tab-content::before {
- content: "";
- display: block;
- height: 2px;
- background: silver;
- margin-bottom: 10px;
- }
- .altProfile-theme .popup-tab-button {
- border-color: #a020f0;
- color: #d4a5ff;
- }
- .altProfile-theme .popup-tab-button:hover {
- background: rgba(0, 0, 0, 0.2);
- }
- .altProfile-theme .popup-tab-content {
- border-left: 2px solid rgba(255, 215, 0, 0.3);
- }
- .altProfile-theme .popup-tab-content::before {
- background: gold;
- }
- .popup-button {
- margin-top: 15px;
- padding: 8px 12px;
- background: black;
- border: 2px solid black;
- color: white;
- border-radius: 5px;
- cursor: pointer;
- text-transform: uppercase;
- transition: background 0.3s ease;
- }
- .popup-button:hover {
- background: rgba(242, 255, 0, 0.5);
- }
- .popup-content {
- display: flex;
- gap: 15px;
- text-align: left;
- padding-top: 10px;
- }
- .popup-menu {
- flex-shrink: 0;
- display: flex;
- flex-direction: column;
- gap: 10px;
- }
- .popup-tab-button {
- background: transparent;
- border: 2px solid silver;
- border-radius: 5px;
- color: gold;
- padding: 6px 10px;
- font-family: 'Orbitron', sans-serif;
- font-size: 0.75rem;
- cursor: pointer;
- transition: background 0.3s ease;
- text-align: left;
- }
- .popup-tab-button:hover {
- background: rgba(0, 255, 255, 0.2);
- }
- .popup-tab-content {
- flex-grow: 1;
- font-size: 0.85rem;
- max-height: 300px;
- overflow-y: auto;
- padding-right: 5px;
- }
- .journal-log {
- display: flex;
- flex-direction: column;
- gap: 1rem;
- }
- .journal-entry {
- background: rgba(0, 0, 0, 0.4);
- border: 1px solid;
- border-radius: 10px;
- padding: 0.75rem 1rem;
- cursor: pointer;
- transition: background 0.3s ease;
- position: relative;
- }
- .journal-entry:hover {
- background: rgba(0, 55, 55, 0.1);
- }
- .journal-title {
- font-family: 'Orbitron', sans-serif;
- font-size: 1rem;
- text-transform: uppercase;
- letter-spacing: 1px;
- color: silver;
- text-shadow: 0 0 5px gold;
- transition: all 0.3s ease;
- }
- .journal-summary {
- max-height: 0;
- overflow: hidden;
- opacity: 0;
- margin-top: 0.5rem;
- font-size: 0.9rem;
- color: silver;
- line-height: 1.4;
- transition: max-height 0.5s ease, opacity 0.5s ease;
- }
- .journal-entry.active .journal-summary {
- max-height: 200px;
- opacity: 1;
- }
- /* Character-specific styles */
- .journal-log.mainProfile-style .journal-entry {
- border-color: silver;
- }
- .journal-log.mainProfile-style .journal-title {
- color: silver;
- text-shadow: 0 0 8px silver;
- }
- .journal-log.altProfile-style .journal-entry {
- border-color: #f0f;
- }
- .journal-log.altProfile-style .journal-title {
- color: #f0f;
- text-shadow: 0 0 8px #f0f;
- }
- .relationship-entry {
- margin-bottom: 20px;
- }
- .relationship-name {
- font-weight: bold;
- margin-bottom: 5px;
- }
- .profile-readout {
- background: rgba(0, 0, 0, 0.4);
- border: 1px solid silver;
- border-radius: 8px;
- padding: 1.5rem;
- color: white;
- font-family: 'Orbitron', sans-serif;
- animation: dataDrop 0.8s ease-out;
- position: relative;
- overflow: hidden;
- }
- .readout-header {
- font-size: 1.2rem;
- border-bottom: 2px solid silver;
- padding-bottom: 0.5rem;
- margin-bottom: 1rem;
- text-shadow: 0 0 8px silver;
- letter-spacing: 1px;
- }
- .char-code {
- color: gold;
- animation: flicker 1.2s infinite;
- }
- .profile-grid {
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 1rem;
- }
- .profile-item {
- display: flex;
- flex-direction: column;
- }
- .profile-item.full {
- grid-column: span 2;
- }
- .profile-label {
- font-size: 0.8rem;
- color: white;
- text-transform: uppercase;
- margin-bottom: 0.2rem;
- letter-spacing: 0.1rem;
- opacity: 0.8;
- }
- .profile-value {
- font-size: 1rem;
- color: gold;
- text-shadow: 0 0 4px white;
- animation: pulseGlow 3s ease-in-out infinite;
- }
- .glitch {
- animation: glitchText 1.5s infinite;
- }
- /* ANIMATIONS */
- @keyframes dataDrop {
- 0% {
- opacity: 0;
- transform: translateY(-20px) scale(0.95);
- }
- 100% {
- opacity: 1;
- transform: translateY(0) scale(1);
- }
- }
- @keyframes flicker {
- 0%, 18%, 22%, 25%, 53%, 57%, 100% {
- opacity: 1;
- }
- 20%, 24%, 55% {
- opacity: 0.3;
- }
- }
- @keyframes pulseGlow {
- 0%, 100% {
- text-shadow: 0 0 5px black, 0 0 10px white;
- }
- 50% {
- text-shadow: 0 0 15px black, 0 0 30px white;
- }
- }
- @keyframes glitchText {
- 0% {
- text-shadow: 2px 0 silver, -2px 0 gold;
- }
- 20% {
- text-shadow: -2px 0 silver, 2px 0 gold;
- }
- 40% {
- text-shadow: 2px 2px silver, -2px -2px gold;
- }
- 60% {
- text-shadow: -1px 1px silver, 1px -1px gold;
- }
- 80%, 100% {
- text-shadow: 0 0 silver, 0 0 gold;
- }
- }
- .relationship-bar {
- height: 20px;
- width: 100%;
- background: rgba(0, 255, 255, 0.15);
- border: 1px solid rgba(0, 255, 255, 0.4);
- border-radius: 10px;
- overflow: hidden;
- position: relative;
- margin-top: 5px;
- transition: max-height 0.4s ease, opacity 0.4s ease;
- }
- .lava-fill {
- height: 100%;
- background: linear-gradient(120deg, black, gold, black);
- background-size: 300% 300%;
- animation: lavaCrash 2.5s ease-in-out infinite;
- border-radius: 10px 0 0 10px;
- filter: brightness(1.2) saturate(1.5);
- }
- @keyframes lavaFlow {
- 0% { background-position: 0% 50%; }
- 100% { background-position: 200% 50%; }
- }
- @keyframes lavaCrash {
- 0% {
- background-position: 0% 50%;
- transform: skewX(0deg) scaleX(1);
- }
- 25% {
- background-position: 100% 50%;
- transform: skewX(-5deg) scaleX(1.03);
- }
- 50% {
- background-position: 50% 50%;
- transform: skewX(5deg) scaleX(0.97);
- }
- 75% {
- background-position: 0% 50%;
- transform: skewX(-3deg) scaleX(1.02);
- }
- 100% {
- background-position: 100% 50%;
- transform: skewX(2deg) scaleX(1);
- }
- }
- /* Initially hidden bar */
- .hidden-bar {
- max-height: 0;
- opacity: 0;
- pointer-events: none;
- }
- /* Revealed bar */
- .show-bar {
- max-height: 30px;
- opacity: 1;
- pointer-events: all;
- }
- .relationship-name {
- font-weight: bold;
- cursor: pointer;
- user-select: none;
- }
- .altProfile-theme .popup-tab-button {
- border-color: black;
- color: gold;
- background: rgba(0,0,0,0.3);
- }
- .altProfile-theme .popup-tab-button:hover {
- background: rgba(0, 0, 0, 0.2);
- }
- .overlay {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: rgba(0, 0, 0, 0.7);
- display: none;
- }
- .altProfile-theme {
- background-image: url("https://i.postimg.cc/SxH7P5z0/Skyscape.gif") !important;
- background-repeat: no-repeat;
- background-size: 100% 100%;
- background-position: center;
- background-attachment: fixed;
- }
- .altProfile-theme .hud-container {
- border-color: silver;
- background: rgba(0,0,0, 0.3);
- }
- .altProfile-theme .hud-header {
- color: Gold;
- border-color: silver;
- background: Black;
- }
- .altProfile-theme .popup {
- background: rgba(192,192,192, 0.9);
- border-color: silver;
- color: gold;
- }
- .altProfile-theme .popup-button {
- border-color: black;
- color: gold;
- }
- .altProfile-theme .popup-content hr {
- background: gold;
- }
- .altProfile-theme .relationship-bar {
- background: rgba(160, 32, 240, 0.1);
- border: 1px solid rgba(160, 32, 240, 0.5);
- }
- .altProfile-theme .lava-fill {
- background: linear-gradient(120deg, silver, gold, silver);
- }
- .glitchName {
- animation: glitchName 0.8s infinite alternate;
- }
- @keyframes lavaFlow {
- 0% { background-position: 0% 50%; }
- 100% { background-position: 200% 50%; }
- }
- @keyframes glitchName {
- 0% { text-shadow: 2px 2px gold, -2px -2px #00ffff; }
- 25% { text-shadow: -2px 2px gold, 2px -2px #00ffff; }
- 50% { text-shadow: 2px -2px gold, -2px 2px #00ffff; }
- 75% { text-shadow: -1px 1px gold, 1px -1px #00ffff; }
- 100% { text-shadow: 0px 0px gold, 0px 0px #00ffff; }
- }
- </style>
- </head>
- <body onload="initializeHUD()">
- <div class="hud-container" id="hud-container">
- <div class="hud-header glitchName" id="hud-title">Name Here</div>
- <div class="hud-image" id="hud-image" onclick="toggleCharacter()"></div>
- <div class="audio-controls">
- <button onclick="togglePlay()">▶ <!-- This is â–¶ --></button>
- <input type="range" min="0" max="1" step="0.01" id="volumeControl" onchange="changeVolume(this.value)">
- </div>
- <button class="popup-button glitchName" onclick="showPopup('info')">INFO</button>
- </div>
- <div class="overlay" id="overlay" onclick="hidePopup()"></div>
- <div class="popup" id="popup">
- <div class="popup-title" id="popup-title">INFO</div>
- <hr>
- <div class="popup-content">
- <div class="popup-menu" id="popup-menu">
- <!-- Tabs are rendered dynamically based on active profile -->
- </div>
- <div class="popup-tab-content" id="popup-tab-content">
- <!-- Dynamic content goes here -->
- </div>
- </div>
- <button class="popup-button" onclick="hidePopup()">CLOSE</button>
- </div>
- <!-- DROPBOX MUSIC HERE. Upload an mp3 to dropbox. Backspace the url until the '&' symbol, and change 'www' to 'dl'-->
- <audio id="mainProfile-audio" loop>
- <source src="https://dl.dropbox.com/scl/fi/4hmwvb0ia8ef151q8m2ee/Puella-Magi-Madoka-Magica-Soundtrack-a-human-bullet.mp3?rlkey=9rqiqqs8pzfv6c45ot7d5mgid&st=ao6sjzli&dl=1" type="audio/mp3">
- </audio>
- <audio id="altProfile-audio" loop>
- <source src="https://i.pinimg.com/1200x/ac/b9/ea/acb9ea498ac7549fca87efc81859c8bb.jpg=1" type="audio/mp3">
- </audio>
- <script>
- document.addEventListener("DOMContentLoaded", function () {
- document.body.addEventListener("click", function (e) {
- if (e.target.closest(".journal-entry")) {
- const entry = e.target.closest(".journal-entry");
- entry.classList.toggle("active");
- }
- });
- });
- var ismainProfile = true;
- var currentAudio = document.getElementById("mainProfile-audio");
- const sharedRelationshipsHTML = `
- <div class="relationship-entry" onclick="toggleBar(this)">
- <div class="relationship-name">Tranquil Blades </div>
- <div class="relationship-bar hidden-bar">
- <div class="lava-fill" style="width: 90%;"></div>
- </div>
- </div>
- <div class="relationship-entry" onclick="toggleBar(this)">
- <div class="relationship-name">Entry - 1</div>
- <div class="relationship-bar hidden-bar">
- <div class="lava-fill" style="width: 100%;"></div>
- </div>
- </div>
- <div class="relationship-entry" onclick="toggleBar(this)">
- <div class="relationship-name">Entry - 2</div>
- <div class="relationship-bar hidden-bar">
- <div class="lava-fill" style="width: 75%;"></div>
- </div>
- </div>
- <div class="relationship-entry" onclick="toggleBar(this)">
- <div class="relationship-name">Entry - 3</div>
- <div class="relationship-bar hidden-bar">
- <div class="lava-fill" style="width: 40%;"></div>
- </div>
- </div>
- <div class="relationship-entry" onclick="toggleBar(this)">
- <div class="relationship-name">Entry - 4</div>
- <div class="relationship-bar hidden-bar">
- <div class="lava-fill" style="width: 05%;"></div>
- </div>
- </div>
- <div class="relationship-entry" onclick="toggleBar(this)">
- <div class="relationship-name">Entry - 5</div>
- <div class="relationship-bar hidden-bar">
- <div class="lava-fill" style="width: 50%;"></div>
- </div>
- </div>
- `;
- const mainProfileGeneralInfoHTML = `<div class="profile-readout">
- <div class="readout-header">GENERAL INFO - <span class="char-code">Name Here</span></div>
- <div class="profile-grid">
- <div class="profile-item">
- <span class="profile-label">Name</span>
- <span class="profile-value">Roy Addams</span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Factions</span>
- <span class="profile-value">Faction Here<br><br>Factor Here<br><br>Hinode?</span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Job</span>
- <span class="profile-value">Job Here<br><br>Job Here</span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Grade</span>
- <span class="profile-value glitch">Grade Here </span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Height</span>
- <span class="profile-value">Height Here</span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Weight</span>
- <span class="profile-value">Weight Here</span>
- </div>
- <div class="profile-item full">
- <span class="profile-label">Appeareance</span>
- <span class="profile-value">Basic info here </span>
- </div>
- </div>
- </div>`;
- const altProfileGeneralInfoHTML = `<div class="profile-readout">
- <div class="readout-header">GENERAL INFO - <span class="char-code">Qingsiu</span></div>
- <div class="profile-grid">
- <div class="profile-item">
- <span class="profile-label">Name</span>
- <span class="profile-value">Qingsiu</span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Also Known As</span>
- <span class="profile-value">Qin</span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Species</span>
- <span class="profile-value">Shriekwinged Terrorhawk</span>
- </div>
- <div class="profile-item">
- <span class="profile-label">Grade</span>
- <span class="profile-value glitch">[Spirit]</span>
- </div>
- <div class="profile-item full">
- <span class="profile-label">Element</span>
- <span class="profile-value">[Wind]</span>
- </div>
- </div>
- </div>`;
- const mainProfileFeatsHTML = `<div class="journal-log">
- <div class="journal-entry">
- <div class="journal-title"> Up and Comer</div>
- <div class="journal-summary"> WIP Description</div>
- </div>
- <div class="journal-entry">
- <div class="journal-title"> A Blade, Made sharp</div>
- <div class="journal-summary"> WIP Description </div>
- </div>
- <div class="journal-entry">
- <div class="journal-title"> Clothing made Manifest</div>
- <div class="journal-summary"> WIP Description </div>
- </div>
- <div class="journal-entry">
- <div class="journal-title">Love and Loss</div>
- <div class="journal-summary"> WIP Description </div>
- </div>
- </div>`;
- var characterData = {
- "mainProfile": {
- image: "Image Link Here",
- tabs: ["general", "feats", "relationships", "abilities"],
- tabLabels: {
- general: "General Info",
- feats: "Journal of Feats",
- relationships: "Relationships",
- abilities: "Ability Radar"
- },
- info: {
- general: mainProfileGeneralInfoHTML,
- feats: mainProfileFeatsHTML,
- relationships: sharedRelationshipsHTML,
- abilities: "[Heat, Marksmen, Animals.]"
- }
- },
- "altProfile": {
- image: "https://i.postimg.cc/Y9402BMV/ornate-hawk-eagle-by-me-v0-26o2e7lda82a1.webp",
- tabs: ["general", "abilities"],
- tabLabels: {
- general: "General Info",
- abilities: "Ability Radar"
- },
- info: {
- general: altProfileGeneralInfoHTML,
- abilities: "[Wings, Talons, Wind]"
- }
- }
- };
- function initializeHUD() {
- document.getElementById('hud-image').style.backgroundImage = `url('${characterData["mainProfile"].image}')`;
- currentAudio.volume = 0.2;
- currentAudio.play();
- document.getElementById("volumeControl").value = 0.2;
- }
- function toggleCharacter() {
- let body = document.body;
- let title = document.getElementById('hud-title');
- let image = document.getElementById('hud-image');
- currentAudio.pause();
- currentAudio.currentTime = 0;
- if (ismainProfile) {
- body.className = "altProfile-theme";
- title.innerText = "Qingsiu";
- image.style.backgroundImage = `url('${characterData["altProfile"].image}')`;
- currentAudio = document.getElementById("altProfile-audio");
- } else {
- body.className = "";
- title.innerText = "Name Here";
- image.style.backgroundImage = `url('${characterData["mainProfile"].image}')`;
- currentAudio = document.getElementById("mainProfile-audio");
- }
- currentAudio.volume = document.getElementById("volumeControl").value;
- currentAudio.play();
- ismainProfile = !ismainProfile;
- }
- function renderTabs(charKey) {
- const char = characterData[charKey];
- const menu = document.getElementById('popup-menu');
- menu.innerHTML = '';
- char.tabs.forEach(function(tab) {
- const btn = document.createElement('button');
- btn.className = 'popup-tab-button';
- btn.innerText = char.tabLabels[tab];
- btn.onclick = function() { setInfoTab(tab); };
- menu.appendChild(btn);
- });
- }
- function showPopup(type) {
- let charKey = ismainProfile ? "mainProfile" : "altProfile";
- if (type === "info") {
- document.getElementById('popup-title').innerText = "INFO";
- renderTabs(charKey);
- setInfoTab("general");
- } else {
- document.getElementById('popup-title').innerText = type.toUpperCase();
- document.getElementById('popup-tab-content').innerHTML = `<p>${characterData[charKey][type]}</p>`;
- }
- document.getElementById('popup').style.display = 'block';
- document.getElementById('overlay').style.display = 'block';
- }
- function setInfoTab(tabName) {
- let charKey = ismainProfile ? "mainProfile" : "altProfile";
- let content = characterData[charKey].info[tabName];
- document.getElementById('popup-tab-content').innerHTML = `<p>${content}</p>`;
- }
- function hidePopup() {
- document.getElementById('popup').style.display = 'none';
- document.getElementById('overlay').style.display = 'none';
- }
- function togglePlay() {
- if (currentAudio.paused) currentAudio.play();
- else currentAudio.pause();
- }
- function changeVolume(val) {
- currentAudio.volume = val;
- }
- function toggleBar(entry) {
- const bar = entry.querySelector('.relationship-bar');
- bar.classList.toggle('show-bar');
- bar.classList.toggle('hidden-bar');
- }
- function renderJournal(entries, character) {
- const styleClass = character === "mainProfile" ? "mainProfile-style" : "altProfile-style";
- infoContent.innerHTML = `
- <div class="journal-log ${styleClass}">
- ${entries.map(entry => `
- <div class="journal-entry">
- <div class="journal-title">${entry.title}</div>
- <div class="journal-summary">${entry.summary}</div>
- </div>
- `).join("")}
- </div>
- `;
- }
- </script>
- </body>
- </html>
Add Comment
Please, Sign In to add comment