|
|
Linha 1: |
Linha 1: |
| <!DOCTYPE html>
| | <script> |
| <html lang="pt-BR">
| |
| <head>
| |
| <meta charset="UTF-8">
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
| |
| <title>Busca de Imagens por Nome</title>
| |
| <style>
| |
| .input-group { margin-bottom: 1em; position: relative; }
| |
| .dropdown {
| |
| border: 1px solid #ccc;
| |
| display: none;
| |
| position: absolute;
| |
| background-color: #fff;
| |
| z-index: 1000;
| |
| max-height: 150px;
| |
| overflow-y: auto;
| |
| width: 100%;
| |
| }
| |
| .dropdown-item {
| |
| padding: 8px;
| |
| cursor: pointer;
| |
| display: flex;
| |
| align-items: center;
| |
| }
| |
| .dropdown-item img {
| |
| margin-right: 10px;
| |
| }
| |
| .dropdown-item:hover {
| |
| background-color: #f0f0f0;
| |
| }
| |
| .image-container {
| |
| display: flex;
| |
| flex-direction: column;
| |
| align-items: center;
| |
| justify-content: center;
| |
| }
| |
| .image-item {
| |
| margin-bottom: 1em;
| |
| text-align: center;
| |
| }
| |
| .image-item img {
| |
| display: block;
| |
| margin: 0 auto;
| |
| }
| |
| | |
| .variations-container {
| |
| display: flex;
| |
| flex-wrap: wrap;
| |
| justify-content: center;
| |
| margin-top: 1em;
| |
| }
| |
| | |
| .variation-item {
| |
| width: 35%;
| |
| box-sizing: border-box;
| |
| margin: 5px;
| |
| text-align: center;
| |
| border: 1px solid ;
| |
| padding: 10px;
| |
| }
| |
| | |
| .variation-item img {
| |
| display: block;
| |
| margin: 0 auto 10px;
| |
| }
| |
| | |
| .swap-button {
| |
| margin-top: 10px;
| |
| cursor: pointer;
| |
| width: 15px;
| |
| height: 15px;
| |
| background: url('https://wiki.pokexgames.com/images/f/fb/SwapButtonAddons.png') no-repeat center;
| |
| background-size: contain;
| |
| display: block;
| |
| margin: 0 auto;
| |
| }
| |
| </style>
| |
| </head>
| |
| <body>
| |
| <form id="imageForm">
| |
| <div class="input-group">
| |
| <input type="text" id="imageSearch" placeholder="Digite o nome da imagem" autocomplete="off">
| |
| <div id="dropdown" class="dropdown"></div>
| |
| </div>
| |
| | |
| <div id="imageContainer" class="image-container hidden">
| |
| <!-- As imagens e suas informações serão exibidas aqui -->
| |
| </div>
| |
| </form>
| |
| | |
| <script>
| |
| // Função para gerar o link da imagem da Wiki
| |
| function generateWikiImageUrl(imageName) { | | function generateWikiImageUrl(imageName) { |
| return `https://wiki.pokexgames.com/index.php/Special:FilePath/${imageName}`; | | return `https://wiki.pokexgames.com/index.php/Special:FilePath/${imageName}`; |
| } | | } |
| | | |
| // Lista de imagens e variações
| |
| const imageList = { | | const imageList = { |
| Squirtle: { | | 'Squirtle': { |
| imageUrl: generateWikiImageUrl('007-Squirtle.png'), // URL dinâmica da imagem | | imageUrl: generateWikiImageUrl('Squirtle.png'), |
| variations: [ | | variations: [ |
| { | | { |
| description: "Squirtle usando óculos", | | description: 'Squirtle Purple Ninja Pacnk', |
| descriptionIMG: generateWikiImageUrl('Purple_Stripe.png'),
| | descriptionIMG: generateWikiImageUrl('Purple_Stripe.png'), |
| additionalImages: [
| | obtain: { |
| { url: generateWikiImageUrl('Squirtle_Purple_Ninja_Pack_Frente.png') },
| | url: 'https://wiki.pokexgames.com/index.php/Craft_Profissões_-_Estilista#Rank_E', |
| { url: generateWikiImageUrl('Squirtle Purple Ninja Pack Esquerda.png') },
| | text: 'Estilista' |
| { url: generateWikiImageUrl('Squirtle_Purple_Ninja_Pack_Costas.png') },
| | }, |
| { url: generateWikiImageUrl('Squirtle Purple Ninja Pack Direita.png') },
| | additionalImages: [ |
| ], | | { url: generateWikiImageUrl('Squirtle_Purple_Ninja_Pack_Frente.png')}, // Frente |
| obtain: { url: "https://example.com/obter-squirtle", text: "Como obter" } | | { url: generateWikiImageUrl('Squirtle_Purple_Ninja_Pack_Esquerda.png')}, // Lado Esquerdo |
| | { url: generateWikiImageUrl('Squirtle_Purple_Ninja_Pack_Direita.png')}, // Costas |
| | { url: generateWikiImageUrl('Squirtle_Purple_Ninja_Pack_Costas.png')} // Lado Direito |
| | ] |
| | }, |
| | { |
| | description: 'Squirtle Red Ninja Pack', |
| | descriptionIMG: 'https://wiki.pokexgames.com/images/c/c1/Purple_Stripe.png', |
| | obtain: { |
| | url: 'https://wiki.pokexgames.com/index.php/Craft_Profissões_-_Estilista#Rank_E', |
| | text: 'Estilista' |
| | }, |
| | additionalImages: [ |
| | { url: 'https://wiki.pokexgames.com/images/1/13/Squirtle_Red_Ninja_Pack_Frente.png'}, // Frente |
| | { url: 'https://wiki.pokexgames.com/images/1/1e/Squirtle_Red_Ninja_Pack_Esquerda.png'}, // Lado Esquerdo |
| | { url: 'https://wiki.pokexgames.com/images/0/01/Squirtle_Red_Ninja_Pack_Costas.png'}, // Costas |
| | { url: 'https://wiki.pokexgames.com/images/f/fd/Squirtle_Red_Ninja_Pack_Direita.png'} // Lado Direito |
| | ] |
| } | | } |
| ] | | ] |
| }, | | }, |
| Charmander: {
| |
| imageUrl: generateWikiImageUrl('004-Charmander'), // URL dinâmica da imagem
| |
| variations: [
| |
| {
| |
| description: "Charmander brilhante",
| |
| descriptionIMG: generateWikiImageUrl('charmander-shiny'), // URL da variação
| |
| additionalImages: [
| |
| { url: generateWikiImageUrl('charmander1'), width: 100 },
| |
| { url: generateWikiImageUrl('charmander2'), width: 120 }
| |
| ],
| |
| obtain: { url: "https://example.com/obter-charmander", text: "Como obter" }
| |
| }
| |
| ]
| |
| }
| |
| }; | | }; |
| | | </script> |
| const imageSearch = document.getElementById('imageSearch');
| |
| const dropdown = document.getElementById('dropdown');
| |
| const imageContainer = document.getElementById('imageContainer');
| |
| | |
| imageSearch.addEventListener('input', function() {
| |
| const searchValue = this.value.trim().toLowerCase();
| |
| dropdown.innerHTML = '';
| |
| | |
| if (searchValue) {
| |
| Object.keys(imageList).forEach(imageName => {
| |
| if (imageName.toLowerCase().includes(searchValue)) {
| |
| const dropdownItem = document.createElement('div');
| |
| dropdownItem.classList.add('dropdown-item');
| |
|
| |
| const imgElement = document.createElement('img');
| |
| imgElement.src = imageList[imageName].imageUrl;
| |
| imgElement.alt = imageName;
| |
|
| |
| dropdownItem.appendChild(imgElement);
| |
| dropdownItem.appendChild(document.createTextNode(imageName));
| |
|
| |
| dropdownItem.addEventListener('click', function() {
| |
| showImageInfo(imageName);
| |
| dropdown.style.display = 'none';
| |
| });
| |
| dropdown.appendChild(dropdownItem);
| |
| }
| |
| });
| |
| | |
| dropdown.style.display = dropdown.childNodes.length ? 'block' : 'none';
| |
| } else {
| |
| dropdown.style.display = 'none';
| |
| }
| |
| });
| |
| | |
| document.addEventListener('click', function(event) {
| |
| if (!imageSearch.contains(event.target) && !dropdown.contains(event.target)) {
| |
| dropdown.style.display = 'none';
| |
| }
| |
| });
| |
| | |
| function showImageInfo(imageName) {
| |
| const imageInfo = imageList[imageName];
| |
| let imagesHtml = `
| |
| <div class="image-item">
| |
| <img src="${imageInfo.imageUrl}" alt="${imageName}">
| |
| </div>
| |
| <div class="variations-container">
| |
| `;
| |
| | |
| imageInfo.variations.forEach((variation, index) => {
| |
| imagesHtml += `
| |
| <div class="variation-item">
| |
| <img src="${variation.additionalImages[0].url}" alt="Variation Image" class="variation-image" data-variation-index="${index}" style="width: ${variation.additionalImages[0].width}px;">
| |
| <div class="swap-button" data-variation-index="${index}"></div><br>
| |
| <div class="image-info">
| |
| <img src="${variation.descriptionIMG}" alt="Description Image" style="margin-right: 5px; display: inline-block;"> <!-- Exibe a imagem antes da descrição -->
| |
| <br> ${variation.description} <br> <!-- Descrição após a imagem -->
| |
| <b>Como Obter</b>: <a href="${variation.obtain.url}" target="_blank">${variation.obtain.text}</a>
| |
| </div>
| |
| </div>
| |
| `;
| |
| });
| |
| | |
| imagesHtml += `</div>`;
| |
| | |
| imageContainer.innerHTML = imagesHtml;
| |
| imageContainer.classList.remove('hidden');
| |
| | |
| // Alternar imagens ao clicar no botão de troca
| |
| const swapButtons = document.querySelectorAll('.swap-button');
| |
| | |
| swapButtons.forEach(button => {
| |
| const index = button.getAttribute('data-variation-index');
| |
| const variation = imageInfo.variations[index];
| |
| let currentImageIndex = 0;
| |
| | |
| button.addEventListener('click', () => {
| |
| currentImageIndex = (currentImageIndex + 1) % variation.additionalImages.length;
| |
| const variationImage = button.previousElementSibling; // Atualiza a imagem da variação
| |
| variationImage.src = variation.additionalImages[currentImageIndex].url;
| |
| variationImage.style.width = `${variation.additionalImages[currentImageIndex].width}px`;
| |
| });
| |
| });
| |
| }
| |
| </script>
| |
| </body>
| |
| </html>
| |