CSS bukan untuk menambah atau mengedit konten, tetapi untuk mengontrol bagaimana konten ditampilkan.
Todd Moses
40
Menurut saya tata letak dan aliran (pemisah garis dapat dianggap baik) jelas berada dalam domain CSS.
Trevor
12
CSS mutlak untuk menambahkan atau mengedit konten ketika itu adalah elemen gaya yang konsisten yang merupakan bagian dari tema Anda. Terutama dengan sistem manajemen konten seperti Wordpress yang tidak memungkinkan Anda untuk mengedit konten Anda, ini sangat berguna. Itu sebabnya properti "konten" ada. Untuk menambah dan / atau mengedit konten.
Coba juga ruang putih: pra-bungkus; jika Anda ingin teks Anda dibungkus.
Jazzy
6
Cemerlang. Perlu dicatat, bahwa untuk ini bekerja - #restartjuga harusdisplay: inline;
Troy Alford
23
Ini tidak berhasil untuk saya, saya gunakan :before { content: ' '; display: block; }sebagai gantinya.
Bogdanio
1
Untuk beberapa alasan tidak ada solusi yang bekerja dengan inline-blockelemen. Mereka tidak akan pergi ke baris berikutnya. Satu-satunya solusi adalah benar-benar menambahkan yang kosong <div></div>dalam HTML.
Adam Reis
2
Jika garis tidak putus, Anda dapat menggunakan properti 'white-space': before {content: '\ A'; white-space: pre; }
Amr
35
Jika #restartelemen inline (mis. <span>, <em>Dll) maka Anda dapat mengubahnya menjadi elemen blok menggunakan:
#restart { display: block; }
Ini akan memiliki efek memastikan garis terputus sebelum dan sesudah elemen.
Tidak ada cara untuk membuat CSS menyisipkan sesuatu yang bertindak seperti satu baris saja sebelum elemen dan bukan sesudahnya. Anda mungkin dapat menyebabkan break-line sebelumnya sebagai efek samping dari perubahan lain, misalnya float: left, atau clear: leftsetelah elemen melayang, atau bahkan sesuatu yang gila, #restart:before { content: 'a load of non-breaking spaces'; }tetapi ini mungkin bukan ide yang baik dalam kasus umum.
Itu tidak dapat menampilkan: blok - karena dengan begitu saya perlu menampilkan lebar untuk elemen agar latar belakangnya tidak berjalan sepanjang halaman. Itu harus dapat secara otomatis mengatur lebar untuk elemen.
mheavers
3
Suatu float: leftelemen mungkin berguna, karena mereka menyusut dan mulai pada baris baru. Kalau tidak, apa yang Anda inginkan mungkin tidak mungkin.
bobince
Penyebab downvoted kadang-kadang pengembang bekerja di proyek besar di mana mereka tidak memiliki kontrol atau tidak dapat mengambil keputusan untuk menerapkan solusi lain.
Bekerja sebagai pesona bagi saya. Saya menggunakan ini:content: 'bar: \a' attr(data-description);
Jimmy Adaro
Ini adalah jawaban yang benar 👍
cronoklee
10
Ada dua alasan mengapa Anda tidak dapat menambahkan konten yang dihasilkan melalui CSS dengan cara yang Anda inginkan:
konten yang dihasilkan menerima konten dan bukan markup. Markup tidak akan dievaluasi tetapi hanya ditampilkan.
:beforedan :afterkonten yang dihasilkan ditambahkan di dalam elemen, sehingga bahkan menambahkan spasi atau huruf dan mendefinisikannya sebagai blocktidak akan berfungsi.
Ada ::outsideelemen pseudo yang dapat melakukan apa yang Anda inginkan. Namun, tampaknya tidak ada dukungan browser. (Baca lebih lanjut di sini: http://www.w3.org/TR/css3-content/#wrapping )
Taruhan terbaik adalah menggunakan sedikit jQuery di sini:
"Menggunakan CSS". Saya menemukan jawaban yang mirip dengan karya Jesse Kinsman.
RonnyKnoxville
4
Ya, benar-benar bisa dilakukan tetapi jelas merupakan peretasan total (orang-orang mungkin memberi Anda tampilan yang kotor untuk menulis kode seperti itu).
Ini HTML-nya:
<div>lorem ipdum dolor sit <spanid="restart">amit e pluribus unum</span></div>
+1 Untuk kreativitas. Saya punya sesuatu yang saya sertakan dari sumber eksternal dan tidak dapat mengubah HTML yang sebenarnya ... ini tampaknya berfungsi dengan baik :) Terima kasih!
Saya tidak beruntung sama sekali dengan memasukkan jeda dengan: sebelumnya. Solusi saya adalah menambahkan span dengan kelas dan meletakkan break di dalam span. Kemudian ubah kelas untuk ditampilkan: tidak ada; atau tampilan: blokir sesuai kebutuhan.
https://www.w3.org/TR/CSS2/generate.html#x18
Content Proerty, "baris baru" ... p tidak akan menambahkan margin atau bantalan pada akhir p di dalam blok induk (misalnya, badan ›bagian› p). Garis "\ A" memaksa ruang garis, ketinggian garis yang setara.
Tambahkan margin-top:20px;ke #restart. Atau berapa pun ukuran celah yang Anda rasa sesuai. Jika elemen inline Anda harus menambahkan display:blockatau display:inline-blockmeskipun saya pikir tidak inline-blockberfungsi pada versi IE yang lebih lama.
Tidak masalah adalah bahwa tipe tampilan elemen adalah inline-block, jadi saya perlu istirahat sebelum elemen.
mheavers
tipe tampilan sudah inline-block. Saya mencoba melakukan apa yang saya minta di atas, menggunakan properti konten.
mheavers
Anda tidak dapat menambahkan elemen html menggunakan properti konten, itu tidak mungkin.
punkrockbuddyholly
karena jawaban Anda tidak akan menyelesaikan masalahnya. Lihatlah jawaban yang menang yang merinci cara untuk menyediakan jeda baris menggunakan properti konten (yang tidak akan menerima elemen html). Mungkin itu adalah kesalahpahaman dari pertanyaan awal.
pdwalker
-1
Alih-alih menambahkan garis hentian secara manual, Anda bisa melakukan implement border-bottom: 1px solid #ff0000yang akan mengambil perbatasan elemen dan hanya membuat border-<side>sisi mana pun yang Anda tentukan.
Jawaban:
Mungkin saja menggunakan
\A
urutan pelarian dalam konten yang dihasilkan elemen psuedo. Baca lebih lanjut di spec CSS2.Anda juga mungkin perlu menambahkan
white-space:pre;
untuk#restart
.note:
\A
menunjukkan akhir dari sebuah garis.ps Perawatan lain yang akan dilakukan
sumber
#restart
juga harusdisplay: inline;
:before { content: ' '; display: block; }
sebagai gantinya.inline-block
elemen. Mereka tidak akan pergi ke baris berikutnya. Satu-satunya solusi adalah benar-benar menambahkan yang kosong<div></div>
dalam HTML.Jika
#restart
elemen inline (mis.<span>
,<em>
Dll) maka Anda dapat mengubahnya menjadi elemen blok menggunakan:Ini akan memiliki efek memastikan garis terputus sebelum dan sesudah elemen.
Tidak ada cara untuk membuat CSS menyisipkan sesuatu yang bertindak seperti satu baris saja sebelum elemen dan bukan sesudahnya. Anda mungkin dapat menyebabkan break-line sebelumnya sebagai efek samping dari perubahan lain, misalnya
float: left
, atauclear: left
setelah elemen melayang, atau bahkan sesuatu yang gila,#restart:before { content: 'a load of non-breaking spaces'; }
tetapi ini mungkin bukan ide yang baik dalam kasus umum.sumber
float: left
elemen mungkin berguna, karena mereka menyusut dan mulai pada baris baru. Kalau tidak, apa yang Anda inginkan mungkin tidak mungkin.Ini bekerja untuk saya:
sumber
Masukkan saja karakter unicode baris baru ke dalam elemen pseudo sebelumnya:
sumber
CSS berikut berfungsi untuk saya:
sumber
content: 'bar: \a' attr(data-description);
Ada dua alasan mengapa Anda tidak dapat menambahkan konten yang dihasilkan melalui CSS dengan cara yang Anda inginkan:
konten yang dihasilkan menerima konten dan bukan markup. Markup tidak akan dievaluasi tetapi hanya ditampilkan.
:before
dan:after
konten yang dihasilkan ditambahkan di dalam elemen, sehingga bahkan menambahkan spasi atau huruf dan mendefinisikannya sebagaiblock
tidak akan berfungsi.Ada
::outside
elemen pseudo yang dapat melakukan apa yang Anda inginkan. Namun, tampaknya tidak ada dukungan browser. (Baca lebih lanjut di sini: http://www.w3.org/TR/css3-content/#wrapping )Taruhan terbaik adalah menggunakan sedikit jQuery di sini:
Contoh: http://jsfiddle.net/jasongennaro/sJGH9/1/
sumber
Ya, benar-benar bisa dilakukan tetapi jelas merupakan peretasan total (orang-orang mungkin memberi Anda tampilan yang kotor untuk menulis kode seperti itu).
Ini HTML-nya:
Inilah CSS-nya:
Ini biola: http://jsfiddle.net/AprNY/
sumber
Coba yang berikut ini:
sumber
dengan asumsi Anda ingin tinggi garis menjadi 20 px
sumber
Saya tidak beruntung sama sekali dengan memasukkan jeda dengan: sebelumnya. Solusi saya adalah menambahkan span dengan kelas dan meletakkan break di dalam span. Kemudian ubah kelas untuk ditampilkan: tidak ada; atau tampilan: blokir sesuai kebutuhan.
HTML
CSS
Semoga ini membantu.
sumber
Anda dapat mengisi dokumen Anda dengan
<br>
tag dan menyalakannya \ dengan css seperti yang lain:sumber
Anda juga dapat menggunakan entitas HTML pra-disandikan untuk jeda baris
dalam konten Anda dan itu akan memiliki efek yang sama.sumber
https://www.w3.org/TR/CSS2/generate.html#x18 Content Proerty, "baris baru" ... p tidak akan menambahkan margin atau bantalan pada akhir p di dalam blok induk (misalnya, badan ›bagian› p). Garis "\ A" memaksa ruang garis, ketinggian garis yang setara.
sumber
Tambahkan
margin-top:20px;
ke#restart
. Atau berapa pun ukuran celah yang Anda rasa sesuai. Jika elemen inline Anda harus menambahkandisplay:block
ataudisplay:inline-block
meskipun saya pikir tidakinline-block
berfungsi pada versi IE yang lebih lama.sumber
Alih-alih menambahkan garis hentian secara manual, Anda bisa melakukan implement
border-bottom: 1px solid #ff0000
yang akan mengambil perbatasan elemen dan hanya membuatborder-<side>
sisi mana pun yang Anda tentukan.sumber
<br>
, bukan<hr>
.