How do you do tab stops in HTML/CSS

此生再无相见时 提交于 2019-12-12 08:31:44

问题


There is some text whose formatting I would like to render in HTML. Here is an image:

Note the gray lines with the bullet points and the paragraph numbers. The bullets should be centered on the page and the numbers should be justified right.

I've been trying to think of how to do this in HTML and am coming up blank. How would you capture this formatting?


回答1:


You can use the :before and :after psuedo-elements to great effect here:

http://jsfiddle.net/yNnv4/1/

This will work in all modern browsers and IE8+. If IE7 support is required, this answer is not for you :)

#container {
    counter-reset: nums;
}
p {
    position: relative;
    margin: 21px 0;
}
p:before {
    content: '\2022 \2022';
    font-size: 2em;
    position: absolute;
    top: -8px;
    left: 0;
    line-height: 1px;
    color: #888;
    width: 100%;
    text-align: center
}
p:after {
    content: counter(nums);
    counter-increment: nums;
    font-size: 1.5em;
    position: absolute;
    top: -8px;
    right: 0;
    line-height: 1px;
    color: #888;
    font-family: sans-serif
}

About the counter properties:

  • https://developer.mozilla.org/en/CSS_Counters
  • http://www.w3.org/TR/CSS21/syndata.html#counter
  • http://www.w3.org/TR/CSS21/generate.html#propdef-counter-increment

It's not possible to (automatically) increment the bullets.

However, it can be done with some dubious repetition:

http://jsfiddle.net/N4txk/1/

p:before { content: '\2022' }
p+p:before { content: '\2022 \2022' }
p+p+p:before { content: '\2022 \2022 \2022' }
/* .... */

(alternatively, :nth-child can be repeated in the same way: http://jsfiddle.net/N4txk/ - but it won't work in IE8; there will only be two bullets)

There is an upper limit on the number of bullets it would be sensible to have, so I think it would be acceptable to copy and paste that as many times as required.




回答2:


How about something like this?

http://jsfiddle.net/6eTCf/

<div class="separator">
   * <div class="page_number">1</div>
</div>


.separator{
    margin: 5px 0 5px 0;
    color:gray;
    position:relative;  
    text-align: center;
}

.page_number{
    position:absolute;
    right: 3px; 
    top: 0; 
}



回答3:


I would float the number right and center the remaining contents (the bullet points). If you give the remaining contents an equal left and right margin larger than the numbers are wide, the contents will be centered.




回答4:


I would wrap the whole thing in a div, then use relative/absolute positioning between the wrapper and the paragraph number div to get the numbers on the right-hand side like that.

Here's a fiddle showing how to do it.




回答5:


There are a couple ways I can think of.

Add a <div> between the paragraphs, then add two <p>'s: <p class="dot"></p> and <p class="pnum">1</p>.

Style the <div> to the width of the the paragraphs, and set in the CSS the following:

.dot{ text-align: center; }
.pnum{ float: right; }



回答6:


There are several ways I can think of:

  • Float + absolute position (I'll let the purists explain this one)
  • Old style table (I'll explain this since it's the easiest):

If the total width of the area is, say, 300px

<table><tr>
   <td width="30"></td>
   <td width="240" align="center">bullets</td>
   <td width="30" align="right">number</td>
</tr></table>

Many people prefer using pure CSS, but I like my tables, they just work for me



来源:https://stackoverflow.com/questions/6472991/how-do-you-do-tab-stops-in-html-css

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