Texto piscando jQuery

Respostas:

51

Tente usar este plugin blink

Por exemplo

$('.blink').blink(); // default is 500ms blink interval.
//$('.blink').blink(100); // causes a 100ms blink interval.

Também é um plugin muito simples e provavelmente você poderia estendê-lo para interromper a animação e iniciá-la sob demanda.

Barkmadley
fonte
1
Eu usaria a tag blink e verificaria com jQuery se o navegador é IE e, se não, piscaria com este plugin.
Natrium
11
isso é mais esforço do que vale a pena, não é?
barkmadley,
1
barkmadley, como faço para parar o piscar?
HP.
93

Um plugin para piscar algum texto soa um pouco como um exagero para mim ...

Experimente isso ...

$('.blink').each(function() {
    var elem = $(this);
    setInterval(function() {
        if (elem.css('visibility') == 'hidden') {
            elem.css('visibility', 'visible');
        } else {
            elem.css('visibility', 'hidden');
        }    
    }, 500);
});
alex
fonte
12
Alex, obrigado por trazer a marca blink para o século 21, todos os meus sites de paródia dos anos 90 agradecem do fundo de seus coraçõezinhos horríveis :)
Casey Rodarmor
1
@alex, posso solicitar que você dê uma olhada em uma pergunta do jquery sobre um tópico diferente aqui: stackoverflow.com/questions/13137404/… ?
Istiaque Ahmed
2
Como você usaria isso (no código)? - desculpe pelo que provavelmente é uma pergunta idiota.
TheSteven
2
@TheSteven Neste exemplo, qualquer elemento com uma classe de blinkterá isso aplicado a ele. Assim, você teria algo como <span class="blink">Blinky Bill</span>e, depois de DOM pronto ou semelhante, execute este código.
alex
39

aqui está piscando com animação:

$(".blink").animate({opacity:0},200,"linear",function(){
  $(this).animate({opacity:1},200);
});

apenas dê uma aula de piscar o que você quiser piscar:

<div class="someclass blink">some text</div>

todos os respeitos a DannyZB em #jquery

recursos:

  • não precisa de plug-ins (mas do próprio JQuery)
  • faz a coisa
nir0
fonte
sim, descobri isso depois de postar) corrigido facilmente
nir0
Isso é bom, sem plug-ins ou coisas sofisticadas
Peter T.
13

Se você preferir não usar jQuery, isso pode ser feito com CSS3

@-webkit-keyframes blink {  
  from { opacity: 1.0; }
  to { opacity: 0.0; }
}

blink {
  -webkit-animation-name: blink;  
  -webkit-animation-iteration-count: infinite;  
  -webkit-animation-timing-function: cubic-bezier(1.0,0,0,1.0);
  -webkit-animation-duration: 1s; 
}

Parece funcionar no Chrome, embora eu pensei ter ouvido um leve ruído de soluço.

Jesse Hattabaugh
fonte
9

Combine os códigos acima, acho que essa é uma boa solução.

function blink(selector){
    $(selector).animate({opacity:0}, 50, "linear", function(){
        $(this).delay(800);
        $(this).animate({opacity:1}, 50, function(){
        blink(this);
        });
        $(this).delay(800);
    });
}

Pelo menos funciona na minha web. http://140.138.168.123/2y78%202782

Moisés
fonte
Esta é uma boa resposta, pois ainda permite que o usuário clique no elemento que pisca durante o ciclo "desligado", ao contrário das soluções que usam ocultar ou alternar ou esmaecer. Veja também a resposta de Hermann Ingjaldsson acima.
cssyphus
fadeIn()e fadeOut()não fez isso por você?
alex
8

Aqui está o meu; dá a você controle sobre os 3 parâmetros importantes:

  • o fade em velocidade
  • a velocidade de desvanecimento
  • a velocidade de repetição

.

setInterval(function() {
    $('.blink').fadeIn(300).fadeOut(500);
}, 1000);
yPhil
fonte
O encadeamento de jQuery seria ótimo aqui
alex de
Isso faz com que desapareça entre piscadas, o que confunde o layout
William Entriken
@alex e Full Decent, vocês dois estão certos :)
yPhil
6

Você também pode usar o método CSS padrão (sem necessidade do plug-in JQuery, mas compatível com todos os navegadores):

// Start blinking
$(".myblink").css("text-decoration", "blink");

// Stop blinking
$(".myblink").css("text-decoration", "none");

Link W3C

Lastnico
fonte
14
Não é compatível com Chrome e Safari!
Lennart Koopmann
Também não é compatível com o IE9.
johndodo
5

Você também pode tentar estes:

<div>some <span class="blink">text</span> are <span class="blink">blinking</span></div>
<button onclick="startBlink()">blink</button>
<button onclick="stopBlink()">no blink</button>

<script>
  function startBlink(){
    window.blinker = setInterval(function(){
        if(window.blink){
           $('.blink').css('color','blue');
           window.blink=false;
         }
        else{
            $('.blink').css('color','white');
            window.blink = true;
        }
    },500);
  }

  function stopBlink(){
    if(window.blinker) clearInterval(window.blinker);
  } 
</script>
jerjer
fonte
4
Esse exemplo polui o namespace global desnecessariamente.
alex
5

Esta é a maneira MAIS FÁCIL (e com o mínimo de codificação):

setInterval(function() {
    $( ".blink" ).fadeToggle();
}, 500);

Violino

Agora, se você está procurando algo mais sofisticado ...

//Blink settings
var blink = {
    obj: $(".blink"),
    timeout: 15000,
    speed: 1000
};

//Start function
blink.fn = setInterval(function () {
    blink.obj.fadeToggle(blink.speed);
}, blink.speed + 1);

//Ends blinking, after 'blink.timeout' millisecons
setTimeout(function () {
    clearInterval(blink.fn);
    //Ensure that the element is always visible
    blink.obj.fadeIn(blink.speed);
    blink = null;
}, blink.timeout);

Violino

Omar
fonte
4
$.fn.blink = function(times, duration) {
    times = times || 2;
    while (times--) {
        this.fadeTo(duration, 0).fadeTo(duration, 1);
    }
    return this;
};
Yckart
fonte
Absolutamente ótimo! O uso de setInterval(function ())pode trazer alguns problemas (borbulhar, parar, ficar "ligado", etc.) Muito obrigado!
Pedro Ferreira
3

Aqui você pode encontrar um plugin jQuery blink com sua demonstração rápida .

Piscando básico (piscando ilimitado, período de piscada ~ 1 seg ):

$('selector').blink();

Em um uso mais avançado, você pode substituir qualquer uma das configurações:

$('selector').blink({
    maxBlinks: 60, 
    blinkPeriod: 1000,   // in milliseconds
    onBlink: function(){}, 
    onMaxBlinks: function(){}
});

Lá você pode especificar o número máximo de piscadas, bem como ter acesso a alguns retornos de chamada: onBlinke onMaxBlinksque são bastante autoexplicativos.

Funciona no IE 7 e 8, Chrome, Firefox, Safari e provavelmente no IE 6 e Opera (embora não testei neles).

(Em divulgação completa: eu sou o criador deste anterior. Tínhamos a necessidade legítima de usá-lo no trabalho [ Eu sei que todos gostamos de dizer isso :-) ] para um alarme dentro de um sistema e pensei em compartilhar apenas para uso em uma necessidade legítima ;-)).

Aqui está outra lista de plugins blink do jQuery .

Fcarriedo
fonte
3

este código é trabalho para mim

   $(document).ready(function () {
        setInterval(function(){
            $(".blink").fadeOut(function () {
                $(this).fadeIn();
            });
        } ,100)
    });
mehdi
fonte
2

Você pode experimentar o efeito jQuery UI Pulsate:

http://docs.jquery.com/UI/Effects/Pulsate

Leniel Maccaferri
fonte
1
Não tenho certeza de por que as pessoas vão tão longe (codificação personalizada) com "pulsar" disponível.
Jeffz
@Jeffz Pessoas que não querem jQuery UI em suas páginas por um pequeno efeito que pode ser alcançado em poucas linhas.
alex
@Alex Você está certo. Desde 2012 me deparei com muitos sites onde algo como piscar era necessário e o jQuery UI não era uma opção.
Jeffz
2

Caminho mais fácil:

$(".element").fadeTo(250, 0).fadeTo(250,1).fadeTo(250,0).fadeTo(250,1);

Você pode repetir isso o quanto quiser ou pode usá-lo dentro de um loop. o primeiro parâmetro de fadeTo () é a duração para que o fade entre em vigor e o segundo parâmetro é a opacidade.

Darush
fonte
1
$(".myblink").css("text-decoration", "blink");

não funciona com o IE 7 e Safari. Funciona bem com Firefox

jvm
fonte
1

Esta solução autônoma piscará o texto um número especificado de vezes e então parará.

O piscar usa opacidade, ao invés de mostrar / ocultar, fade ou alternar para que o DIV permaneça clicável, caso isso seja um problema (permite que você crie botões com texto piscando).

jsFiddle aqui (contém comentários adicionais)

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {

                var init = 0;

                $('#clignotant').click(function() {
                    if (init==0) {
                        init++;
                        blink(this, 800, 4);
                    }else{
                        alert('Not document.load, so process the click event');
                    }
                });

                function blink(selector, blink_speed, iterations, counter){
                    counter = counter | 0;
                    $(selector).animate({opacity:0}, 50, "linear", function(){
                        $(this).delay(blink_speed);
                        $(this).animate({opacity:1}, 50, function(){

                            counter++;

                            if (iterations == -1) {
                                blink(this, blink_speed, iterations, counter);
                            }else if (counter >= iterations) {
                                return false;
                            }else{
                                blink(this, blink_speed, iterations, counter);
                            }
                        });
                        $(this).delay(blink_speed);
                    });
                }

                //This line must come *AFTER* the $('#clignotant').click() function !!
                window.load($('#clignotant').trigger('click'));


            }); //END $(document).ready()

        </script>
    </head>
<body>

    <div id="clignotant" style="background-color:#FF6666;width:500px;
    height:100px;text-align:center;">
        <br>
        Usage: blink(selector, blink_speed, iterations) <br />
        <span style="font-weight:bold;color:blue;">if iterations == -1 blink forever</span><br />
        Note: fn call intentionally missing 4th param
    </div>


</body>
</html>

Fontes:
Danny Gimenez
Moses Christian

cssifo
fonte
1

Link para o autor

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>

<div id="msg"> <strong><font color="red">Awesome Gallery By Anil Labs</font></strong></p> </div>

<script type="text/javascript" >
function blink(selector){
    $(selector).fadeOut('slow', function(){
        $(this).fadeIn('slow', function(){
            blink(this);
        });
    });
}

blink('#msg');
</script>
rd42
fonte
1

Eu ia postar o stepspolyfill cronometrado, mas então me lembrei que eu realmente não quero ver esse efeito, então ...

function blink(element, interval) {
    var visible = true;

    setInterval(function() {
        visible = !visible;
        element.style.visibility = visible ? "visible" : "hidden";
    }, interval || 1000);
}
Ry-
fonte
1

Eu sinto que o seguinte é mais claro e personalizado do que outras respostas.

    var element_to_blink=$('#id_of_element_to_blink');
    var min_opacity=0.2;
    var max_opacity=1.0;
    var blink_duration=2000;
    var blink_quantity=10;
    var current_blink_number=0;

    while(current_blink_number<blink_quantity){
        element_to_blink.animate({opacity:min_opacity},(blink_duration/2),"linear");
        element_to_blink.animate({opacity:max_opacity},(blink_duration/2),"linear");
        current_blink_number+=1;
        }
Hermann Ingjaldsson
fonte
1
Esta é uma boa resposta, pois ainda permite que o usuário clique no elemento que pisca durante o ciclo "desligado", ao contrário das soluções que usam ocultar ou alternar ou esmaecer. Veja também a resposta de Moses Christian abaixo.
cssyphus
1
1. Seu primeiro grupo de vars é global 2. Seus vars são enganosos, element_idapontando para um seletor 3. Você seleciona o mesmo elemento repetidamente
alex
Obrigado pelo feedback, analisei esses pontos e os corrigi.
Fzs2 de
1

Este código fará com que o (s) elemento (s) pisquem efetivamente sem tocar no layout (como fadeIn().fadeOut()fará), apenas atuando na opacidade; Pronto, texto piscando; utilizável para o bem e para o mal :)

setInterval(function() {
  $('.blink').animate({ opacity: 1 }, 400).animate({ opacity: 0 }, 600);
}, 800);
yPhil
fonte
0

Piscando!

var counter = 5; // Blinking the link 5 times
var $help = $('div.help');
var blinkHelp = function() {
    ($help.is(':visible') ? $help.fadeOut(250) : $help.fadeIn(250));    
    counter--;
    if (counter >= 0) setTimeout(blinkHelp, 500);
};
blinkHelp();
mlklc
fonte
0

Este código pode ajudar neste tópico. Simples, mas útil.

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        setInterval("$('#myID/.myClass').toggle();",500);
    });
</script>
Jamer Gerero
fonte
1
Isso removerá o elemento em questão quando estiver invisível, o que pode prejudicar a estrutura da página.
ramblinjan
0

Eu gosto da resposta do alex, então esta é uma extensão disso sem um intervalo (já que você precisaria limpar esse intervalo eventualmente e saber quando você quer que um botão pare de piscar. Esta é uma solução onde você passa o elemento jquery , o ms que você deseja para o deslocamento intermitente e o número de vezes que você deseja que o elemento pisque:

function blink ($element, ms, times) {
    for (var i = 0; i < times; i++) {
        window.setTimeout(function () {
            if ($element.is(':visible')) {
                $element.hide();
            } else {
                $element.show();
            }
        }, ms * (times + 1));
    }
}
Vinay
fonte
0

Algumas dessas respostas são bastante complicadas, isso é um pouco mais fácil:

$.fn.blink = function(time) {
    var time = typeof time == 'undefined' ? 200 : time;
    this.hide(0).delay(time).show(0);
}

$('#msg').blink();
Aram Kocharyan
fonte
0

Vendo o número de visualizações sobre esta questão, e a falta de respostas que cobrem tanto piscar quanto pará-la, aqui vai: tente jQuery.blinker out ( demo ).

HTML:

<p>Hello there!</p>

JavaScript:

var p = $("p");

p.blinker();

p.bind({
    // pause blinking on mouseenter
    mouseenter: function(){
        $(this).data("blinker").pause();
    },
    // resume blinking on mouseleave
    mouseleave: function(){
        $(this).data("blinker").blinkagain();
    }
});
user1728278
fonte
0

Na verdade, um plugin para um efeito de piscar simples é um exagero. Portanto, depois de experimentar várias soluções, escolhi entre uma linha de javascript e uma classe CSS que controla exatamente como desejo piscar os elementos (no meu caso, para que a piscada funcione, só preciso mudar o fundo para transparente, para que o texto ainda está visível):

JS:

$(document).ready(function () {
        setInterval(function () { $(".blink").toggleClass("no-bg"); }, 1000);
    });

CSS:

span.no-bg {
    background-color: transparent;
}

Exemplo completo neste js fiddle .

Lucian
fonte
0

A funcionalidade de piscar pode ser implementada por javascript simples, sem necessidade de plugin jquery ou mesmo jquery.

Isso funcionará em todos os navegadores , pois está usando a funcionalidade básica

Aqui está o código

HTML:

<p id="blinkThis">This will blink</p>

Código JS:

var ele = document.getElementById('blinkThis');
setInterval(function () {
    ele.style.display = (ele.style.display == 'block' ? 'none' : 'block');
}, 500);

e um violino funcionando

V31
fonte
0

Isso é o que acabou funcionando melhor para mim. Usei jQuery fadeTo porque está no WordPress, que já vincula o jQuery. Caso contrário, provavelmente teria optado por algo com JavaScript puro antes de adicionar outra solicitação http para um plugin.

$(document).ready(function() {
    // One "blink" takes 1.5s
    setInterval(function(){
        // Immediately fade to opacity: 0 in 0ms
        $(".cursor").fadeTo( 0, 0);
        // Wait .75sec then fade to opacity: 1 in 0ms
        setTimeout(function(){
            $(".cursor").fadeTo( 0, 1);
        }, 750);
    }, 1500);
});
Tom Holland
fonte
0

Eu escrevi uma extensão jquery simples para piscar de texto enquanto especifico o número de vezes que o texto deve piscar. Espero que ajude outros.

//add Blink function to jquery 
jQuery.fn.extend({
    Blink: function (i) {
        var c = i; if (i===-1 || c-- > 0) $(this).fadeTo("slow", 0.1, function () { $(this).fadeTo("slow", 1, function () { $(this).Blink(c);  }); });
    }
});
//Use it like this
$(".mytext").Blink(2); //Where 2 denotes number of time it should blink.
//For continuous blink use -1 
$(".mytext").Blink(-1);
Rohit Patel
fonte
0

Texto piscando para iniciar e parar ao clicar no botão -

<input type="button" id="btnclick" value="click" />
var intervalA;
        var intervalB;

        $(document).ready(function () {

            $('#btnclick').click(function () {
                blinkFont();

                setTimeout(function () {
                    clearInterval(intervalA);
                    clearInterval(intervalB);
                }, 5000);
            });
        });

        function blinkFont() {
            document.getElementById("blink").style.color = "red"
            document.getElementById("blink").style.background = "black"
            intervalA = setTimeout("blinkFont()", 500);
        }

        function setblinkFont() {
            document.getElementById("blink").style.color = "black"
            document.getElementById("blink").style.background = "red"
            intervalB = setTimeout("blinkFont()", 500);
        }

    </script>

    <div id="blink" class="live-chat">
        <span>This is blinking text and background</span>
    </div>
Johnny
fonte