Pusatkan item lentur dalam bekas apabila dikelilingi oleh item lentur lain
P粉042455250
2023-08-25 14:40:25
<p>Saya mempunyai flexbox (lihat coretan kod di bawah sebagai contoh). </p>
<p>Saya mahu menyediakannya supaya dalam semua kes, <code><h2></code> berada di tengah-tengah <strong>flex-box</strong> akan mengalir di sekelilingnya, Berdasarkan penanda mereka. </p>
<p>Saya pada asasnya mencari <kod>align-self</code> kod CSS, tetapi untuk paksi utama, bukan paksi mendatar (yang mungkin membantu menjelaskan perkara yang saya minta). </p>
<p>Saya juga menggunakan <kod>margin: auto;</code> pada <kod><h2></code> yang saya pelajari selepas membaca artikel ini (halaman yang bagus, tetapi masih meninggalkan saya dengan soalan berikut - kecuali saya tidak memahami sepenuhnya segala-galanya). </p>
<p>Ini ialah kod yang saya dapat: </p>
<p>
<pre class="snippet-code-css lang-css prettyprint-override"><code>.bekas {
align-item: tengah;
sempadan: 1px merah pepejal;
paparan: flex;
justify-content: pusat;
lebar: 100%;
}
h2 {
margin: auto;
]</code></pre>
<pre class="snippet-code-html lang-html prettyprint-override"><code><div class="container">
<h2>Saya seorang h2</h2>
<span>Saya span 1</span>
<span>Saya span 2</span>
<span>Saya span 3</span>
</div>
<div class="container">
<span>Saya span 1</span>
<span>Saya span 2</span>
<span>Saya span 3</span>
<h2>Saya seorang h2</h2>
<span>Saya span 4</span>
<span>Saya span 5</span>
<span>Saya span 6</span>
</div>
<div class="container">
<span>Saya span 1</span>
<span>Saya span 2</span>
<h2>Saya seorang h2</h2>
<span>Saya span 3</span>
</div></code></pra>
</p>
<blockquote>
<p>Untuk menyatakan semula soalan saya sepenuhnya: Saya ingin tahu cara memusatkan <kod><h2></kod> pada halaman saya supaya tidak kira apa<kod><span></ di mana kod>, <kod><h2></kod> akan sentiasa berada di <strong>tengah mati</strong> </p>
</blockquote>
<p>P.S.: Saya bersedia menggunakan JavaScript dan jQuery, tetapi saya lebih suka cara CSS tulen untuk melakukan ini. </p>
<hr/>
<p>Selepas Michael Benjamin membalas: </p>
<p>Jawapannya membuatkan saya berfikir. Walaupun saya masih belum menemui cara untuk melakukan ini, saya percaya yang berikut adalah langkah ke arah yang betul: </p>
<p><strong>HTML</strong></p>
<pre class="brush:php;toolbar:false;"><div class="bekas">
<div>
<span>Saya span 1</span>
<span>Saya span 2</span>
<span>Saya span 3</span>
</div>
<h2>Saya seorang h2</h2>
<div>
<span>Saya span 4</span>
<span>Saya span 5</span>
<span>Saya span 6</span>
</div>
</div></pre>
<p><strong>CSS</strong></p>
<pre class="brush:php;toolbar:false;">.container div {
lentur: 1 1 auto;
text-align: tengah;
}
h2 {
lentur: 0 0 auto;
margin: auto;
}</pre>
<p>
<pre class="snippet-code-css lang-css prettyprint-override"><code>.bekas {
align-item: tengah;
sempadan: 1px merah pepejal;
paparan: flex;
justify-content: pusat;
lebar: 100%;
}
.container div {
lentur: 1 1 auto;
text-align: tengah;
}
h2 {
lentur: 0 0 auto;
margin: auto;
}</code></pre>
<pre class="snippet-code-html lang-html prettyprint-override"><code><div class="container">
<div>
</div>
<h2>Saya seorang h2</h2>
<div>
<span>Saya span 1</span>
<span>Saya span 2</span>
<span>Saya span 3</span>
</div>
</div>
<div class="container">
<div>
<span>Saya span 1</span>
<span>Saya span 2</span>
<span>Saya span 3</span>
</div>
<h2>Saya seorang h2</h2>
<div>
<span>Saya span 4</span>
<span>Saya span 5</span>
<span>Saya span 6</span>
</div>
</div>
<div class="container">
<div>
<span>Saya span 1</span>
<span>Saya span 2</span>
</div>
<h2>Saya seorang h2</h2>
<div>
<span>Saya span 3</span>
</div>
</div></code></pra>
</p>
<p>Pada asasnya, teorinya ialah walaupun jumlah bilangan <kod><span></code> diketahui terdapat tiga elemen secara keseluruhan: <kod><div>< ;h2> < div></code></p>
<blockquote>
<p>Seperti yang anda lihat dalam coretan kod di atas, saya telah mencuba (<kod>flex: 0 0 auto</code> dan <code>flex: 1 1 auto</code> dsb.) untuk membenarkan Ia berfungsi tetapi masih belum berfungsi. Bolehkah sesiapa memberitahu saya jika ini adalah langkah ke arah yang betul dan bagaimana untuk menolak ini ke dalam produk sebenar? </p>
</blockquote></p>
Salah satu cara ialah menambah rentang kosong pada kedua-dua belah dan kemudian tetapkan rentang dan h2 kepada beberapa nilai flex seperti ini:
Jadi anda pastikan ruang di kedua-dua belah adalah sama. Satu-satunya masalah ialah anda perlu memutuskan sejauh mana anda mahu h2 ambil.
Sifat penjajaran fleksibel berfungsi dengan memperuntukkan ruang yang ada di dalam bekas.
Jadi apabila item Flex berkongsi ruang dengan item lain, tiada cara satu langkah untuk memusatkannya melainkan jumlah panjang item adik-beradik di kedua-dua belah adalah sama.
Dalam contoh kedua,
h2
两侧的跨度总长度相等。因此,h2
sepenuhnya berada di tengah-tengah bekas.