用CSS / HTML格式化考试

时间:2014-01-10 19:16:42

标签: html css formatting

我想在线格式化考试文本。经过高低搜索,这是我能想到的唯一解决方案:

<table>
<tr><td colspan="3">Question 1</td><td>[24]</td></tr>
<tr><td>1.1</td><td colspan="2">Solve for $x$</td></tr>
<tr><td></td><td>1.1.1</td><td>$(3x+7)(x^2+2)=0$</td><td>(3)</td></tr>
<tr><td></td><td>1.1.2</td><td>$\sqrt{2-x} - x = 4$</td><td>(5)</td></tr>
<tr><td>1.2</td><td colspan="2">The equations of two parabolas are $y = x^2 + 
    x + c$ and $y = 1 - cx - x^2$, where $c$ is a real number.</td></tr>
<tr><td></td><td>1.2.1</td><td>Prove that these parabolas must intersect 
    for all real values of $c$.</td><td>(6)</td></tr>
</table>

尝试将每个问题排成一行。我已经看过使用HTML列表,但在插入图表等时会出现问题。有什么我想念的吗?有没有更快的方式来打字?我的问题只在于格式化,在寻找答案的过程中找到了CSS中的计数器。

非常感谢,一位绝望的老师和noobie。

1 个答案:

答案 0 :(得分:1)

如果你的问题是垂直对齐,在顶部,问题和分数的数字,而不是最简单的答案是添加css样式vertical-align:top;

所以你的css应该是这样的:

td {
    vertical-align:top;
}

请参阅此http://jsfiddle.net/dyPR9/

对于更高级的版本,您不应该使用表来格式化输出。在这种情况下,您有一个订单列表,因此,表格将转换为olli元素,并将得分放在div元素中:

<ol>
    <li class="mainquestion">Question 1
        <div class="score">[24]</div>
    </li>
    <ol>
        <li>Solve for $x$</li>
        <ol>
            <li>$(3x+7)(x^2+2)=0$
                <div class="score">(3)</div>
            </li>
            <li>$\sqrt{2-x} - x = 4$
                <div class="score">(5)</div>
            </li>
        </ol>
    </ol>
</ol>

并且css应该处理演示文稿:

OL { counter-reset: item }
LI { display: block }
LI:before { content: counters(item, ".")" "; counter-increment: item }
ol:first-child { padding: 0; }
li.mainquestion { list-style: none; }
li.mainquestion+ol { padding: 0; }
li.mainquestion:before { content: ""; counter-increment: item }
div.score { float: right; }

请参阅http://jsfiddle.net/q2YCV/

中的示例