Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Ajar anda cara menggunakan css untuk mencapai kesan asap dalam sepuluh minit

Ajar anda cara menggunakan css untuk mencapai kesan asap dalam sepuluh minit

WBOY
Lepaskan: 2022-01-14 18:08:25
ke hadapan
3286 orang telah melayarinya

Artikel ini akan berkongsi dengan anda cara menggunakan CSS untuk mencapai kesan asap. Saya harap ia akan membantu semua orang.

Ajar anda cara menggunakan css untuk mencapai kesan asap dalam sepuluh minit

Lihat dengan teliti pada kesan asap, terdapat dua ciri penting:

  • Kesan kabur

  • Perasaan kabur

Pertama-tama lihat kesan kabur apabila memikirkan tentang kabur, kebanyakan pelajar mula-mula akan berfikir untuk menggunakan penapis: blur().

Sudah tentu itu benar, tetapi dalam CSS, selain penapis, kami juga boleh menggunakan kelas cara lain untuk mensimulasikan kesan kabur.

CSS tulen untuk melaksanakan animasi asap

Mari kita lihat kesan ini dahulu:

 1.gif

Andaikan kita mempunyai watak sedemikian:

<span>C</span>
Salin selepas log masuk

Kita boleh mensimulasikan kesan asap hanya dengan menukar kelegapan bayang teks:

span {
  text-shadow: 0 0 0 whitesmoke;
  animation: smoky 5s;
}
@keyframes smoky {
  to {
    text-shadow: 0 0 20px whitesmoke;
    opacity: 0;
  }
}
Salin selepas log masuk

Berdasarkan perkara di atas, kita boleh tambahkan anjakan, putaran dan penskalaan, ubah suai sedikit kod di atas dan tambah beberapa transformasi transformasi:

span {
  text-shadow: 0 0 0 whitesmoke;
  animation: smoky 5s;
}
@keyframes smoky {
  to {
    transform:
      translate3d(200px, -80px, 0)
      rotate(-40deg)
      skewX(70deg)
      scale(1.5);
    text-shadow: 0 0 20px whitesmoke;
    opacity: 0;
  }
}
Salin selepas log masuk

untuk mendapatkan kesan berikut:

 2.gif

Selepas menindih transformasi, rasanya seperti satu perkataan diterbangkan dan bertukar menjadi asap. Atas dasar ini, kita hanya perlu menyusun berbilang perkataan dan menggunakan kelewatan animasi untuk mengawal setiap perkataan secara berurutan untuk mencetuskan kesan animasi untuk mendapatkan kesan asap lengkap yang dinyatakan di atas.

Kod pseudo adalah seperti berikut:

<span>C</span> S S // ...
Salin selepas log masuk
// ... 上述所有 CSS 代码
@for $item from 1 through 21 {
  span:nth-of-type(#{$item}){ 
    animation-delay: #{(($item/10))}s; 
  }
}
Salin selepas log masuk

Gunakan penapis janin SVG untuk mencapai kesan asap

Di atas Asap dalam animasi asap masih agak kasar. Terutamanya kerana ia tidak mempunyai sedikit butiran? Beberapa tekstur asap hilang.

Untuk mencapai kesan asap yang lebih halus, kita perlu menggunakan penapis SVG

Seterusnya, kami akan menggunakan penapis: blur() dengan penapis kesan asap yang lebih realistik.

Sebagai contoh mudah, katakan terdapat beberapa perkataan seperti ini:

<div">SMOKE</div>
Salin selepas log masuk

CSS ringkas:

div {
    background: linear-gradient(#fff, #999, #ddd, #888);
    background-clip: text;
}
Salin selepas log masuk

Dapatkan beberapa perkataan dengan warna kecerunan seperti ini:

 3.png

Kami menggunakan penapis untuk melakukan proses mudah:

<div>SMOKE</div>
<svg width="0">
  <filter id="filter">
    <feTurbulence id="turbulence" type="fractalNoise" baseFrequency=".03" numOctaves="20" />
    <feDisplacementMap in="SourceGraphic" scale="30" />
  </filter>
</svg>
Salin selepas log masuk

Gunakan penapis: url() dalam CSS untuk memperkenalkan penapis ini. Untuk kesan yang lebih baik di sini, saya memperkenalkan penapis ini terus pada :

body {
    filter: url(&#39;#filter&#39;);
}
div {
    background: linear-gradient(#fff, #999, #ddd, #888);
    background-clip: text;
}
Salin selepas log masuk

Fon kami diberi rasa cair oleh penapis :

 4.png

Kesan ini boleh dikatakan pada asasnya tiada kaitan dengan kesan asap, tetapi anda hanya perlu menambah penapis kabur, dan sesuatu yang ajaib berlaku:

body {
    filter: url(&#39;#filter&#39;);
}
div {
    background: linear-gradient(#fff, #999, #ddd, #888);
    background-clip: text;
    filter: blur(5px);
}
Salin selepas log masuk

Keseluruhan kesan serta-merta menjadi berasap:

 5.png

Baiklah, tambahkan kesan animasi gelung padanya dan hanya gunakan JavaScript untuk memprosesnya:

const filter = document.querySelector("#turbulence");
let frames = 1;
let rad = Math.PI / 180;
let bfx, bfy;
function freqAnimation() {
    frames += .2
    bfx = 0.03;
    bfy = 0.03;
    bfx += 0.005 * Math.cos(frames * rad);
    bfy += 0.005 * Math.sin(frames * rad);
    bf = bfx.toString() + " " + bfy.toString();
    filter.setAttributeNS(null, "baseFrequency", bf);
    window.requestAnimationFrame(freqAnimation);
}
window.requestAnimationFrame(freqAnimation);
Salin selepas log masuk

Lihat kesannya:

 6.gif

Sudah tentu, kesan di atas boleh dilaraskan dengan:

Control Atribut baseFrequency

Control< Laraskan atribut numOctaves

Kawal pelarasan atribut skala teks Ya, teks telah diatomkan sepenuhnya. Kita boleh membuat kesan hover seperti ini:

 7.gifUntuk kod lengkap di atas, anda boleh klik di sini: CodePen CSS SVG Text Smoke Hover Effect

Dalam ini cara, berdasarkan penapis: blur() Dengan penapis kita boleh mendapatkan kesan asap yang sangat realistik Berdasarkan demonstrasi di atas, kita juga boleh meneroka banyak kesan yang menarik

( Mempelajari perkongsian video:

tutorial video css

)

Atas ialah kandungan terperinci Ajar anda cara menggunakan css untuk mencapai kesan asap dalam sepuluh minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
css
sumber:juejin.im
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan