Saya mencoba untuk menghindari menggunakan gambar latar belakang (atau solusi berbasis gambar apa pun) untuk secara efektif membuat ini:
Catatan: panah merah hanya menunjuk ke perbatasan yang dimaksud. Panah tidak harus dimasukkan dalam jawaban Anda.
Bagaimana saya bisa membuat perbatasan berbentuk tidak teratur ini dengan CSS murni (tanpa gambar)? Jika gambar tidak dapat dihindari, jawaban yang paling ringkas dan mudah dibaca akan terangkat dan diterima.
:before
dan:after
menjagahtml
'bersih' Anda. Itu:before
akan menjadi segitiga kiri,:after
yang kanan.Jawaban Yisela solid, tapi saya pikir saya akan menawarkan alternatif ini: menggunakan poligon atau gambar URI dengan bentuk CSS dan clip-path. Ini tutorial singkatnya .
Perhatikan bahwa metode ini akan bekerja dengan browser yang bahkan lebih sedikit daripada trik batas segitiga saat ini. Namun, jika Anda ingin menggunakan bentuk yang lebih kompleks atau membungkus teks Anda dengan bentuk ini, ini akan menjadi cara yang tepat.
sumber
vw
unit CSS . Apakah itu terdengar mungkin?Metode lain untuk ini yang mungkin juga memiliki dukungan terbatas adalah "tertanam SVG di CSS". Saya belum mencoba ini sendiri tetapi idenya adalah Anda memberikan sumber gambar sebagai url dalam deklarasi css untuk objek dan Anda memberikannya url yang lolos dengan benar yang berisi data.
SVG adalah format teks / xml biasa. Contoh poligon (dari w3schools ):
Contoh SVG inline (tertanam) (disederhanakan) (dari stackoverflow ):
Perhatikan bahwa data SVG harus "lolos" dengan benar untuk penggunaan sebaris, yang membuatnya sedikit kurang menarik daripada hanya menautkan file SVG.
Ada beberapa diskusi tentang kelayakan metode di utas terkait di atas. Saya pikir menanamkan sesuatu yang sederhana seperti segitiga putih penuh adalah keputusan yang mudah asalkan ada dukungan. Data format SVG yang kompleks harus disimpan sebagai file SVG daripada inline.
File SVG adalah vektor dan dapat diskalakan berdasarkan persentase, tidak seperti metode "batas". Mereka juga (saat ini) memiliki dukungan yang lebih baik (setidaknya non-inline) daripada metode jalur kliping yang tercantum. SVG, menjadi teks biasa, bahkan dapat dipancarkan secara langsung menggunakan misalnya PHP atau skrip sisi server lainnya.
sumber
Jika area biru Anda pada gambar adalah png transparan dan area putih transparan, maka Anda perlu menyertakan html ini untuk membuatnya menjatuhkan bayangan:
Dan gunakan css ini pada gambar:
Ini adalah solusi lintas-browser yang sempurna.
sumber