Saya sedang membangun situs multibahasa, dengan pemiliknya membantu saya dengan beberapa terjemahan. Beberapa frasa yang ditampilkan memerlukan jeda baris untuk mempertahankan gaya situs.
Sayangnya, pemiliknya bukan orang komputer, jadi jika dia melihat foo<br />bar
ada kemungkinan dia akan mengubah data entah bagaimana saat dia menerjemahkan.
Apakah ada solusi CSS (selain mengubah lebar) untuk diterapkan ke elemen yang akan pecah setelah setiap kata?
(Saya tahu saya bisa melakukan ini dalam PHP, tapi saya bertanya-tanya apakah ada trik bagus yang tidak saya ketahui dalam CSS untuk mencapai hal yang sama, mungkin dalam fitur CJK.)
EDIT
Saya akan mencoba untuk memetakan apa yang terjadi:
---------------- ----------------
| Short Word | | Gargantuan |
| | | Word |
---------------- ----------------
Kata panjang terputus secara otomatis, kata pendek tidak. Saya ingin terlihat seperti ini:
---------------- ----------------
| Short | | Gargantuan |
| Word | | Word |
---------------- ----------------
sumber
Jawaban:
Menggunakan
di mana
<parent-width>
lebar elemen induk (atau nilai tinggi sewenang-wenang yang tidak masuk ke dalam satu baris). Dengan begitu Anda dapat yakin bahwa bahkan ada jeda setelah satu huruf. Bekerja dengan Chrome / FF / Opera / IE7 + (dan mungkin bahkan IE6 karena mendukung spasi kata).sumber
.parent { word-spacing: 100px; }
mana100px
lebar elemen induk. Masalahnya adalah bahwa solusi ini tidak berfungsi jika Anda memiliki orangtua yang fluida.word-spacing: 100000px
dan Anda tidak perlu khawatir orangtua menjadi cair dalam hal lebar. Mengatur jarak kata 100% akan masuk akal (itu akan menjadi 100% dari lebar induk), tetapi nilai yang dinyatakan dalam persentase tidak didukung untuk properti css itu.word-spacing: 2em;
dan pada lebar ponsel saya ingin mereka menjadi satu-baris:word-spacing: unset;
Jawaban yang diberikan oleh @HursVanBloob hanya berfungsi dengan wadah induk dengan lebar tetap, tetapi gagal jika wadah dengan lebar cairan .
Saya mencoba banyak properti, tetapi tidak ada yang berhasil seperti yang diharapkan. Akhirnya saya sampai pada kesimpulan bahwa memberikan
word-spacing
nilai yang sangat besar bekerja dengan sangat baik.atau, untuk browser modern Anda dapat menggunakan
vw
unit CSS (lebar visual dalam% dari ukuran layar).sumber
Solusi alternatif dijelaskan pada kalimat terpisah ke satu kata per baris , dengan menerapkan
display:table-caption;
elemensumber
Coba gunakan
white-space: pre-line;
. Itu menciptakan jeda baris di mana pun jeda baris muncul dalam kode, tetapi mengabaikan spasi putih (tab dan spasi dll).Pertama, tulis kata-kata Anda pada baris terpisah dalam kode Anda:
Kemudian terapkan gaya ke elemen yang mengandung kata-kata.
Namun hati-hati , setiap jeda baris dalam kode di dalam elemen akan membuat jeda baris. Jadi, menulis yang berikut ini akan menghasilkan jeda baris tambahan sebelum kata pertama dan setelah kata terakhir:
Ada artikel bagus tentang Trik CSS yang menjelaskan atribut ruang putih lainnya.
sumber
white-space
bisa digunakan untuk menjawab pertanyaan. Maaf, tapi saya tidak mengerti caranya.white-space: pre;
" untuk menampilkan jeda baris seperti yang dilakukan<pre>
tag? Itu bisa bekerja, dan satu baris harus terlihat lebih alami untuk penerjemah daripada<br />
. Saya akan mencoba mengedit jawaban Anda untuk menambahkannya :)white-space: pre-line;
mungkin akan lebih tepat, karena mengabaikan spasi kosong dalam kode Anda. Saya akan memperbarui jawabannya.white-space: pre;
untuk IE 7.Jika Anda ingin dapat memilih dari solusi yang berbeda, di samping jawaban yang diberikan ...
Metode alternatif adalah memberi wadah lebar 0 dan untuk memastikan luapan terlihat. Maka setiap kata akan keluar dari itu dan akan berada di jalurnya sendiri.
Atau Anda dapat menggunakan salah satu dari
width
nilai - nilai yang baru diusulkan , asalkan masih ada pada saat Anda membaca ini.sumber
Anda tidak dapat menargetkan setiap kata dalam CSS. Namun, dengan sedikit jQuery Anda mungkin bisa.
Dengan jQuery Anda dapat membungkus setiap kata dalam
<span>
dan kemudian rentang rentang CSSdisplay:block
yang akan menempatkannya pada barisnya sendiri.Secara teori tentu saja: P
sumber
:first-child
trik atau sesuatu di luar sana ...https://jsfiddle.net/bm3Lfcod/1/
Bagi mereka yang mencari solusi yang bekerja dalam wadah orangtua yang fleksibel dengan anak-anak yang fleksibel di kedua dimensi. misalnya. tombol navbar.
sumber
CSS
properti lain yang bisa Anda berikan. Katakan properti yang dapat menyebabkanbrowser reflow
Saya menghadapi masalah yang sama, dan tidak ada opsi di sini yang membantu saya. Beberapa layanan email tidak mendukung gaya yang ditentukan. Ini versi saya, yang menyelesaikan masalah dan bekerja di mana saja saya periksa:
ATAU menggunakan CSS:
sumber
Solusi terbaik adalah
word-spacing
properti.Tambahkan
<p>
dalam wadah dengan ukuran tertentu (contoh300px
) dan setelah itu Anda harus menambahkan ukuran itu sebagai nilai dalam spasi kata.HTML
CSS
Dengan cara ini, kalimat Anda akan selalu rusak dan diatur dalam kolom, tetapi dengan paragraf akan menjadi dinamis.
Berikut contoh Codepen
sumber
Dalam kasus saya,
bekerja dengan baik, semoga membantu pendatang baru lainnya seperti saya.
sumber