Tunjukkan tanda sempang hanya apabila perlu? (sempang lembut tidak akan memotongnya)
P粉225961749
2023-08-25 11:10:51
<p>Adakah mungkin untuk menggunakan sempang atau sempang lembut dalam CSS supaya sempang tidak diberikan tanpa perlu? </p>
<p>Matlamat saya adalah untuk mengekalkan teks asal sebanyak mungkin dan mengeluarkan sebarang perkataan melainkan benar-benar kritikal kerana ia terlalu panjang untuk dimuatkan dalam lebar bekas. </p>
<h3>Kes khusus saya</h3>
<p>Saya mahu memaparkan teks "Hai Superman" seperti ini: </p>
<p>Jika perkataan "Superman" terlalu panjang untuk dimuatkan ke dalam bekas, saya mahu tanda sempang entah bagaimana, seperti: </p>
<pre class="brush:php;toolbar:false;">Hi Super-
lelaki</pra>
<p>Walau bagaimanapun, jika perkataan "Superman" boleh dimuatkan ke dalam bekas, ia mesti diterjemahkan tanpa tanda sempang</p>
<pre class="brush:php;toolbar:false;">Hai
Superman</pre>
<p>Jika situasi di atas mungkin ("Superman" boleh digunakan tanpa tanda sempang), maka menambah <em>tanda sempang yang tidak perlu</em>
<pre class="brush:php;toolbar:false;">Hi Super-
lelaki</pra>
<p>Saya boleh menukar HTML jika perlu. Saya boleh memasukkan sempang dengan cara yang bermakna (asalkan terdapat lebih daripada 3 huruf antara setiap sempang. "Superma-n" tidak pernah bagus)</p>
<h3>Apa yang saya cuba</h3>
<p>Saya rasa tanda sempang lembut adalah penyelesaiannya. Jadi saya menggunakan:<code>Hai Superman</code></p>
<p>Tetapi saya dapati bahawa ini membawa kepada situasi "sempang tidak perlu" yang tidak boleh diterima yang ditunjukkan di atas. </p>
<h3>Tunjukkan coretan yang gagal: </h3>
<p>
<pre class="snippet-code-css lang-css prettyprint-override"><code>body {
jidar-kiri: 30px;
}
div {
sempadan: pepejal 1px hitam;
}
.lebar {
sempadan: pepejal 1px biru;
lebar: 500px;
}
.sempit {
sempadan: pepejal 1px merah;
lebar: 360px;
}
h2 {
font-family: 'Courier New';
berat fon: 400;
saiz fon: 87px;
}
kod {
warna latar belakang: #eee;
}</code></pre>
<pre class="snippet-code-html lang-html prettyprint-override"><code><p> <code>Super&malu;man</code> perkataan penuh "Superman" tidak sesuai</p>
<p>
<div class="narrow"><h2>Hi Super&malu;man</h2></div>
<p>Tetapi dalam kes ini, perkataan "Superman" akan sesuai dengan tidak digembar-gemburkan pada baris kedua Tetapi CSS yang terkutuk itu memutuskan untuk menambah tanda sempang juga tidak boleh diterima!
Sekali lagi, ini menggunakan kod yang sama seperti contoh sebelumnya
<kod>lelaki super&malu</kod></p>
<div class="wide"><h2>Hai Super&malu;lelaki</h2></div>
<p>Saya juga cuba menambah teg pemecah kata sebelum "Superman", seperti ini <code>Hai <wbr>manusia super&malu</code> ;
<p> </p>
<div class="wide"><h2>Hai <wbr>Lelaki yang sangat&pemalu</h2></div></code></pre>
</p>
<p>Bolehkah saya menyelesaikan contoh di atas menggunakan CSS sahaja? (Mencuba atribut <code>word-break</code> berbeza tanpa kejayaan)</p>
<p><strong>Tekaan saya</strong> kerana sifat CSS, adalah mustahil untuk menyelesaikan masalah ini hanya menggunakan HTML dan CSS biasa. Saya mengandaikan CSS hanya menghuraikan teks baris demi baris, ia tidak dapat mengetahui sama ada perkataan "sesuai dengan lebih baik" dalam baris teks seterusnya. Jika tanda sempang ditemui, ia akan cuba memuatkan bilangan maksimum aksara dalam baris teks semasa. </p>
<p>Saya ingin menyelesaikan masalah ini hanya menggunakan HTML dan CSS, atau tidak sama sekali. </p>
<p>Terbaik:</p>
<ul>
<li><p>Tidak menggunakan JavaScript untuk penghuraian teks. </p>
</li>
<li><p>Saya tidak mahu perlu menetapkan sifat CSS yang berbeza untuk setiap div berdasarkan lebar div dan sama ada saya fikir teks itu memerlukan tanda sempang. </p>
</li>
<li><p>Tidak mahu menambah pembalut pada teks saya</p>
</li>
<li><p>Tiada tanda sempang automatik menyebabkan tanda sempang yang tidak masuk akal seperti "Superma-n" (tetapi dalam keadaan semput, saya boleh menggunakan tanda sempang automatik asalkan terdapat 3 aksara antara setiap sempang . Contohnya "Sup -erman")</p>
</li>
</ul></p>
CSS 3 termasuk atribut "
hyphens
”属性,可根据指定的lang
" untuk menetapkan tanda sempang Tetapi ini hanyalah draf berfungsi, jadi sokongan masih Anda boleh menetapkannya kepada­
auto, yang secara automatik menambah tanda sempang jika diperlukan berdasarkan penyetempatan.. Ini adalah contoh, jika anda menjalankan windows/linux pastikan anda menyemak perbezaan antara Firefox dan chrome.
Gunakan bekas dengan
display: inline-block
di sekeliling perkataan panjang.