it-swarm.com.ru

Имитация мигающего тега с CSS3-анимацией

Я действительно хочу, чтобы фрагмент текста моргал в стиле старой школы без использования JavaScript или текстового оформления.

Нет переходов, только * мигать *, * мигать *, * мигать *!


EDIT: Это отличается от этот вопрос , потому что я прошу мигать без непрерывных переходов, тогда как ОП других вопросов спрашивает, как заменить мигание непрерывными переходами

138
m93a

Исходный Netscape <blink> имел рабочий цикл 80%. Это довольно близко, хотя настоящий <blink> влияет только на текст:

.blink {
  animation: blink-animation 1s steps(5, start) infinite;
  -webkit-animation: blink-animation 1s steps(5, start) infinite;
}
@keyframes blink-animation {
  to {
    visibility: hidden;
  }
}
@-webkit-keyframes blink-animation {
  to {
    visibility: hidden;
  }
}
This is <span class="blink">blinking</span> text.

Вы можете найти больше информации о Анимации ключевых кадров здесь .

223
Neil

Позвольте мне показать вам маленький трюк.

Как Arkanciscan сказал , вы можете использовать CSS3 переходы. Но его решение выглядит иначе, чем оригинальный тег.

Что вам действительно нужно сделать, это:

@keyframes blink {
  50% {
    opacity: 0.0;
  }
}
@-webkit-keyframes blink {
  50% {
    opacity: 0.0;
  }
}
.blink {
  animation: blink 1s step-start 0s infinite;
  -webkit-animation: blink 1s step-start 0s infinite;
}
<span class="blink">Blink</span>

JSfiddle Demo

80
m93a

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

@keyframes blink {  
  0% { color: red; }
  100% { color: black; }
}
@-webkit-keyframes blink {
  0% { color: red; }
  100% { color: black; }
}
.blink {
  -webkit-animation: blink 1s linear infinite;
  -moz-animation: blink 1s linear infinite;
  animation: blink 1s linear infinite;
} 
This is <span class="blink">blink</span>

Вам нужны специфичные для браузера/поставщика префиксы: http://jsfiddle.net/es6e6/1/ .

45
Belyash

На самом деле нет необходимости в visibility или opacity - вы можете просто использовать color, у которого есть преимущество, чтобы любой "мигать" только текст:

blink {
    display: inline;
    color: inherit;
    animation: blink 1s steps(1) infinite;
    -webkit-animation: blink 1s steps(1) infinite;
}
@keyframes blink { 50% { color: transparent; } }
@-webkit-keyframes blink { 50% { color: transparent; } }
Here is some text, <blink>this text will blink</blink>, this will not.

Скрипка: http://jsfiddle.net/2r8JL/

29
S.B.

Я собираюсь в ад за это:

=keyframes($name)
  @-webkit-keyframes #{$name}
    @content
  @-moz-keyframes #{$name}
    @content
  @-ms-keyframes #{$name}
    @content
  @keyframes #{$name}
    @content


+keyframes(blink)
  25%
    zoom: 1
    opacity: 1

  65%
    opacity: 1 

  66%
    opacity: 0

  100%
    opacity: 0

body
  font-family: sans-serif
  font-size: 4em
  background: #222
  text-align: center

  .blink
    color: rgba(#fff, 0.9)
    +animation(blink 1s 0s reverse infinite)
    +transform(translateZ(0))

.table
  display: table
  height: 5em
  width: 100%
  vertical-align: middle

  .cell
    display: table-cell
    width: 100%
    height: 100%
    vertical-align: middle

http://codepen.io/anon/pen/kaGxC (крути с бурбоном)

10
airtonix

Еще один вариант

.blink {
    -webkit-animation: blink 1s step-end infinite;
            animation: blink 1s step-end infinite;
}
@-webkit-keyframes blink { 50% { visibility: hidden; }}
        @keyframes blink { 50% { visibility: hidden; }}
This is <span class="blink">blink</span>
6
Alexander Sofin

В моем случае работает мигающий текст с интервалом 1 с.

.blink_me {
  color:#e91e63;
  font-size:140%;
  font-weight:bold;
  padding:0 20px 0  0;
  animation: blinker 1s linear infinite;
}

@keyframes blinker {
  50% { opacity: 0.4; }
}
1
Ajay