Я использую призму для отображения токенов, и если у меня есть курсор, который оживляет мигание, проблема в том, что цвет токена установлен почти на тот же цвет, что и фон курсора:
Здесьминимальный пример:
@keyframes terminal-blink {
0%, 100% {
background-color: var(--background, #000);
color: var(--color, #aaa);
border-bottom: none;
border-left: none;
margin-left: 0;
}
50% {
background-color: var(--color, #aaa);
color: var(--background, #000);
border-bottom: none;
border-left: none;
margin-left: 0;
}
}
.cursor.blink {
-webkit-animation: terminal-blink 1s infinite steps(1, start);
-moz-animation: terminal-blink 1s infinite steps(1, start);
-ms-animation: terminal-blink 1s infinite steps(1, start);
animation: terminal-blink 1s infinite steps(1, start);
}
body {
background: black;
font-family: monospace;
}
.token.punctuation {
color: #999;
}
.token.tag {
color: red;
}
<div>
<span class="cursor blink">
<span style="font-weight:bold;" class="token punctuation" data-text="<"><</span>
</span>
</div>
<br/>
<div>
<span class="cursor blink">
<span style="font-weight:bold;" class="" data-text="x">x</span>
</span>
</div>
<div>
<span class="cursor blink">
<span style="font-weight:bold;" class="token tag" data-text="x">x</span>
</span>
</div>
Я пытался установить другую анимацию, которая будет перезаписывать .token.punctuation, используя:
@keyframes prism-cursor {
0%, 100% {
color: currentColor;
}
50% {
color: #000;
}
}
.cursor .token {
animation: prism-cursor 1s infinite steps(1, start);
}
, но она не работаети это не синхронизировано, похоже, что есть 3 шага анимации.
Я хочу иметь color: var(--color)
, когда курсор виден (анимация на 50%), но быть цветом из .token, когда курсор невидим 0%, 100%.(.token.tag
должен быть красным на черном фоне и черным на сером).
Вот пример реального кода, который у меня есть https://codepen.io/jcubic/pen/MqyvEG
Возможно ли что-то подобное без изменения .token
cssни HTML?