Мигающий текст jQuery

Ответы:

52

Попробуйте использовать этот плагин мигания

Например

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

Это также очень простой плагин, и вы, вероятно, могли бы расширить его, чтобы останавливать анимацию и запускать ее по запросу.

Баркмедли
источник
1
Я бы использовал блинк-тег и проверял с помощью jQuery, является ли браузер IE, и если не мигал с помощью этого плагина.
Натриум,
11
это больше усилий, чем оно того стоит, не так ли?
barkmadley
1
barkmadley, как мне остановить мигание?
HP.
Спасибо за эту информацию :)
Rayees AC
93

Плагин для мигания текста для меня звучит как излишний ...

Попробуй это...

$('.blink').each(function() {
    var elem = $(this);
    setInterval(function() {
        if (elem.css('visibility') == 'hidden') {
            elem.css('visibility', 'visible');
        } else {
            elem.css('visibility', 'hidden');
        }    
    }, 500);
});
Алекс
источник
12
Алекс, спасибо за то, что вы принесли блинк-тег в 21-й век, все мои пародийные сайты 90-х благодарят вас от всей души :)
Кейси Родармор
1
@alex, могу я попросить вас взглянуть на вопрос jquery по другой теме здесь: stackoverflow.com/questions/13137404/… ?
Istiaque Ahmed
2
Как бы вы использовали это (в коде)? - извините за, наверное, глупый вопрос.
TheSteven
2
@TheSteven В этом примере к любому элементу с классом blinkбудет применено this. Итак, у вас будет что-то вроде, <span class="blink">Blinky Bill</span>а затем после того, как DOM будет готов или что-то подобное, запустите этот код.
Alex
39

вот мигает с анимацией:

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

просто дайте классу моргания то, что вы хотите моргнуть:

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

С уважением, DannyZB на #jquery

функции:

  • не нужны плагины (кроме самого JQuery)
  • делает вещь
nir0
источник
да, я понял это после публикации) хотя исправлено легко
nir0
Это хорошо, без каких-либо плагинов или
Питер Т.
13

Если вы не хотите использовать jQuery, это можно сделать с помощью 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; 
}

Кажется, работает в Chrome, хотя мне показалось, что я услышал легкий рыдающий звук.

Джесси Хаттабо
источник
9

Объедините приведенные выше коды, я думаю, что это хорошее решение.

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

По крайней мере, это работает в моей сети. http://140.138.168.123/2y78%202782

Моисей
источник
Это хороший ответ, поскольку он по-прежнему позволяет пользователю нажимать на мигающий элемент во время цикла «выключено», в отличие от решений, которые используют скрытие, переключение или исчезновение. См. Также ответ Германа Ингьялдссона выше.
cssyphus 04
fadeIn()и fadeOut()не сделал это за тебя?
Alex
8

Вот мой; он дает вам контроль над тремя важными параметрами:

  • снижение скорости
  • скорость исчезновения
  • скорость повтора

.

setInterval(function() {
    $('.blink').fadeIn(300).fadeOut(500);
}, 1000);
yPhil
источник
jQuery chaining здесь была бы замечательной
Alex
Это заставляет его исчезать между
миганиями, что нарушает
@alex и Full Decent, вы оба правы :)
yPhil
6

Вы также можете использовать стандартный способ CSS (плагин JQuery не нужен, но совместим со всеми браузерами):

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

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

Ссылка W3C

Lastnico
источник
14
Несовместимо с Chrome и Safari!
Леннарт Купманн
Не совместим с IE9.
johndodo
5

Вы также можете попробовать следующее:

<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
Этот пример без нужды загрязняет глобальное пространство имен.
Alex
5

Это САМЫЙ ПРОСТОЙ способ (и с наименьшим количеством кода):

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

Скрипка

Теперь, если вы ищете что-то более сложное ...

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

Скрипка

Омар
источник
4
$.fn.blink = function(times, duration) {
    times = times || 2;
    while (times--) {
        this.fadeTo(duration, 0).fadeTo(duration, 1);
    }
    return this;
};
yckart
источник
Абсолютно здорово! Использование setInterval(function ())может вызвать некоторые проблемы (пузырение, остановка, "включение" и т. Д.) Большое спасибо!
Педро Феррейра
3

Здесь вы можете найти плагин jQuery blink с его быстрой демонстрацией .

Базовое мигание (мигание неограниченное, период мигания ~ 1 сек ):

$('selector').blink();

При более продвинутом использовании вы можете переопределить любую из настроек:

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

Здесь вы можете указать максимальное количество миганий, а также получить доступ к нескольким обратным вызовам: onBlinkиonMaxBlinks это довольно очевидно.

Работает в IE 7 и 8, Chrome, Firefox, Safari и, возможно, в IE 6 и Opera (хотя на них не тестировался).

(Для полного раскрытия информации: я являюсь создателем этого предыдущего. У нас была законная необходимость использовать его на работе [ я знаю, мы все любим это говорить :-) ] для сигнализации в системе, и я подумал о том, чтобы поделиться только для использования по законной необходимости ;-)).

Вот еще один список плагинов jQuery blink .

fcarriedo
источник
3

этот код работает для меня

   $(document).ready(function () {
        setInterval(function(){
            $(".blink").fadeOut(function () {
                $(this).fadeIn();
            });
        } ,100)
    });
мехди
источник
2

Вы можете попробовать эффект jQuery UI Pulsate:

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

Лениэль Маккаферри
источник
1
Я не уверен, почему люди идут на такие длины (пользовательское кодирование) с доступным "пульсирующим".
Jeffz
@Jeffz Люди, которым не нужен jQuery UI на своей странице, ради одного небольшого эффекта, которого можно добиться в несколько строк.
Alex
@Alex Вы правы. С 2012 года я встречал много сайтов, на которых требовалось что-то вроде мигания, а пользовательский интерфейс jQuery не подходил.
Jeffz
2

Самый простой способ:

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

Вы можете повторять это столько, сколько захотите, или можете использовать это внутри цикла. первый параметр fadeTo () - это продолжительность действия затухания, а второй параметр - непрозрачность.

Даруш
источник
1
$(".myblink").css("text-decoration", "blink");

не работают с IE 7 и Safari. Хорошо работать с Firefox

jvm
источник
1

Это автономное решение мигнет текстом указанное количество раз, а затем остановится.

Мигание использует непрозрачность, а не отображение / скрытие, исчезновение или переключение, чтобы DIV оставался интерактивным, в случае, если это когда-либо проблема (позволяет создавать кнопки с мигающим текстом).

jsFiddle здесь (содержит дополнительные комментарии)

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

Источники:
Дэнни Хименес
Моисей Кристиан

cssyphus
источник
1

Ссылка на автора

<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
источник
1

Я собирался опубликовать stepsполифилл -time, но потом вспомнил, что действительно не хочу когда-либо видеть этот эффект, поэтому ...

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

    setInterval(function() {
        visible = !visible;
        element.style.visibility = visible ? "visible" : "hidden";
    }, interval || 1000);
}
Ry-
источник
1

Я считаю, что следующие ответы более ясны и понятны, чем другие.

    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
Это хороший ответ, поскольку он по-прежнему позволяет пользователю нажимать на мигающий элемент во время цикла «выключено», в отличие от решений, которые используют скрытие, переключение или исчезновение. См. Также ответ Моисея Кристиана ниже.
cssyphus 04
1
1. Ваша первая группа варов является глобальной 2. Ваши вары вводят в заблуждение, element_idуказывая на селектор 3. Вы выбираете один и тот же элемент снова и снова
Алекс
Спасибо за отзыв, я рассмотрел эти моменты и исправил их.
Fzs2
1

Этот код будет эффективно заставлять элементы мигать, не касаясь макета (как и fadeIn().fadeOut()будет), просто воздействуя на непрозрачность; Вот так, мигающий текст; можно использовать как во благо, так и во зло :)

setInterval(function() {
  $('.blink').animate({ opacity: 1 }, 400).animate({ opacity: 0 }, 600);
}, 800);
yPhil
источник
0

Мигает!

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
источник
0

Этот код может помочь в этой теме. Просто, но полезно.

<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
Это приведет к удалению рассматриваемого элемента, когда он невидим, что в конечном итоге может повредить структуру страницы.
ramblinjan
0

Мне нравится ответ Алекса, так что это немного расширение этого без интервала (так как вам нужно будет в конечном итоге очистить этот интервал и знать, когда вы хотите, чтобы кнопка перестала мигать. Это решение, в котором вы передаете элемент jquery , мс, которое вы хотите для смещения мигания и сколько раз вы хотите, чтобы элемент мигал:

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
источник
0

Некоторые из этих ответов довольно сложны, это немного проще:

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

$('#msg').blink();
Арам Кочарян
источник
0

Видя количество просмотров по этому вопросу и отсутствие ответов, охватывающих как мигание, так и его остановку, вот что: попробуйте jQuery.blinker out ( демонстрация ).

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
источник
0

Действительно, плагин для простого эффекта мигания - это излишне. Поэтому после экспериментов с различными решениями я выбрал одну строку javascript и класс CSS, который точно контролирует, как я хочу мигать элементы (в моем случае, чтобы мигание работало, мне нужно только изменить фон на прозрачный, чтобы текст все еще виден):

JS:

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

CSS:

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

Полный пример на этой скрипке js .

Люциан
источник
0

Функциональность Blink может быть реализована с помощью простого javascript, без необходимости в плагине jquery или даже jquery.

Это будет работать во всех браузерах , так как использует базовую функциональность.

Вот код

HTML:

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

Код JS:

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

и рабочая скрипка

V31
источник
0

Это то, что лучше всего сработало для меня. Я использовал jQuery fadeTo, потому что он находится в WordPress, который уже связывает jQuery. В противном случае я, вероятно, выбрал бы что-то с чистым JavaScript, прежде чем добавлять еще один HTTP-запрос для плагина.

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

Я написал простое расширение jquery для мигания текста, указав, сколько раз он должен мигать текстом, надеюсь, это поможет другим.

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

Текст Мигание начинается и останавливается при нажатии кнопки -

<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>
Джонни
источник