CSSで段落の2行目からインデント


102

段落の2行目からインデントするにはどうすればよいですか?

私はもう試した

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

そして

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

そして

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

最初の行のテキストインデントがすべて0に設定されているのはなぜですか?また、これを行う方法はわかりませんが、このリストから欠落しているのは、私にとって最も意味のあるパディングです。
Skarlinski 2013年

回答:


211

それは文字通りインデントしたい2行目だけですか、それとも2行目からのものですか(つまり、ぶら下げインデント)?

後者の場合、このJSFiddleに沿ったものが適切です。

    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>

この例は、DIVまたはSPANで同じCSS構文を使用すると、異なる効果がどのように生じるかを示しています。


3
@Reuben現在削除されているコメントに基づいて、私は2行目からFROMを意味していたと思います-将来の訪問者のために、おそらくこのフィドルの方が良いです。構文はP divまたはspanではありません。jsfiddle.net/gg9Hx
redditor

1
なぜパディングレフトでネガティブテキストインデントなのですか?なぜそれはそのように機能しなければならないのですか?奇妙に思われる。なぜ単にポジティブではないのtext-indentですか?
Don Cheadle、2015

2
テキストインデントはスパンに影響を与えません。同じ結果を得るために、スパンのスタイリングから削除できます。
Sam Hasler 2017年

25

これは私のために働きました:

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

9
これは、OPの要求とは正反対のことをしているようです。@techillageのバージョンは正しいです。マイナスを入れ替える必要があります
Alex Holsgrove 2016年

1
これは私が必要としていたものとほぼ同じです。CMSでスパンをそのように追加する自由がないので、受け入れられた回答は私にとってはうまくいきません。ここでの解決策で私が抱えていた唯一の問題は、左マージンが段落全体をコンテナの外に引っ張ってしまうことです。そこで、「position:relative」と「left:2em」を追加しました。これは完璧です。@AlexHolsgroveのコメントとは逆に、techillageの答えは私にはまったく効果がありませんでしたが、おそらくリスト要素でこれを行っていないためでしょう。
Stu Furlong 2017年

24

左マージンを作成:2emほどで、最初の行を含むテキスト全体が右2emにプッシュされます。text-indent(最初の行に適用可能)を-2em程度に追加するよりも..これにより、最初の行がマージンなしで最初に戻ります。リストタグに試してみました

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

2

リストとしてスタイリングする場合

  • "text-align:initial"を実行すると、以降の行はすべてインデントされます。これはあなたのニーズに合わないかもしれませんが、マークアップを変更する前に別の解決策があるかどうかを確認していました。

    2行目を挿入しても機能すると思いますが、コンテンツが適切に流れるように人間が考える必要があります。もちろん、ハードな改行(それ自体は気になりません)です。


  • 1
    Stackoverflowへようこそ。このインデントの問題に対する解決策があるようです。ただし、マークアップを提供し、解決策を説明すると、誰にとっても大きな助けになります。jsfiddle.netまたは他のサービスを使用して、実際に動作するデモを作成できる場合があります。ではごきげんよう。
    EGL 2-101 2015

    2

    パラの最初の単語を大きくするには、2つの行をインデントする必要がありました。面倒な1回限りの解決策は、テキストをSVG要素に配置し、これを<img>と同じように配置することです。floatとSVGの高さタグを使用して、インデントする行数を定義します。

    <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の高さと幅によって、ブロックされる領域が決まります。
    • Y = 36はSVGテキストベースラインまでの深さで、font-sizeと同じです
    • margin-topは、SVGテキストとパラテキストの最適な配置を可能にします
    • ここで最初の2つの単語を使用して、降下者に必要な注意を思い出させます

    はい、それは面倒ですが、それも含んでいるdivの幅から独立しています。

    上記の答えは、パラの最初の単語を大きくして2行に配置できるようにするための私のクエリに対するものでした。パラの最初の2行を単純にインデントするには、すべてのSVGタグを次の単一ピクセルのimgで置き換えることができます。

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

    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.