WEBLEB
Início
Editor
Entrar
Pro
Português
English
Français
Español
Português
Deutsch
Italiano
हिंदी
1400
Andev.web
Abrir no Editor
Publique Seu Código
Recomendado
18 October 2025
Botão HTML com efeito hover (WEBLEB)
7 November 2024
Menu vertical pairar
HTML
Copy
Andev Web
Andev.Web
Home
Blog
Info
The Frost Archer
Ashe
The Nine-Tailed Fox
Ahri
The Might of Demacia
Garen
The Storm's Fury
Janna
The Sinister Blade
Katarina
<
>
Ashe
Ahri
Garen
Janna
Katarina
CSS
Copy
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); body{ font-family: Poppins; margin: 0; background-color: #010101; color: #eee; } svg{ width: 25px; } header{ width: 1200px; max-width: 90%; margin: auto; display: grid; grid-template-columns: 50px 1fr 50px; grid-template-rows: 50px; justify-content: center; align-items: center; position: relative; z-index: 100; } header .logo{ font-weight: bold; } header .menu{ padding: 0; margin: 0; list-style: none; display: flex; justify-content: center; gap: 20px; font-weight: 500; } /* css slider */ .slider{ height: 100vh; margin-top: -50px; position: relative; } .slider .list .item{ position: absolute; inset: 0 0 0 0; overflow: hidden; opacity: 0; transition: .5s; } .slider .list .item img{ width: 100%; height: 100%; object-fit: cover; } .slider .list .item::after{ content: ''; width: 100%; height: 100%; position: absolute; left: 0; bottom: 0; background-image: linear-gradient( to top, #000 40%, transparent ); } .slider .list .item .content{ position: absolute; left: 10%; top: 20%; width: 500px; max-width: 80%; z-index: 1; } .slider .list .item .content p:nth-child(1){ text-transform: uppercase; letter-spacing: 10px; } .slider .list .item .content h2{ font-size: 100px; margin: 0; } .slider .list .item.active{ opacity: 1; z-index: 10; } @keyframes showContent { to{ transform: translateY(0); filter: blur(0); opacity: 1; } } .slider .list .item.active p:nth-child(1), .slider .list .item.active h2, .slider .list .item.active p:nth-child(3){ transform: translateY(30px); filter: blur(20px); opacity: 0; animation: showContent .5s .7s ease-in-out 1 forwards; } .slider .list .item.active h2{ animation-delay: 1s; } .slider .list .item.active p:nth-child(3){ animation-duration: 1.3s; } .arrows{ position: absolute; top: 30%; right: 50px; z-index: 100; } .arrows button{ background-color: #eee5; border: none; font-family: monospace; width: 40px; height: 40px; border-radius: 5px; font-size: x-large; color: #eee; transition: .5s; } .arrows button:hover{ background-color: #eee; color: black; } .thumbnail{ position: absolute; bottom: 50px; z-index: 11; display: flex; gap: 10px; width: 100%; height: 250px; padding: 0 50px; box-sizing: border-box; overflow: auto; justify-content: center; } .thumbnail::-webkit-scrollbar{ width: 0; } .thumbnail .item{ width: 150px; height: 220px; filter: brightness(.5); transition: .5s; flex-shrink: 0; } .thumbnail .item img{ width: 100%; height: 100%; object-fit: cover; border-radius: 10px; } .thumbnail .item.active{ filter: brightness(1.5); } .thumbnail .item .content{ position: absolute; inset: auto 10px 10px 10px; } @media screen and (max-width: 678px) { .thumbnail{ justify-content: start; } .slider .list .item .content h2{ font-size: 60px; } .arrows{ top: 10%; } }
JS
Copy
let items = document.querySelectorAll('.slider .list .item'); let next = document.getElementById('next'); let prev = document.getElementById('prev'); let thumbnails = document.querySelectorAll('.thumbnail .item'); // config param let countItem = items.length; let itemActive = 0; // event next click next.onclick = function(){ itemActive = itemActive + 1; if(itemActive >= countItem){ itemActive = 0; } showSlider(); } //event prev click prev.onclick = function(){ itemActive = itemActive - 1; if(itemActive < 0){ itemActive = countItem - 1; } showSlider(); } // auto run slider let refreshInterval = setInterval(() => { next.click(); }, 5000) function showSlider(){ // remove item active old let itemActiveOld = document.querySelector('.slider .list .item.active'); let thumbnailActiveOld = document.querySelector('.thumbnail .item.active'); itemActiveOld.classList.remove('active'); thumbnailActiveOld.classList.remove('active'); // active new item items[itemActive].classList.add('active'); thumbnails[itemActive].classList.add('active'); // clear auto time run slider clearInterval(refreshInterval); refreshInterval = setInterval(() => { next.click(); }, 5000) } // click thumbnail thumbnails.forEach((thumbnail, index) => { thumbnail.addEventListener('click', () => { itemActive = index; showSlider(); }) })