Laman » Pengekodan » Cara Membuat Reka Bentuk Sempadan Potong dengan CSS

    Cara Membuat Reka Bentuk Sempadan Potong dengan CSS

    Dengan reka bentuk sempadan cut-out kami boleh tunjukkan kepada pengguna apa yang boleh dijumpai di bawah kawasan sempadan elemen HTML. Tugas ini biasanya diselesaikan oleh menyusun dua atau lebih elemen blok (dalam kebanyakan kes divs) saiz yang berbeza di atas satu sama lain. Pertama kali ini nampaknya merupakan penyelesaian yang mudah, tetapi ia menjadi lebih mengecewakan apabila anda ingin menggunakan semula susun atur beberapa kali, bergerak di sekitar elemen, mengoptimumkan reka bentuk untuk bergerak, atau menyelenggara kod.

    Dalam jawatan ini, saya akan menunjukkan kepada anda satu penyelesaian CSS-satunya yang elegan yang digunakan hanya satu elemen HTML untuk mencapai kesan yang sama. Teknik ini juga hebat untuk diakses, kerana ia memuatkan imej latar belakang dalam CSS, dipisahkan daripada HTML.

    Menjelang akhir siaran ini, anda akan tahu bagaimana memaparkan imej latar belakang di kawasan sempadan untuk mewujudkan reka bentuk sempadan cut-out anda boleh lihat di bawah. Saya juga akan menunjukkan bagaimana anda boleh membuat reka bentuk responsif menggunakan unit viewport.

    Kod Permulaan

    Satu-satunya keperluan di hadapan HTML adalah a blok elemen:

     

    Kita perlu guna semula dimensi (lebar & ketinggian) dan nilai lebar sempadan div, jadi saya memperkenalkan mereka sebagai pembolehubah CSS. Pembolehubah --w merujuk kepada lebar daripada .cb blok elemen, --h menunjukkannya ketinggian, --b pergi untuk lebar sempadan, dan --b2 untuk lebar sempadan yang didarab dengan 2. Kami kemudian akan melihat penggunaan pembolehubah terakhir.

    Saya mengukur saiznya

    relatif kepada lebar viewport, oleh itu penggunaan vw unit (anda boleh menggunakan unit tetap jika anda mahu).

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

    Unit tersebut vw mewakili 1/100th lebar lebar viewport. Contohnya, 50vw adalah 50 bahagian lebar paparan dihiris secara vertikal ke dalam 100 bahagian yang sama, sementara 50vh adalah 50 bahagian ketinggian viewport dihiris secara mendatar ke dalam 100 bahagian yang sama.

    Mari kita tukar kod di atas dengan menambah latar belakang, dan menetapkan sempadan, ketinggian dan lebar dengan menggunakan pembolehubah CSS yang telah dipratentukan kami.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); latar belakang: url (bg.jpg); sempadan: var (- b) pepejal telus; ketinggian: var (- h); lebar: var (- w);  

    Inilah caranya demo sepatutnya kelihatan seperti sekarang:

    Saiz imej latar belakang

    Kami memerlukan imej latar belakang untuk meliputi keseluruhan kawasan

    termasuk kawasan sempadan, jadi imej latar belakang perlu bersaiz sesuai.

    Jika anda ingin memberikan imej latar belakang saiz tetap, pastikan saiz yang anda berikan membolehkannya menutup kawasan sempadan

    juga. Bagi kod yang digunakan dalam jawatan setakat ini, inilah yang latar belakang nilai yang saya berikan:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); sempadan: var (- b) pepejal telus; ketinggian: var (- h); lebar: var (- w);  

    The lebar imej latar belakang [calc (var (- w) + var (- b2))] adalah jumlah lebar div [var (- w)] dan juga lebar sempadan kiri & kanan [var (- b2)].

    Begitu juga dengan ketinggian imej latar belakang [calc (var (- h) + var (- b2))] adalah jumlah ketinggian div [var (- h)] dan juga lebar sempadan atas & bawah [var (- b2)].

    Dengan cara ini, kami telah menyusun imej latar belakang ke kawasan yang sama dengan saiz div (termasuk kawasan sempadan).

    The pusat kata kunci menyelaraskan imej latar belakang ke pusat div.

    Catatan: Jika anda menambah padding ke div, ingat untuk termasuk kawasan padding kepada saiz latar belakang juga, sama dengan kawasan sempadan.

    Inilah yang kita ada sekarang:

    Tutup kawasan eksklusif sempadan

    Sekarang kita telah menutup kawasan inklusif sempadan dengan imej latar belakang, semua yang tersisa adalah menutup kawasan pusat di dalam sempadan (kawasan eksklusif sempadan) dengan warna pepejal, yang mana kita mencapai a kotak-bayang inset.

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); sempadan: var (- b) pepejal telus; box-shadow: inset var (- w) 0 0 rgba (0,120,237, .5); ketinggian: var (- h); lebar: var (- w);  

    Bayangan mendatar dengan nilai var (- w) merangkumi keseluruhan lebar div. Penggunaan rgba fungsi warna membolehkan beberapa ketelusan untuk ditambah dalam campuran, namun anda juga boleh menggunakan warna legam jika anda ingin menutup kawasan pusat sepenuhnya.

    Tambah sempadan tambahan dengan kotak-bayang

    Dalam demo Codepen, anda dapat melihat sempadan putih di sekitar imej. Terdapat helah yang terkenal menggunakan kotak bayang-bayang untuk membuat pelbagai sempadan-kita boleh menggunakan teknik yang sama untuk tambah satu atau lebih sempadan berwarna pepejal untuk reka bentuk kami.

    Dikemas kini kotak-bayang nilai ialah:

     .cb --w: 35vw; --h: 40vw; --b: 4vw; --b2: calc (var (- b) * 2); (var (- w) + var (- b2)) calc (var (- h) + var (- b2)); sempadan: var (- b) pepejal telus; box-shadow: inset var (- w) 0 0 rgba (0,120,237, .5), 0 0 0 calc (var (- b) / 2) putih; ketinggian: var (- h); lebar: var (- w);  

    The calc (var (- b) / 2) fungsi mewujudkan bayangan separuh lebar sempadan.

    Pilihan: Susun atur & estetika berasingan

    Dalam demo Codepen terakhir saya, saya telah meletakkan kod untuk imej latar belakang dan warna kotak-bayangan ke dalam kelas yang berasingan. Ini adalah pilihan, tetapi boleh sangat berguna jika anda mahu guna semula susun atur reka bentuk sempadan cut-out dalam pelbagai unsur, dan menambah estetika (imej latar belakang + warna) untuk setiap elemen secara berasingan.

    Saya telah menambah kelas bernama .poster1 kepada

    untuk mencapai matlamat ini.

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

    Sejak latar belakang adalah harta pendek, Ciri-ciri perolakannya boleh ditindih / ditetapkan secara individu. Oleh itu, kita boleh menetapkannya imej latar belakang dalam .poster1, dan keluarkan nilai url daripada latar belakang harta di .cb.

    Untuk menetapkan nilai kotak-bayang, kita boleh guna pemboleh ubah CSS lain. The --tbgc pembolehubah memegang nilai warna kami ingin memberikan kepada kotak-bayang (lightblue dalam demo), jadi antara peraturan gaya untuk .cb kami menggantikan nilai warna kotak-bayang harta 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)); sempadan: var (- b) pepejal telus; box-shadow: inset var (- w) 0 0 var (- tbgc), 0 0 0 calc (var (- b) / 2) putih; ketinggian: var (- h); lebar: var (- w);  

    Kod untuk mod potret

    Oleh kerana dimensi semua dalam unit vw, ia akan kelihatan terlalu kecil apabila anda melihat reka bentuk dalam mod potret (lebar yang lebih kecil berbanding dengan ketinggian) -dengan semua peranti mudah alih berada secara lalai. Untuk menyelesaikan masalah ini, suis vw dengan vh, dan ubah saiz reka bentuk seperti yang anda lihat sesuai untuk mod potret.

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

    Catatan: Jangan lupa tambah tag meta viewport ke halaman HTML anda jika anda memutuskan untuk mengoptimumkannya untuk paparan mudah alih.

    © Savtec
    Maklumat berguna dan tips pembangunan web. Pengaturcaraan, reka bentuk web, CSS, HTML, JAVASCRIPT. Konfigurasi dan pasang semula WINDOWS. Penciptaan tapak dan aplikasi dari awal.