การเลียนแบบแท็กกะพริบด้วยภาพเคลื่อนไหว CSS3


149

ฉันต้องการทำให้ชิ้นส่วนของข้อความกะพริบสไตล์โรงเรียนเก่าโดยไม่ใช้ javascript หรือตกแต่งข้อความ

ไม่มีช่วงการเปลี่ยนภาพเท่านั้น * กะพริบ *, * กะพริบ *, * กะพริบ *!


แก้ไข : นี่แตกต่างจากคำถามนั้นเพราะฉันขอให้กระพริบโดยไม่มีการเปลี่ยนอย่างต่อเนื่องในขณะที่ OP ของคำถามอื่นถามว่าจะแทนที่กระพริบด้วยการเปลี่ยนอย่างต่อเนื่อง


1
คำตอบที่ดีที่สุดที่ฉันพบสำหรับเรื่องนี้ถูกลบโดยผู้โพสต์ดั้งเดิม @ m93a ดังนั้นจึงยังไม่สามารถ upvoted ได้ ผมคิดว่าคำตอบที่ควรจะยกเลิกการลบและ upvoted เนื่องจากเป็นวิธีที่ง่ายที่สุดที่ก่อให้เกิดผลกระพริบตาที่ดีที่สุดและการทำงานในรุ่นปัจจุบันทั้งหมดของเบราว์เซอร์ที่สำคัญ นอกจากนี้คุณยังสามารถอ่านบล็อกโพสต์สั้น ๆ เกี่ยวกับการแก้ปัญหาเดียวกันในการลอกเลียนแบบ <พริบ> ใช้ WebKit CSS3 ภาพเคลื่อนไหว

สิ่งที่ฉันไม่เข้าใจคือเหตุผลที่ทุกคำตอบเดียวที่นี่ดูเหมือนจะมี@-webkit-keyframesกฎหลังจาก@keyframesกฎไม่ได้เตรียมตัวไว้และบางคนก็มีการ-webkit-animationประกาศหลังจากที่ไม่มีคำนำหน้า
BoltClock

@BoltClock: เป็นเพราะภาพเคลื่อนไหว CSS3 ค่อนข้างใหม่และยังไม่เสถียรในเบราว์เซอร์ Webkit "คำนำหน้า" ที่เรียกว่าอยู่ที่นี่สำหรับนักพัฒนาที่ต้องการใช้ภาพเคลื่อนไหวแม้ว่าพวกเขาจะไม่เสถียรและยังไม่เสร็จสิ้น
m93a

@ m93a: ฉันรู้ว่า แต่ฉันถามว่าทำไมพวกเขาถึงอยู่ภายใต้กฎที่ไม่ได้เตรียมการไว้ก่อนหน้านี้ (ไม่ใช่ว่าฉันไม่ได้ใส่ถ้อยคำนั้นไว้ในความคิดเห็นดั้งเดิมของฉันความผิดพลาดของฉัน)
BoltClock

คำตอบ:


242

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.

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับคีย์เฟรมภาพเคลื่อนไหวที่นี่


2
ใช่มันง่ายกว่ามาก คุณสามารถเพิ่มคำนำหน้า webkit เพื่อให้มันทำงานได้ใน Chrome และ Safari
m93a

2
สิ่งนี้อาจไม่ทำงานบน Chrome / safari หากไม่มีส่วนนำหน้าของ webkit
David Pelaez

2
สิ่งที่ฉันสนุกกับการทำคือแทนที่จะทำให้ชั้นเรียนกระพริบตาแท็ก (ด้วยblink { animation: blink 1s steps(5, start) infinite; -webkit-animation: blink 1s steps(5, start) infinite; }) ด้วยวิธีนี้คุณสามารถใช้<blink>แท็กแทน<span class="blink">=)
416E64726577

หมายเหตุ: นี่เป็นเพียงการเลียนแบบ <blink> ของ OP ที่ร้องขอเท่านั้น ไม่สามารถใช้ได้กับcolorคุณสมบัติเช่นเป็น "เปิด - ปิด" - กะพริบ - แอนิเมชั่น
Martin Schneider

97

ผมขอแสดงเคล็ดลับเล็กน้อยให้คุณดู

ตามที่ 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


@ สี่สิบสองขอโทษฉันลืม-webkit-คำนำหน้า ฉันคิดว่ามันใช้งานได้กับเบราว์เซอร์จริงทั้งหมดยกเว้น Chrome และ Safari หลังจากอัปเดตแล้วควรใช้งานได้กับ Firefox, Chrome, Opera, Safari และ MSIE10
m93a

ในฐานะที่เป็นลายลักษณ์อักษรคำตอบนี้ก็จะทำงานในรุ่นปัจจุบันของ Firefox, Chrome, Safari และ IE

2
ไม่ทำงานเนื่องจากการพิมพ์ผิด: ในส่วน webkit ชื่อภาพเคลื่อนไหวblinkหายไป แก้ไขแล้ว.
Andrea Ligios

1
ใช้งานได้ดีขอบคุณนี่คือการดำเนินการตามโซลูชันของคุณ: jsfiddle.net/gnx4mqc4
Hamid Behnam

1
@ m93a: 0% 100% { opacity: 1.0; }ส่วนต่าง ๆ ดูเหมือนไม่จำเป็นเนื่องจากเป็นค่าเริ่มต้นใช่ไหม?
jamadagni

48

ลอง 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/


1
ไม่มีอะไรที่เหมือนกับ -ms-animation หรือ -o-animation และ -moz-animation มีเฉพาะในเวอร์ชัน 15 เท่านั้นอย่าใช้ตอนนี้ ดู caniuse.com เพื่อดูการสนับสนุนที่แท้จริง ขออภัย แต่ฉันจะไม่ยอมรับคำถามนี้ :( ป.ล. : คุณสามารถใช้ 'แก้ไข' กับคำตอบของคนอื่นได้
m93a

มันเป็นแค่นิสัยที่ไม่ดีของฉัน - เพิ่มคำต่อท้ายให้กับคุณสมบัติ CSS3 ใหม่ทั้งหมด ..
Belyash

นี่ไม่ใช่ "กะพริบ" แต่ "กะพริบ -fadeOut"
Martin Schneider

30

จริงๆแล้วคุณไม่จำเป็นต้องใช้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/


4
ยอดเยี่ยม! นี่เป็นวิธีแก้ปัญหาเดียวที่ให้ข้อความกะพริบเท่านั้น โซลูชันอื่นทั้งหมดจะกระพริบตาพื้นหลังขององค์ประกอบด้วย ในการทดสอบให้ใช้ a <span>กับสีขาวบนข้อความสีน้ำเงินเทียบกับ a <body>กับพื้นหลังสีเขียว เฉพาะในโซลูชันนี้พื้นหลังช่วงสีน้ำเงินจะไม่กะพริบ
jamadagni

10

ฉันจะลงนรกเพื่อสิ่งนี้:

=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 (เขื่องกับบูร์บง)


1
codepen ของคุณสร้างUndefined mixin 'experimental'.ข้อผิดพลาดและดูเหมือนว่ามันจะไม่รวบรวมและแสดงภาพเคลื่อนไหวกะพริบ


2

มันทำงานในกรณีของฉันกระพริบข้อความที่ช่วงเวลา 1s

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

-3

ถ้าคุณต้องการเอฟเฟกต์เรืองแสงให้ใช้อันนี้

@keyframes blink {
  50% {
    opacity: 0.0;
  }
}
@-webkit-keyframes blink {
  50% {
    opacity: 0.0;
  }
}

atom-text-editor::shadow  .bracket-matcher .region {
    border:none;
    background-color: rgba(195,195,255,0.1);
    border-bottom: 1px solid rgb(155,155,255);
    box-shadow: 0px 0px 9px 4px rgba(155,155,255,0.1);
    border-radius: 3px;
    animation: blink 2s steps(115, start) infinite;
    -webkit-animation: blink 2s steps(115, start) infinite;
}

-5

กรุณาหาวิธีแก้ปัญหาด้านล่างสำหรับรหัสของคุณ

@keyframes blink {
  50% {
    color: transparent;
  }
}

.loader__dot {
  animation: 1s blink infinite;
}

.loader__dot:nth-child(2) {
  animation-delay: 250ms;
}

.loader__dot:nth-child(3) {
  animation-delay: 500ms;
}
Loading <span class="loader__dot">.</span><span class="loader__dot">.</span><span class="loader__dot">.</span>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.