Мигающий текстовый кросс-браузер

Я хочу сделать мигающий текст.

Сначала я попробовал тег <blink> HTML, но он поддерживается только в Mozilla Firefox.

Затем я попробовал CSS:

<style>
.blink {text-decoration: blink; }
</style>

Он не работает на IE 6.

Затем я попробовал javascript:

<script type="text/javascript">
function doBlink() {
  // Blink, Blink, Blink...
  var blink = document.all.tags("BLINK")
  for (var i=0; i < blink.length; i++)
    blink[i].style.visibility = blink[i].style.visibility == "" ? "hidden" : "" 
}

function startBlink() {

  if (document.all)
    setInterval("doBlink()",500)
}
window.onload = startBlink;
</script>

Теперь он не работает в Safari или Chrome.

Может ли кто-нибудь помочь мне использовать мигающий текст, который будет работать на всех популярных браузерах? (IE 6, Mozilla Firefox, Google Chrome Safari, Opera.)

Ответ 1

Это может быть достигнуто с помощью 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;
}

Он даже обладает хорошим эффектом затухания. Прекрасно работает в Safari, но Chrome немного кричит внутри.

Ответ 2

Поистине кросс-браузер/старый браузер мигает тегом...

HTML

<!DOCTYPE html>
<html>
<blink>ULTIMATE BLINK TAG!</blink>

<!--[if lt IE 10]>
<script>

toggleItem = function(){
    var el = document.getElementsByTagName('blink')[0];
    if (el.style.display === 'block') {
        el.style.display = 'none';
    } else {
        el.style.display = 'block';
    }
}

setInterval(toggleItem, 1000);

</script>
<![endif]-->

</html>

CSS

blink {
  -webkit-animation: blink 1s steps(5, start) infinite;
  -moz-animation:    blink 1s steps(5, start) infinite;
  -o-animation:      blink 1s steps(5, start) infinite; 
  animation:         blink 1s steps(5, start) infinite;
}

@-webkit-keyframes blink {
  to { visibility: hidden; }
}
@-moz-keyframes blink {
  to { visibility: hidden; }
}
@-o-keyframes blink {
  to { visibility: hidden; }
}
@keyframes blink {
  to { visibility: hidden; }
}

Ответ 3

var el = $(".blink");
setInterval(function() {el.toggle()}, 500);

Ответ 4

Простая реализация jquery, не стесняйтесь расширяться в соответствии с вашими потребностями http://jsfiddle.net/L69yj/

var element = $(".blink");
var shown = true;
setInterval(toggle, 500);

function toggle() {
    if(shown) {
        element.hide();
        shown = false;
    } else {
        element.show();
        shown = true;
    }
}

Ответ 5

Попробуйте этот jQuery

function blinks(hide) {
    if (hide === 1) {
        $('.blink').show();
        hide = 0;
    }
    else {
        $('.blink').hide();
        hide = 1;
    }
    setTimeout("blinks("+hide+")", 400);
}

$(document).ready(function(){
    blinks(1);
});

Примечание. Включите файл jquery и дайте имя класса 'blink' для элемента, который вы хотите мигать.

Совет:.show() и .hide() не сохраняют ширину и высоту элемента... Если вам нужно скрыть элемент, но не его место (размеры) в документе, используйте. css ( "видимость", "скрытая или видимая" ).

Ответ 6

Работает в IE 10, Firefox 23.0.1, Google Chrome 29.0, Opera 16.0

blink(0.7);

function blink(speed) {

    if (speed) {
        if (document.getElementsByTagName('blink')) 
            setInterval("blink()", speed*2000);

        return; 
    }

    var blink = document.getElementsByTagName('blink');

    for (var i=0; i<blink.length; i++) {
        blink[i].style.visibility = blink[i].style.visibility == "" ? "hidden" : "";
    }
}

Ответ 7

<p id="blink">My name is Ankurji1989</p>


<script type="text/javascript">

var blink_line = document.getElementById("blink");

function d_block(){

    if(blink_line.style.visibility=='hidden')
    {
        blink_line.style.visibility='visible';
    }
    else{
        blink_line.style.visibility='hidden';
    }

}
setInterval(function(){d_block();}, 1000);

</script>

Ответ 8

Он работает плавно во всех браузерах... Попробуйте, он будет работать

<script type="text/javascript">
    function blinker()
    {
        if(document.getElementById("blink"))
        {
            var d = document.getElementById("blink") ;
            d.style.color= (d.style.color=='red'?'white':'red');
            setTimeout('blinker()', 500);
        }
    }
</script>

<body onload="blinker();">
    <div id="blink">Blinking Text</div>
</body>

Ответ 9

Вы также можете использовать это:

function blinkIt() {
    if (!document.all) return;
    else {
        for(i=0;i<document.all.tags('blink').length;i++){
            s=document.all.tags('blink')[i];
            s.style.visibility=(s.style.visibility=='visible') ?'hidden':'visible';
        }
    }
}

Вместо использования тега вы можете использовать таймер. Я тестировал это на IE7 и Firefox. Оба браузера позволяют это, однако Chrome не работает должным образом. Надеюсь, вы получили ответ.

Ответ 10

Это отлично работает:

<script type="text/javascript">
    function blinker()
    {
        if(document.querySelector("blink"))
        {
            var d = document.querySelector("blink") ;
            d.style.visibility= (d.style.visibility=='hidden'?'visible':'hidden');
            setTimeout('blinker()', 500);
        }
    }
</script>



<body onload="blinker();">
    <blink>Blinking Text</blink>
</body>

Это похоже на старую версию, плюс она тоже используется.

Ответ 11

Это не мой код, но он хорошо работает на нашем веб-сайте. Единственная проблема заключается в том, что он работает, если включен в html, но не при упоминании как отдельный script.

    <style>
    #blinker    { color: #58bf7a }
    #blinker.on { color: #58d878 }
    </style> 

    <script> 
        var blinker;
        function blink() {
            blinker.className = blinker.className ? "" : "on";
        }
        window.onload = function() {
            blinker = document.getElementById("blinker");
            var interval_id = setInterval(blink, 1000);
        }
    </script>