Ir para conteúdo
Biel.

onmouseover e onmouseout

Recommended Posts

Olá pessoal . Como adicionar os eventos onmouseover  e onmouseout no código abaixo ?  Estou tentando parar o slide ao colocar o cursor sobre a imagem e ao tirar o cursor da imagem voltar a funcionar normalmente.

<style>
      #boxPrincipal {
            max-width: 1024px;
            width: 100%;
            height: 100px;

            margin: auto;
            padding: 0px;
            text-align: center;
            background-color: #FFA;   
            border: 1px solid blue;
      }

      #box1 {
            width: 100%;
            max-width: 190px;
            height: 60px;
            /* position: relative; */
            bottom: 0;
      }

      #imgtete {
            /* position: absolute; */
            bottom: 0;

            width: 100%;
            height: 100%;

            opacity: 0;
            transition: opacity 800ms;
      }

      #imgtete.selected {
            opacity: 1;
      }
</style>

...

<div id="boxPrincipal">

      <div id="box1">
            <a href="link1"> <img src="slide1.png"  id="imgtete"> </a>
            <a href="link2"> <img src="slide2.png"  id="imgtete"> </a>
            <a href="link3"> <img src="slide3.png"  id="imgtete"> </a>
            <a href="link4"> <img src="slide4.png"  id="imgtete"> </a>
      </div>

</div>

...

<script>
      contador = 0,
            images = document.querySelectorAll("#imgtete")
      quantidade = images.length;
      //quantidade = 4;
let rrr;
     rrr = setInterval(function () {   
            images[contador]
     .classList.remove("selected")

 contador++
    
 if(contador >= quantidade)
 contador = 0 // volta para o começo

 images[contador]
 .classList.add("selected") ; 

      }, 1000);


//  clearInterval(rrr);


</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

interessante a abordagem.
Mas id, deve ser única
se precisar diferenciar um grupo de elementos a propriedade com valor em comum deve ser a class

Executei aqui pra tentar entender e as imagens ficam piscando verticalmente, uma abaixo da outra
image.png.d076e3c7e2b9e2b211e5bd8afe286102.png
no caso o mouseenter e o mouseout seria em qualquer imagem, até mesmo nesse slot com background em amarelo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim como o colega sitou; você nunca deve possuir mais de um elemento com o mesmo id=""

E isso já vi que lhe foi dito várias/milhares vezes, então porque continua comentendo o mesmo erro?

 

Bem, mesmo que não deveria fazer isso vou lhe dar o que está tentando fazer já mastigado e engolido.

É algo completamente abstraído ou seja não há muito o que se preocupar com todo o contexto pois o único que vai saber quais elementos devem ser manipulados é o javascript.

Então só informar uma tag <div> com um id (QUE NUNCA DEVE SE REPETIR) para a função e ela faz o resto

Dentro dessa tag <div> você coloca os elementos <a> de dentro desses a img

 

<style>
    #box1 {
        max-width: 190px;
        height: 60px;
        position: relative;
        overflow: hidden
    }
    #box1 > a {
        position: absolute;
        top: 0;
        left: 0;
        opacity: 0;
        transition: opacity .8s linear
    }
    #box1 > a.selected {
        opacity: 1
    }
    #box1 > a > img {
        width: 100%;
        height: inherit
    }
</style>

<div id="box1">
    <a href="link1"> <img src="slide1.png" alt="" /> </a>
    <a href="link2"> <img src="slide2.png" alt="" /> </a>
    <a href="link3"> <img src="slide3.png" alt="" /> </a>
    <a href="link4"> <img src="slide4.png" alt="" /> </a>
</div>

<script>
    function slide(ID_UNICO) {
        var caixa = document.getElementById(ID_UNICO),
            limite = (caixa.childElementCount - 1),
            contador = 0,
            intervalo = undefined;

        caixa.children[0].classList.add('selected');

        intervalo = setInterval(exemplo, 1000);

        function exemplo() {
            caixa.children[contador].classList.remove('selected');

            (contador === limite ? contador = 0 : contador++);

            caixa.children[contador].classList.add('selected');
        }

        caixa.addEventListener('mouseenter', function () {
            clearInterval(intervalo);
        }, false);

        caixa.addEventListener('mouseleave', function () {
            intervalo = setInterval(exemplo, 1000);
        }, false);
    }

    slide('box1'); // Informe o id="" do local onde contém os elementos
</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 17/08/2022 at 17:20, Omar~ disse:

Assim como o colega sitou; você nunca deve possuir mais de um elemento com o mesmo id=""

E isso já vi que lhe foi dito várias/milhares vezes, então porque continua comentendo o mesmo erro?

 

Bem, mesmo que não deveria fazer isso vou lhe dar o que está tentando fazer já mastigado e engolido.

É algo completamente abstraído ou seja não há muito o que se preocupar com todo o contexto pois o único que vai saber quais elementos devem ser manipulados é o javascript.

Então só informar uma tag <div> com um id (QUE NUNCA DEVE SE REPETIR) para a função e ela faz o resto

Dentro dessa tag <div> você coloca os elementos <a> de dentro desses a img

 


<style>
    #box1 {
        max-width: 190px;
        height: 60px;
        position: relative;
        overflow: hidden
    }
    #box1 > a {
        position: absolute;
        top: 0;
        left: 0;
        opacity: 0;
        transition: opacity .8s linear
    }
    #box1 > a.selected {
        opacity: 1
    }
    #box1 > a > img {
        width: 100%;
        height: inherit
    }
</style>

<div id="box1">
    <a href="link1"> <img src="slide1.png" alt="" /> </a>
    <a href="link2"> <img src="slide2.png" alt="" /> </a>
    <a href="link3"> <img src="slide3.png" alt="" /> </a>
    <a href="link4"> <img src="slide4.png" alt="" /> </a>
</div>

<script>
    function slide(ID_UNICO) {
        var caixa = document.getElementById(ID_UNICO),
            limite = (caixa.childElementCount - 1),
            contador = 0,
            intervalo = undefined;

        caixa.children[0].classList.add('selected');

        intervalo = setInterval(exemplo, 1000);

        function exemplo() {
            caixa.children[contador].classList.remove('selected');

            (contador === limite ? contador = 0 : contador++);

            caixa.children[contador].classList.add('selected');
        }

        caixa.addEventListener('mouseenter', function () {
            clearInterval(intervalo);
        }, false);

        caixa.addEventListener('mouseleave', function () {
            intervalo = setInterval(exemplo, 1000);
        }, false);
    }

    slide('box1'); // Informe o id="" do local onde contém os elementos
</script>

 

Funcionou incrivelmente bem Omar, mas  para fechar com chave de ouro e nota 10 pra você faltou o seguinte: Ao encostar o cursor sobre o slide1 ou slide2 ou slide3 ou slide4  tem que aparecer o link certo da imagem. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Biel.
      Olá pessoal. Ao digitar um texto qualquer no input e pressionar submit o valor do atributo href é alterado temporariamente. Como alterar permanentemente no corpo do documento  o valor do atributo href, digitando um nome de link qualquer no campo input e em seguida submit ?
      <!DOCTYPE html> <html> <head> <style> input { width: 100%; font-size: 20px; } textarea { width: 100%; font-size: 16px; height: 200px; } .class88 { margin-top: 50px; padding: 10px; max-width: 100px; } </style> </head> <body> <h2> alterar valor do atributo href</h2> digite um texto qualquer <input type="text" class="class42" value=""> <a id="linkToChange" href="teste5.php" class="class43"></a> <input type="submit" class="class88" value="enviar" onclick="alterarHref()"> <script> function alterarHref() { // pega o valor da class42 var valorDaclass42 = document.querySelector('.class42').value.trim(); // altera o valor do atributo href para o valorDaclass42 sugerido document.querySelector('.class43').setAttribute('href', valorDaclass42); console.log("Href alterado:", valorDaclass42); } </script> </body> </html>  
    • Por Biel.
      Olá pessoal. BannerA está funcionando normalmente. Como usar mesmo script para bannerB e bannerC.
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner Aleatório</title> <style> /* Estilos opcionais para o banner */ #divPai { margin: auto; border: 2px solid red; } #bannerA { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerA img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } #bannerA img.active { opacity: 1; } </style> </head> <body> <div id="divPai"> <div id="bannerA" class="bannerA"> <a href="link1"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3"><img src="image3.jpg" alt="Imagem 3"></a> </div> <!-- <hr> <div id="bannerB" class="bannerB"> <a href="link4"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5"><img src="image5.jpg" alt="Imagem 5"></a> <a href="link6"><img src="image6.jpg" alt="Imagem 6"></a> </div> <hr> <div id="bannerC" class="bannerC"> <a href="link7"><img src="image7.jpg" alt="Imagem 7"></a> <a href="link8"><img src="image8.jpg" alt="Imagem 8"></a> <a href="link9"><img src="image9.jpg" alt="Imagem 9"></a> </div> --> </div> <hr> <script> document.addEventListener("DOMContentLoaded", function() { // var banner = document.getElementById("divPai"); // var images = banner.querySelectorAll("img"); var images = document.querySelectorAll("#bannerA img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 1000); // makeSliderKind('.bannerA', 1000); // makeSliderKind('.bannerB', 2000); // makeSliderKind('.bannerC', 3000); }); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando e o link acompanha o banner, até aqui tudo ok ! Quero muito fazer uma transição suave entre uma image e outra, colocando as propiedades e valores no css ou diretamente no javascript e nada de propiedades e valores no html através do style . Se possível coloque no código somente o que precisa . Obrigado!
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Banner</title> <style> /* Estilos opcionais para o banner */ .banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner img { width: 100%; height: auto; position: absolute; top: 0; left: 0; transition: 1.5s ease-in; } .banner img.active { opacity: 1; } </style> </head> <body> <div class="banner" id="banner"> <a href="link1" class="ggg"><img src="image1.jpg" alt="Imagem 1"></a> <a href="link2" class="ggg"><img src="image2.jpg" alt="Imagem 2"></a> <a href="link3" class="ggg"><img src="image3.jpg" alt="Imagem 3"></a> <a href="link4" class="ggg"><img src="image4.jpg" alt="Imagem 4"></a> <a href="link5" class="ggg"><img src="image5.jpg" alt="Imagem 5"></a> </div> <script> document.addEventListener("DOMContentLoaded", function() { var banner = document.getElementById("banner"); var images = banner.querySelectorAll("img"); // Função para exibir uma imagem aleatória function showRandomImage() { // Escolhe aleatoriamente um índice de imagem var randomIndex = Math.floor(Math.random() * images.length); // Define todas as imagens como ocultas images.forEach(function(img) { img.style.display = "none"; }); // Exibe a imagem aleatória images[randomIndex].style.display = "block"; } // Chama a função inicialmente e define um intervalo para exibir novas imagens a cada 3 segundos showRandomImage(); setInterval(showRandomImage, 3000); }); </script> </body> </html>  
       
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando normalmente, mas a transição entre uma imagem e outra está um tanto truculenta. Quero deixar suave. Como resolver isso? Obrigado !
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>transition suave entre uma image e outra</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } #bannerGG { width: 100%; height: auto; position: absolute; top: 0; left: 0; opacity: 0; transition: opacity 1s ease-in-out; } /* #tete:active { opacity: 1; } */ </style> </head> <body> <div id="banner"> <img class="bannerGG" src="imagem1.png" alt="Image 1"> <img class="bannerGG" src="imagem2.png" alt="Image 2"> <img class="bannerGG" src="imagem3.png" alt="Image 3"> <img class="bannerGG" src="imagem4.png" alt="Image 4"> <img class="bannerGG" src="imagem5.png" alt="Image 5"> </div> <script> const image = document.querySelectorAll('.bannerGG'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * image.length); const randomImage = image[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; const linkElement = document.createElement('a'); linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 3000); </script> </body> </html>  
    • Por Biel.
      Olá pessoal. O banner abaixo está funcionando, mas quero que o link do banner venha da tag a  e não do javascript . Como resolver? 
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Mostrar link do banner que está na tag a</title> <style> #banner { width: 240px; height: 480px; overflow: hidden; position: relative; } .banner-img { width: 100%; height: 100%; object-fit: cover; position: absolute; /* opacity: 0; */ transition: opacity 0.5s ease-in-out; } .banner-link { display: block; width: 100%; height: 100%; } </style> </head> <body> <div id="banner"> <a href="link147"><img class="banner-img" src="imagem1.png" alt="Image 1"></a> <a href="link254"><img class="banner-img" src="imagem2.png" alt="Image 2"></a> <a href="link350"><img class="banner-img" src="imagem3.png" alt="Image 3"></a> <a href="link462"><img class="banner-img" src="imagem4.png" alt="Image 4"></a> <a href="link538"><img class="banner-img" src="imagem5.png" alt="Image 5"></a> </div> <script> const images = document.querySelectorAll('.banner-img'); const banner = document.getElementById('banner'); function showRandomImage() { const randomIndex = Math.floor(Math.random() * images.length); const randomImage = images[randomIndex]; const imgElement = document.createElement('img'); imgElement.src = randomImage.src; imgElement.alt = randomImage.alt; imgElement.classList.add('banner-img'); const linkElement = document.createElement('a'); // linkElement.appendChild(imgElement); linkElement.href = randomImage.href; linkElement.classList.add('banner-link'); linkElement.href = "page" + (randomIndex + 1) + ".html"; // Link para cada imagem linkElement.appendChild(imgElement); banner.innerHTML = ''; banner.appendChild(linkElement); } showRandomImage(); setInterval(showRandomImage, 1000); </script> </body> </html> Resolvido,  Obrigado a todos !
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.