Rumah > Soal Jawab > teks badan
P粉7040660872023-09-03 10:54:57
Pertama beberapa istilah: kami memanggil lebar kawasan yang diliputi oleh bahagian atas dan bawah bentuk SVG sebagai "min kanan", dan lebar yang diliputi di tengah sebagai "maks kanan".
Cara saya memahami soalan anda ialah kawasan yang betul a) mempunyai lebar tetap dan b) hendaklah sentiasa menunjukkan bentuk SVG penuh. Ia berikutan bahawa ia mesti mempunyai ketinggian malar dan nisbah aspek 708 : 1056. Ini memudahkan untuk mengira dimensi yang diperlukan, paling penting nisbah antara minimum di sebelah kanan dan maksimum di sebelah kanan ialah 564 : 708.
Sekarang, saya cadangkan untuk menyelesaikan masalah anda dengan mengalihkan imej kiri sebagai imej latar belakang ke elemen bekas luar dengan lebar yang memastikan ia berada di bawah bahagian melengkung, iaitu. e. 100% tolak 564px (atau pecahan tetap). Elemen bekas kiri yang mengandungi kandungan promosi mempunyai lebar 100% tolak 708px dan bekas kanan mempunyai lebar 708px (atau pecahan tetap). (Untuk kesederhanaan, bekas dikenal pasti dengan nama kelas yang sepadan dengan nama komponennya)
.container {
display: flex;
flex-direction: row;
justify-items: stretch;
align-items: stretch;
height: 523px;
background-image: linear-gradient(360deg, white, red);
background-position: top right 282px;
background-size: cover;
background-repeat: no-repeat;
}
.container-left {
flex-grow: 1;
}
.container-right {
width: 354px;
background-image: url('data:image/svg+xml,<svg viewBox="0 0 708 1056" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M144.5 0H799.5V1056H144.5L23.4254 775.169C0.402533 721.768 -5.09917 662.442 7.71089 605.718L144.5 0Z" fill="%2316979A"/></svg>');
background-size: 100% 100%;
}
.child {
box-sizing: border-box;
height: 100%;
margin: 2px;
border: 2px solid blue;
}
<div class="container">
<div class="container-left">
<div class="child"></div>
</div>
<div class="container-right">
<div class="child"></div>
</div>
</div>
Anda boleh menggunakan nilai saiz px lain asalkan anda mengekalkan perkadaran antara nilai tersebut.
Jika anda tidak mahu memaparkan SVG penuh, tetapi hanya ingin memastikan lengkung di sebelah kiri kekal kelihatan sepenuhnya, tambahkan atribut berikut pada elemen akar
preserveAspectRatio="xMinYMid slice"
Ini akan mempunyai kesan yang sama seperti CSS cover
相同的效果,而且 viewBox
cover apabila menukar nisbah bidang bekas yang betul dan kawasan
Jika anda pergi ke laluan ini, ingat bahawa jika anda menetapkan ketinggian tetap terlebih dahulu, anda hanya mengetahui lebar kawasan antara bahagian kanan maksimum dan minimum. CSS tidak boleh menggunakan ketinggian elemen untuk mengira nilai lebar. 🎜