Testo lampeggiante jQuery


Risposte:


51

Prova a utilizzare questo plug-in blink

Per esempio

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

È anche un plugin molto semplice e potresti probabilmente estenderlo per interrompere l'animazione e avviarlo su richiesta.


1
Userei il blink-tag e verificherei con jQuery se il browser è IE e, in caso contrario, lampeggerei con questo plugin.
Natrium

11
è più sforzo di quanto valga, no?
barkmadley

1
barkmadley, come faccio a impostare lo stop per il lampeggiamento?
HP.

93

Un plugin per far lampeggiare del testo mi sembra un po 'eccessivo ...

Prova questo...

$('.blink').each(function() {
    var elem = $(this);
    setInterval(function() {
        if (elem.css('visibility') == 'hidden') {
            elem.css('visibility', 'visible');
        } else {
            elem.css('visibility', 'hidden');
        }    
    }, 500);
});

12
Alex, grazie per aver portato il tag blink nel 21 ° secolo, tutti i miei siti web di parodia degli anni '90 ti ringraziano dal profondo dei loro brutti cuoricini :)
Casey Rodarmor

1
@alex, posso chiederti di dare un'occhiata a una domanda jquery su un argomento diverso qui: stackoverflow.com/questions/13137404/… ?
Istiaque Ahmed

2
Come useresti questo (nel codice)? - scusa per quella che probabilmente è una domanda stupida.
TheSteven

2
@TheSteven In questo esempio, a qualsiasi elemento con una classe blinkverrà applicato ciò. Quindi avresti qualcosa di simile <span class="blink">Blinky Bill</span>e poi dopo che DOM è pronto o simile, fai eseguire questo codice.
alex

39

ecco lampeggiare con animazione:

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

basta dare una lezione di ammiccamento qualunque cosa tu voglia lampeggiare:

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

tutti i saluti a DannyZB su #jquery

Caratteristiche:

  • non ha bisogno di plugin (ma JQuery stesso)
  • fa la cosa

sì, l'ho capito dopo aver pubblicato) risolto facilmente però
nir0

È bello senza plug-in o roba di fantasia
Peter T.

13

Se preferisci non utilizzare jQuery, puoi farlo con 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; 
}

Sembra funzionare in Chrome, anche se mi è sembrato di sentire un leggero singhiozzo.


9

Combina i codici sopra, penso che questa sia una buona soluzione.

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

Almeno funziona sul mio web. http://140.138.168.123/2y78%202782


Questa è una buona risposta in quanto consente comunque all'utente di fare clic sull'elemento lampeggiante durante il ciclo di "spegnimento", a differenza delle soluzioni che utilizzano nascondi, alterna o dissolvenza. Vedi anche la risposta di Hermann Ingjaldsson sopra.
cssyphus

fadeIn()e fadeOut()non l'ha fatto per te?
alex

8

Ecco il mio; ti dà il controllo sui 3 parametri che contano:

  • la velocità di dissolvenza
  • la velocità di dissolvenza
  • la velocità di ripetizione

.

setInterval(function() {
    $('.blink').fadeIn(300).fadeOut(500);
}, 1000);

jQuery chaining sarebbe fantastico qui
alex

Questo lo fa scomparire tra i battiti di ciglia che rovina il layout
William Entriken

@alex e Full Decent avete entrambi ragione :)
yPhil

6

Puoi anche utilizzare il metodo CSS standard (non è necessario il plug-in JQuery, ma compatibile con tutti i browser):

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

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

W3C Link


14
Non compatibile con Chrome e Safari!
Lennart Koopmann

Non compatibile neanche con IE9.
johndodo

5

Puoi anche provare questi:

<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>

4
Quell'esempio inquina inutilmente lo spazio dei nomi globale.
alex

5

Questo è il modo PIÙ FACILE (e con la minima codifica):

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

Violino

Ora, se stai cercando qualcosa di più sofisticato ...

//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


4
$.fn.blink = function(times, duration) {
    times = times || 2;
    while (times--) {
        this.fadeTo(duration, 0).fadeTo(duration, 1);
    }
    return this;
};

Assolutamente fantastico! L'uso di setInterval(function ())può portare con sé alcuni problemi (bolle, arresto, permanenza "acceso", ecc.) Grazie mille!
Pedro Ferreira

3

Qui puoi trovare un plug-in jQuery blink con la sua rapida demo .

Lampeggiamento di base (lampeggiamento illimitato, periodo di lampeggiamento ~ 1 sec ):

$('selector').blink();

Su un utilizzo più avanzato, puoi sovrascrivere qualsiasi impostazione:

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

Qui puoi specificare il numero massimo di lampeggi e avere accesso a un paio di richiamate: onBlinkeonMaxBlinks questo è abbastanza autoesplicativo.

Funziona in IE 7 e 8, Chrome, Firefox, Safari e probabilmente in IE 6 e Opera (anche se non sono stati testati su di essi).

(In piena trasparenza: sono il creatore di questo precedente. Avevamo la legittima necessità di usarlo al lavoro [ So che a tutti piace dirlo :-) ] per un allarme all'interno di un sistema e ho pensato di condividerlo solo per l'uso su una necessità legittima ;-)).

Ecco un altro elenco di plugin jQuery blink .


3

questo codice funziona per me

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

2

Puoi provare l'effetto Pulsate dell'interfaccia utente di jQuery:

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


1
Non sono sicuro del motivo per cui le persone si spingono a tanto (codifica personalizzata) con "pulsate" disponibile.
Jeffz

@ Jeffz Persone che non vogliono l'interfaccia utente jQuery sulla loro pagina per un piccolo effetto che può essere ottenuto in poche righe.
alex

@Alex Hai ragione. Dal 2012 mi sono imbattuto in molti siti in cui era necessario qualcosa come l'ammiccamento e l'interfaccia utente jQuery non era un'opzione.
Jeffz

2

Modo più semplice:

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

Puoi ripetere quanto vuoi o puoi usarlo all'interno di un ciclo. il primo parametro di fadeTo () è la durata dell'effetto della dissolvenza e il secondo parametro è l'opacità.


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

non funziona con IE 7 e Safari. Funziona bene con Firefox


1

Questa soluzione autonoma farà lampeggiare il testo un numero di volte specificato e quindi si fermerà.

Il lampeggiamento utilizza l'opacità, piuttosto che mostrare / nascondere, dissolvere o attivare / disattivare in modo che il DIV rimanga cliccabile, nel caso in cui sia un problema (ti consente di creare pulsanti con testo lampeggiante).

jsFiddle qui (contiene commenti aggiuntivi)

<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>

Fonti:
Danny Gimenez
Moses Christian


1

Link all'autore

<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>

1

Stavo per pubblicare il stepspolyfill -timed, ma poi mi sono ricordato che davvero non voglio vedere mai questo effetto, quindi ...

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

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

1

Ritengo che quanto segue sia di maggiore chiarezza e personalizzazione rispetto ad altre risposte.

    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;
        }

1
Questa è una buona risposta in quanto consente comunque all'utente di fare clic sull'elemento lampeggiante durante il ciclo di "spegnimento", a differenza delle soluzioni che utilizzano nascondi, alterna o dissolvenza. Vedi anche la risposta di Moses Christian di seguito.
cssyphus

1
1. Il tuo primo gruppo di variabili è globale 2. Le tue variabili sono fuorvianti, element_idindicano un selettore 3. Seleziona lo stesso elemento più e più volte
alex

Grazie per il feedback, ho esaminato questi punti e li ho risolti.
Fzs2

1

Questo codice farà effettivamente lampeggiare l'elemento (i) senza toccare il layout (come fadeIn().fadeOut()farà) semplicemente agendo sull'opacità; Ecco qua, testo lampeggiante; utilizzabile sia per il bene che per il male :)

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

0

Lampeggiante!

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();

0

Questo codice potrebbe aiutare a questo argomento. Semplice, ma utile.

<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>

1
Ciò rimuoverà l'elemento in questione quando è invisibile, il che potrebbe infine danneggiare la struttura della pagina.
ramblinjan

0

Mi piace la risposta di alex, quindi questa è un po 'un'estensione di quella senza un intervallo (dal momento che dovresti cancellare quell'intervallo alla fine e sapere quando vuoi che un pulsante smetta di lampeggiare. Questa è una soluzione in cui passi l'elemento jquery , i ms che desideri per l'offset lampeggiante e il numero di volte in cui desideri che l'elemento lampeggi:

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));
    }
}

0

Alcune di queste risposte sono piuttosto complicate, questo è un po 'più semplice:

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

$('#msg').blink();

0

Vedendo il numero di visualizzazioni su questa domanda e la mancanza di risposte che coprono sia il lampeggiare che l'arresto, ecco: prova jQuery.blinker ( 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();
    }
});

0

In effetti un plugin per un semplice effetto ammiccante è eccessivo. Quindi, dopo aver sperimentato varie soluzioni, ho scelto tra una riga di javascript e una classe CSS che controlla esattamente come voglio far lampeggiare gli elementi (nel mio caso affinché il lampeggiamento funzioni devo solo cambiare lo sfondo in trasparente, in modo che il testo è ancora visibile):

JS:

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

CSS:

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

Esempio completo in questo violino js .


0

La funzionalità Blink può essere implementata da semplice javascript, nessun requisito per il plugin jquery o anche jquery.

Funzionerà in tutti i browserFunzionerà , poiché utilizza le funzionalità di base

Ecco il codice

HTML:

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

Codice JS:

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

e un violino funzionante


0

Questo è ciò che ha finito per funzionare meglio per me. Ho usato jQuery fadeTo perché è su WordPress, che già collega jQuery. Altrimenti, probabilmente avrei optato per qualcosa con JavaScript puro prima di aggiungere un'altra richiesta http per un 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);
});

0

Ho scritto una semplice estensione jquery per il testo lampeggiante specificando il numero di volte in cui dovrebbe lampeggiare il testo, spero che aiuti gli altri.

//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);

0

Testo Avvio e arresto lampeggianti al clic del pulsante -

<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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.