Beranda » Coding » Cara Membuat Desain Perbatasan Cut-out dengan CSS

    Cara Membuat Desain Perbatasan Cut-out dengan CSS

    Dengan desain batas cut-out kami dapat menunjukkan kepada pengguna apa yang dapat ditemukan di bawah area perbatasan elemen HTML. Tugas ini biasanya diselesaikan oleh menumpuk dua atau lebih elemen blok (dalam banyak kasus divs) dari berbagai ukuran di atas satu sama lain. Pertama, ini tampaknya merupakan solusi yang mudah, tetapi akan lebih membuat frustrasi ketika Anda ingin menggunakan kembali tata letak beberapa kali, bergerak di sekitar elemen, mengoptimalkan desain untuk seluler, atau mempertahankan kode.

    Dalam posting ini, saya akan menunjukkan kepada Anda solusi elegan yang hanya menggunakan CSS hanya satu elemen HTML untuk mencapai efek yang sama. Teknik ini juga bagus untuk aksesibilitas memuat gambar latar belakang di CSS, dipisahkan dari HTML.

    Pada akhir posting ini, Anda akan tahu caranya menampilkan gambar latar belakang di area perbatasan untuk membuat desain batas cut-out Anda bisa lihat di bawah. Saya juga akan menunjukkan bagaimana Anda dapat membuat desain responsif menggunakan unit viewport.

    Kode awal

    Satu-satunya persyaratan di depan HTML adalah a elemen blok:

     

    Kita harus melakukannya penggunaan kembali nilai dimensi (lebar & tinggi) dan lebar perbatasan div, jadi saya memperkenalkan mereka sebagai variabel CSS. Variabel --w menunjukkan lebar dari .cb elemen blok, --h menunjukkan itu tinggi, --b berlaku untuk lebar perbatasan, dan --b2 untuk lebar perbatasan dikalikan dengan 2. Kita nanti akan melihat penggunaan variabel terakhir.

    Saya mengukur

    relatif dengan lebar viewport, karenanya penggunaan ay unit (Anda dapat menggunakan unit tetap jika Anda mau).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2);  
    Penjelasan cepat - ay dan vh unit

    Unit ay mewakili 1/100th dari lebar viewport. Contohnya, 50vw adalah 50 bagian dari lebar viewport diiris secara vertikal menjadi 100 bagian yang sama, sementara 50vh adalah 50 bagian dari ketinggian viewport diiris secara horizontal menjadi 100 bagian yang sama.

    Mari kita tingkatkan kode di atas dengan menambahkan latar belakang, dan mengatur batas, tinggi dan lebar dengan menggunakan variabel CSS yang telah ditentukan sebelumnya.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); background: url (bg.jpg); perbatasan: var (- b) solid transparan; tinggi: var (- h); lebar: var (- w);  

    Beginilah seharusnya bentuk demo sekarang:

    Ukuran gambar latar belakang

    Kita membutuhkan gambar latar belakang mencakup seluruh area

    termasuk daerah perbatasan, jadi gambar latar belakang harus berukuran sesuai.

    Jika Anda ingin memberikan gambar latar ukuran tetap, pastikan ukuran yang Anda berikan memungkinkannya untuk menutupi area perbatasan

    demikian juga. Adapun kode yang digunakan dalam posting sejauh ini, ini dia Latar Belakang nilai yang saya berikan:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); latar belakang: url (bg.jpg) center / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); perbatasan: var (- b) solid transparan; tinggi: var (- h); lebar: var (- w);  

    Itu lebar gambar latar belakang [calc (var (- w) + var (- b2))] adalah jumlah dari lebar div [var (- w)] dan lebar batas kiri & kanan [var (- b2)].

    Demikian pula halnya dengan ketinggian gambar latar belakang [calc (var (- h) + var (- b2))] adalah jumlah dari ketinggian div [var (- h)] dan lebar batas atas & bawah [var (- b2)].

    Dengan cara ini, kami telah mengukur gambar latar belakang ke area yang sama dengan ukuran div (termasuk daerah perbatasan).

    Itu pusat kata kunci menyelaraskan gambar latar belakang ke pusat kota div.

    catatan: Jika Anda menambahkan padding ke div, ingat untuk termasuk area padding untuk ukuran latar belakang juga, sama dengan area perbatasan.

    Inilah yang kami miliki saat ini:

    Menutupi area eksklusif perbatasan

    Sekarang kita telah membahas area inklusif perbatasan dengan gambar latar belakang, yang tersisa hanyalah tutupi area tengah di dalam perbatasan (area perbatasan-eksklusif) dengan warna solid, untuk itu kami meraih a bayangan kotak sisipan.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); latar belakang: url (bg.jpg) center / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); perbatasan: var (- b) solid transparan; box-shadow: inset var (- w) 0 0 rgba (0,120.237, .5); tinggi: var (- h); lebar: var (- w);  

    Bayangan horizontal dengan nilai var (- w) mencakup seluruh lebar div. Penggunaan rgba fungsi warna memungkinkan transparansi untuk ditambahkan dalam campuran, namun Anda juga dapat menggunakan warna buram jika Anda ingin sepenuhnya menutupi area tengah.

    Tambahkan batas ekstra dengan bayangan kotak

    Dalam demo Codepen, Anda bisa melihat perbatasan putih di sekitar gambar. Ada trik terkenal menggunakan bayangan kotak untuk membuat beberapa batas-kita bisa menggunakan teknik yang sama untuk tambahkan satu atau lebih garis tepi berwarna untuk desain kami.

    Diperbaharui bayangan kotak nilainya adalah:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); background: url (bg.jpg) pusat / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); perbatasan: var (- b) solid transparan; box-shadow: inset var (- w) 0 0 rgba (0,120.237, .5), 0 0 0 calc (var (- b) / 2) putih; tinggi: var (- h); lebar: var (- w);  

    Itu calc (var (- b) / 2) fungsi menciptakan bayangan setengah dari lebar perbatasan.

    Opsional: Tata letak & estetika terpisah

    Dalam demo Codepen terakhir saya, saya telah menempatkan kode untuk gambar latar belakang dan warna kotak-bayangan ke dalam kelas yang terpisah. Ini adalah pilihan, tetapi bisa sangat berguna jika Anda mau menggunakan kembali tata letak desain batas cut-out dalam beberapa elemen, dan tambahkan estetika (gambar latar belakang + warna) untuk setiap elemen secara independen.

    Saya telah menambahkan kelas bernama .poster1 ke

    untuk mencapai tujuan ini.

     .poster1 --tbgc: rgba (0,120.237, .5); background-image: url ("http://bit.ly/2eQBij2");  

    Sejak Latar Belakang adalah properti singkatan, sifatnya yang lama dapat diganti / diset secara individual. Karenanya, kita dapat mengatur gambar latar belakang di .poster1, dan hapus nilai url dari Latar Belakang properti di .cb.

    Untuk mengatur nilai bayangan kotak, kita bisa gunakan variabel CSS lainnya. Itu --tbgc variabel memegang nilai warna kami ingin memberikan kepada bayangan kotak (lightblue dalam demo), jadi di antara aturan gaya untuk .cb kita ganti nilai warna dari bayangan kotak properti dengan var (- tbgc).

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); latar belakang: tengah / calc (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); perbatasan: var (- b) solid transparan; kotak-bayangan: inset var (- w) 0 0 var (- tbgc), 0 0 0 calc (var (- b) / 2) putih; tinggi: var (- h); lebar: var (- w);  

    Kode untuk mode potret

    Karena dimensi semua ada di unit ay, itu akan terlihat terlalu kecil ketika Anda melihat desain dalam mode potret (lebar relatif lebih kecil dari ketinggian) -yang semua perangkat seluler secara default. Untuk mengatasi masalah ini, beralih ay dengan vh, dan mengubah ukuran desain seperti yang Anda inginkan untuk mode potret.

     @ media (orientasi: potret) .cb --w: 35vh; --h: 40vh; --b: 4vh;  

    catatan: Jangan lupa tambahkan tag meta viewport ke halaman HTML Anda jika Anda memutuskan untuk mengoptimalkannya untuk tampilan seluler.

    © Savtec
    Informasi bermanfaat dan tip pengembangan web. Pemrograman, desain web, CSS, HTML, JAVASCRIPT. Konfigurasikan dan instal ulang WINDOWS. Pembuatan situs dan aplikasi dari awal.