Tambahkan jeda baris ke :: setelah atau :: sebelum konten elemen pseudo

131

Saya tidak memiliki akses ke HTML atau PHP untuk satu halaman dan hanya dapat mengedit melalui CSS. Saya telah melakukan modifikasi pada situs dan menambahkan teks melalui elemen ::afteratau ::beforepseudo dan menemukan bahwa escape Unicode harus digunakan untuk hal-hal seperti spasi sebelum atau setelah konten yang ditambahkan.

Bagaimana cara menambahkan beberapa baris di contentproperti?

Sebagai contoh elemen break line HTML hanya untuk memvisualisasikan apa yang ingin saya capai:

#headerAgentInfoDetailsPhone::after
{
 content: 'Office: XXXXX <br /> Mobile: YYYYY ';
}
elkdee
sumber
CSS bukan untuk menambah atau mengedit konten, tetapi untuk mengontrol bagaimana konten ditampilkan
garis bawah
14
@SamithaHewawasam Sementara saya setuju dengan pernyataan Anda, sepertinya poster telah menemukan diri mereka dalam situasi di mana mereka tidak dapat mengedit HTML. Untuk penambahan konten yang kecil dan sederhana, saya dapat melihat mengapa ini berguna / perlu.
Dryden Long
3
Saya juga berpendapat bahwa jeda baris jauh lebih terkait format daripada konten terkait. Satu-satunya cara Anda "melihat" jeda baris adalah dengan mengamati perubahan format dalam konten.
Isochronous

Jawaban:

251

The contentnegara properti:

Penulis dapat menyertakan baris baru dalam konten yang dihasilkan dengan menulis urutan melarikan diri "\ A" di salah satu string setelah properti 'konten'. Jeda baris yang dimasukkan ini masih tunduk pada properti 'ruang putih'. Lihat "String" dan "Karakter dan huruf" untuk informasi lebih lanjut tentang urutan melarikan diri "\ A".

Jadi Anda bisa menggunakan:

#headerAgentInfoDetailsPhone:after {
  content:"Office: XXXXX \A Mobile: YYYYY ";
  white-space: pre; /* or pre-wrap */
}

http://jsfiddle.net/XkNxs/

Saat melarikan diri dari string arbitrer, bagaimanapun, disarankan untuk menggunakannya \00000asebagai ganti \A, karena angka atau [a-f]karakter apa pun yang diikuti oleh baris baru dapat memberikan hasil yang tidak terduga :

function addTextToStyle(id, text) {
  return `#${id}::after { content: "${text.replace(/"/g, '\\"').replace(/\n/g, '\\00000a')} }"`;
}
terpaut
sumber
28
Sejenak aku berpikir "mengapa \Adan tidak \n" - maka aku ingat baris baru adalah 0x0A:)
Camilo Martin
Saya mencoba ini dengan permintaan media cetak, tidak berhasil. apakah itu bug atau itu adalah perilaku default? Tanpa media cetak, ia berfungsi.
harryfeng
1
Terima kasih telah menyebutkan pre-wrap! Saya mengalami masalah dengan #headerAgentInfoDetailsPhone tidak membungkus lagi di peramban web mesin Blink seperti Chrome. Firefox tidak rentan terhadap white-space: pre;properti yang merambat kembali ke elemen.
Serge Stroobandt
28

Artikel yang bagus menjelaskan dasar-dasarnya (tidak mencakup jeda baris).

Sekelompok Banyak Hal Luar Biasa yang Dapat Dilakukan Pseudo Elements

Jika Anda perlu memiliki dua elemen sebaris di mana seseorang masuk ke baris berikutnya dalam elemen lain, Anda dapat melakukannya dengan menambahkan elemen pseudo: setelah dengan konten: '\ A' dan white-space: pre

HTML

<h3>
    <span class="label">This is the main label</span>
    <span class="secondary-label">secondary label</span>
</h3>

CSS

.label:after {
    content: '\A';
    white-space: pre;
}
menggarisbawahi
sumber
11

Saya harus memiliki baris baru di tooltip. Saya harus menambahkan CSS ini di: setelah:

.tooltip:after {
  width: 500px;
  white-space: pre;
  word-wrap: break-word;
}

Kata-bungkus sepertinya perlu.

Selain itu, \ A tidak berfungsi di tengah teks untuk ditampilkan, untuk memaksa baris baru.

 &#13;&#10; 

bekerja. Saya kemudian bisa mendapatkan tooltip seperti itu:

masukkan deskripsi gambar di sini

Cédric NICOLAS
sumber
8

Anda dapat mencoba ini

#headerAgentInfoDetailsPhone
{
    white-space:pre
}
#headerAgentInfoDetailsPhone:after {
    content:"Office: XXXXX \A Mobile: YYYYY ";
}

Js Fiddle

Sachin
sumber
7

Untuk orang yang akan mencari 'Bagaimana mengubah konten dinamis pada elemen semu menambahkan tanda baris baru "inilah jawabannya

Karakter HTML seperti &#13;&#10;tidak akan berfungsi menambahkannya ke HTML menggunakan JavaScript karena karakter tersebut diubah pada render dokumen

Alih-alih, Anda perlu menemukan representasi unicode dari karakter ini yaitu U + 000D dan U + 000A sehingga kami dapat melakukan sesuatu seperti

var el = document.querySelector('div');
var string = el.getAttribute('text').replace(/, /, '\u000D\u000A');
el.setAttribute('text', string);
div:before{
   content: attr(text);
   white-space: pre;
}
<div text='I want to break it in javascript, after comma sign'></div> 

Semoga ini menghemat waktu, semoga berhasil :)

Szymon
sumber
2

Tambahkan jeda baris ::afteratau ::beforekonten elemen semu

.yourclass:before {
    content: 'text here first \A  text here second';
    white-space: pre;
}
Ashar Zafar
sumber
0
<p>Break sentence after the comma,<span class="mbr"> </span>in case of mobile version.</p>
<p>Break sentence after the comma,<span class="dbr"> </span>in case of desktop version.</p>

Kelas .mbr dan .dbr dapat mensimulasikan perilaku line-break menggunakan tampilan CSS : table . Berguna jika Anda ingin mengganti <br /> nyata.

Lihat demo Codepen ini: https://codepen.io/Marko36/pen/RBweYY ,
dan postingan ini tentang penggunaan situs responsif : Pemutus baris responsif: simulasikan <br /> pada breakpoints yang diberikan .

marko-36
sumber