Rumah >hujung hadapan web >tutorial css >Bolehkah CSS Mengekalkan Nisbah Aspek 1:1 dengan Memadankan Tinggi Elemen Secara Dinamik dengan Lebar?

Bolehkah CSS Mengekalkan Nisbah Aspek 1:1 dengan Memadankan Tinggi Elemen Secara Dinamik dengan Lebar?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 16:40:11418semak imbas

Can CSS Maintain a 1:1 Aspect Ratio by Dynamically Matching Element Height to Width?

Padan Secara Dinamik Tinggi dengan Lebar dalam Reka Letak Bendalir CSS

Dalam susun atur CSS cecair, elemen boleh melaraskan saiznya secara automatik berdasarkan ruang yang tersedia . Ini boleh menimbulkan cabaran apabila cuba mengekalkan nisbah aspek tertentu, seperti segi empat sama atau segi empat tepat.

Soalan:

Bolehkah CSS digunakan untuk menetapkan ketinggian elemen yang sama dengan lebarnya, mengekalkan aspek 1:1 nisbah?

Contoh:

Pertimbangkan elemen bekas dan elemen div bersarang dengan struktur berikut dan susun atur:

+----------+
| body     |
| 1:3      |
|          |
| +------+ |
| | div  | |
| | 1:1  | |
| +------+ |
|          |
|          |
|          |
|          |
|          |
+----------+

CSS:

div {
  width: 80%;
  height: same-as-width
}

Penyelesaian:

Walaupun tidak mungkin untuk menetapkan ketinggian secara eksplisit untuk memadankan lebar dengan CSS sahaja, penyelesaian boleh dicapai menggunakan elemen dummy dan bijak kedudukan.

#container {
  display: inline-block;
  position: relative;
  width: 50%;
}

#dummy {
  margin-top: 75%;
  /* 4:3 aspect ratio */
}

#element {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: silver/* show me! */
}
<div>

Dengan menggunakan sifat margin atas pada elemen tiruan dan menetapkannya kepada 75% (untuk memadankan nisbah bidang 4:3), kami membuat rujukan untuk ketinggian. Elemen itu kemudiannya diletakkan secara mutlak dalam kawasan rujukan ini, menghasilkan ketinggian yang sama dengan lebarnya.

Atas ialah kandungan terperinci Bolehkah CSS Mengekalkan Nisbah Aspek 1:1 dengan Memadankan Tinggi Elemen Secara Dinamik dengan Lebar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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