CSS ile bir paragrafın ikinci satırından başlayarak girinti


106

Bir paragrafın ikinci satırından başlayarak nasıl girintileme yapabilirim?

denedim

p {
    text-indent: 200px;
}
p:first-line {
    text-indent: 0;
}

ve

p {
    margin-left: 200px;
}
p:first-line {
    margin-left: 0;
}

ve

(with position:relative;)
p {
    left: 200px;
}
p:first-line {
    left: 0;
}

Neden tüm ilk satır metin girintiniz 0 olarak ayarlandı? Ayrıca, bunu nasıl yapacağımı bilmiyorum ama bu listede eksik olan bana en mantıklı gelen dolgu, dolgu.
Skarlinski

Yanıtlar:


215

Eğer girinti ettirmek isteyen ikinci satır anlamıyla mi, yoksa olduğu gelen ikinci hat (yani. Bir asma girinti )?

İkincisi ise, bu JSFiddle'ın çizgisinde bir şey uygun olacaktır.

    div {
        padding-left: 1.5em;
        text-indent:-1.5em;
    }
    
    span {
        padding-left: 1.5em;
        text-indent:-1.5em;
    }
<div>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</div>

<span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</span>

Bu örnek, bir DIV veya SPAN'da aynı CSS sözdiziminin kullanılmasının nasıl farklı efektler ürettiğini gösterir.


3
@Reuben Şimdi silinmiş olan yorumunuza dayanarak, ikinci satırdan KADAR anlamış olduğunuzu varsayıyorum - ve gelecekteki ziyaretçiler için, sözdiziminin P div veya span olmadığı durumlarda belki de bu keman daha iyidir. jsfiddle.net/gg9Hx
redditor

1
Neden sol dolgu ve ardından negatif metin girintisi? Neden böyle çalışması gerekiyor? Garip görünüyor. Neden sadece pozitif değil text-indent?
Don Cheadle

2
Metin girintisinin aralık üzerinde etkisi yoktur. Aynı sonuç için açıklık stilinden çıkarılabilir.
Sam Hasler

25

Sol kenar boşluğu oluştur: 2em kadar ilk satır dahil olmak üzere tüm metni sağa 2em itecektir. Daha sonra metin girintisini (ilk satıra uygulanabilir) -2em ya da öylesine ekleyin .. Bu, ilk satırı kenar boşluğu olmadan başlangıca geri getirir. Liste etiketleri için denedim

<style>
    ul li{
      margin-left: 2em;
      text-indent: -2em;
    }
</style>

24

Bu benim için çalıştı:

p { margin-left: -2em; 
 text-indent: 2em 
 }

10
Bu, OP'nin sorduğu şeyin tam tersini yapıyor gibi görünüyor. @ techillage'ın sürümü doğru. Eksi etrafını değiştirmelisin
Alex Holsgrove

1
Bu neredeyse tam olarak ihtiyacım olan şeydi. Kabul edilen yanıt benim için işe yaramayacak çünkü CMS'imde bu şekilde aralık ekleme özgürlüğüm yok. Buradaki çözümle ilgili yaşadığım tek sorun, sol kenar boşluğunun tüm paragrafı bir kabın dışına çekmesidir. Bu yüzden 'pozisyon: göreli' ve 'sol: 2em' ekledim ve mükemmel. @AlexHolsgrove'un yorumunun aksine, techillage'ın cevabı benim için hiç işe yaramadı, ama belki bunu bir liste öğesinde yapmadığım için.
Stu Furlong

2

Bir paragrafta daha büyük bir ilk kelimeye izin vermek için iki satırı girintili hale getirmem gerekiyordu. Tek seferlik zahmetli bir çözüm, metni bir SVG öğesine yerleştirmek ve bunu bir <img> ile aynı şekilde konumlandırmaktır. Float ve SVG'nin yükseklik etiketinin kullanılması, kaç satırın girintileneceğini tanımlar.

<p style="color: blue; font-size: large; padding-top: 4px;">
<svg height="44" width="260" style="float:left;margin-top:-8px;"><text x="0" y="36" fill="blue" font-family="Verdana" font-size="36">Lorum Ipsum</text></svg> 
dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
  • SVG'nin yüksekliği ve genişliği engellenen alanı belirler.
  • Y = 36, SVG metin taban çizgisinin derinliğidir ve yazı tipi boyutuyla aynıdır
  • margin-top, SVG metni ve para metninin en iyi şekilde hizalanmasını sağlar
  • Torunlar için gerekli bakımı hatırlatmak için burada ilk iki kelimeyi kullandık

Evet, kullanışsızdır, ancak aynı zamanda içeren div'in genişliğinden de bağımsızdır.

Yukarıdaki cevap, bir para biriminin ilk kelimelerinin daha büyük olmasına ve iki satırın üzerine yerleştirilmesine izin vermek için kendi sorguma oldu. Bir paranın ilk iki satırını girintilemek için, tüm SVG etiketlerini aşağıdaki tek piksel img ile değiştirebilirsiniz:

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" style="float:left;width:260px;height:44px;" />


1

Liste olarak stil verirsen

  • "text-align: initial" yapabilirsiniz ve sonraki satırların tümü girintili olacaktır. Bunun ihtiyaçlarınıza uymayabileceğinin farkındayım, ancak işaretlememi değiştirmeden önce başka bir çözüm olup olmadığını kontrol ediyordum ..

    Sanırım ikinci satırı eklemek de işe yarayacaktır, ancak içeriğin düzgün bir şekilde akması için insan düşüncesini ve tabii ki katı satır sonları (ki bu beni rahatsız etmiyor) gerektirir.


  • 1
    Stackoverflow'a hoş geldiniz. Görünüşe göre bu girinti problemine bir çözüm bulmuşsunuz. Bununla birlikte, bazı işaretleme sağlar ve çözümü açıklarsanız herkese çok yardımcı olur. Çalışan bir demo oluşturmak için jsfiddle.net veya başka bir hizmeti kullanabilirsiniz. Herşey gönlünce olsun.
    EGL 2-101
    Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
    Licensed under cc by-sa 3.0 with attribution required.