Text indent after the first line in a paragraph

删除回忆录丶 提交于 2019-11-30 05:35:15
Mathew

You need text-indent. Normally text-indent pushes the first line inwards, but if you give it a minus figure and use a positive margin, you can achieve the effect you're after.

text-indent: -10px;
margin-left: 10px
p {
  text-indent: -1em;
  padding-left: 1em;
}

Not usable right now but if you activate the Experimental Web platform Flag on chrome you can use text-indent:1em each-line; which should do exactly what you want.

text-indent on MDN

On inline elements maybe it works differently, I have noticed. I was needing an "outdent" (first line further left than rest of paragraph) and noticed the suggestions above did the opposite -- created a regular indent (where first line is further RIGHT than other lines). Here is what works for an inline element, for example, an "a" tag:

#myDiv ul li { margin-left:1em; }
#myDiv ul li a { color:#333; text-indent:0.5em; margin-left:-1em; line-height:1; }

I also set the containing block-level element to have a margin of 1em, so that where the inline "a" elements commence, with their negative margins, they actually position exactly where I things would have been originally before messing around to make an "outdent".

Hope this helps someone! I also noticed there's no size control on the text-indent itself on my inline element, either....

JSFiddle Example

Building on @kennytm's answer; if you want to align monospaced text, use ch units instead of em units. For example:

<div class="query-select">SELECT Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10</div>

with ch-based padding/negative indents

.query-select {
  padding-left: 8ch;
  text-indent: -7ch;
} 

Will render (based on page width) as:

  SELECT Field1, Field2, Field3, Field4, Field5, Field6, 
         Field7, Field8, Field9, Field10
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!