Rumah > hujung hadapan web > tutorial css > Seni dengan Grid CSS dan penapis SVG

Seni dengan Grid CSS dan penapis SVG

Patricia Arquette
Lepaskan: 2024-12-09 14:52:14
asal
966 orang telah melayarinya

Pernahkah anda meneroka kuasa grid-auto-flow: padat? Apabila digabungkan dengan nilai yang dijana secara rawak (terkekang dalam julat yang ditetapkan), anda boleh menggunakan sifat lajur grid dan baris grid untuk mencipta seni berasaskan grid yang keren. Mari selami!

Mula-mula, mari buat struktur grid asas:

main {
  display: grid;
  grid-auto-flow: dense;
  grid-template-columns: repeat(auto-fill,
 minmax(var(--w, 4cqi), 1fr));
}
Salin selepas log masuk
  • paparan: grid: Mewujudkan reka letak grid CSS.
  • grid-auto-flow: padat: Mengisi jurang dalam grid secara automatik dengan meletakkan semula item untuk meminimumkan ruang kosong.
  • grid-template-columns: Mentakrifkan susun atur lajur responsif. Di sini, lajur dicipta secara automatik untuk mengisi ruang yang tersedia (autoisi), setiap satu dengan lebar minimum --w (lalai kepada 4cqi) dan lebar maksimum 1fr.

Pada ketika ini, --w tidak ditentukan, jadi nilai lalai (4cqi) digunakan. Begini rupa grid awal:

Art with CSS Grid and SVG filters

Seterusnya, kami akan mengisi grid dengan sekumpulan -nod. Semasa kami memberikannya dengan JavaScript, kami menambah 2 pembolehubah setiap nod:

  • --gc: Bilangan lajur untuk rentang.
  • --gr: Bilangan baris untuk rentang.

Begini cara kami menjana nilai rawak dalam JavaScript:

const random = (min, max) => 
  Math.random() * (max - min) + min

const column = () => 
`--gc:${Math.floor(random(0, 4))};`

const row = () => 
`--gr:${Math.floor(random(0, 3))};`
Salin selepas log masuk

Dalam CSS, kami menggunakan sifat tersuai ini:

b {
  background: oklch(var(--l) var(--c) var(--h) / var(--a));
  grid-column: span var(--gc);
  grid-row: span var(--gr, 1);
}
Salin selepas log masuk

Mari tambah beberapa warna rawak dalam oklch, menggunakan kaedah pembantu kecil:

const color = () => `--l:${
  random(0, 100)}%;--c:${
  random(0, 0.5)};--h:${
  random(0, 60)};--a:${
  random(0.2, 1)};`
Salin selepas log masuk

Sekarang kita dapat:

Art with CSS Grid and SVG filters

Terima kasih, grid-auto-flow: padat!

Untuk menjadikan perkara lebih dinamik, mari tambahkan transformasi seperti putaran dan penskalaan:

b {
  rotate: var(--r);
  scale: var(--s);
}
Salin selepas log masuk

Dalam JavaScript, kami menjana nilai transformasi rawak:

const transform = () => 
`--r:${random(-2, 3)}deg;
--s:${random(0.8, 1.2)};`
Salin selepas log masuk

Jom lihat:

Art with CSS Grid and SVG filters

Menarik! Sekarang, untuk meningkatkannya, mari tambahkan beberapa penapis SVG yang hebat.

Dalam JavaScript, kami menambah satu lagi kaedah pembantu kecil untuk memilih penapis rawak setiap -nod:

const filter = () =>
  `--url:url(#${
    [
      "pencilTexture",
      "pencilTexture2",
      "pencilTexture3",
      "pencilTexture4",
    ][Math.floor(random(0, 4))]
  });`
Salin selepas log masuk

Ini memberi kita:

Art with CSS Grid and SVG filters

Kini, dengan hanya melaraskan sifat --w dan bilangan elemen, kami boleh menjana karya seni yang jauh berbeza:

Art with CSS Grid and SVG filters

Atau:

Art with CSS Grid and SVG filters

Kami juga boleh melaraskan nilai mula dan berhenti dalam kaedah warna:

Art with CSS Grid and SVG filters


Demo

Berikut ialah demo Codepen. Saya telah menambah kawalan di bawah karya seni, supaya anda boleh mengubah suai sifat dengan mudah:

Atas ialah kandungan terperinci Seni dengan Grid CSS dan penapis SVG. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan