我显示的句子和一些短语来自某个班级。现在,我想要包含这些短语'右上方有一个大括号的类,如附带的模型所示。
我的问题是:实现这种功能的最佳方法是什么?有代码示例吗?
EDIT(已添加当前代码):
HTML
<token>Effects</token>
<token>of</token>
<token>an</token>
<token>ascorbic</token>
<elem type="drug">
<token>acid-derivative</token>
<token>dentifrice</token>
</elem>
<token>in</token>
<elem type="person">
<token>patients</token>
</elem>
<token>with</token>
<elem type="disease">
<token>gingivitis</token>
</elem>
CSS
token {
margin-left: 6px;
}
代码的小提琴演示
答案 0 :(得分:4)
这是一个使用CSS和伪元素(以及标签的附加HTML元素)完成的解决方案。它应该是不言自明的,但如果您对此有疑问,请问......
.container1 {
display: inline-block;
margin-top: 50px;
border: 1px solid #aaa;
padding: 3px 8px 0 0;
}
token {
margin-left: 6px;
}
elem[type="drug"],
elem[type="person"],
elem[type="disease"] {
position: relative;
}
elem[type="drug"]::after,
elem[type="person"]::after,
elem[type="disease"]::after {
content: "";
position: absolute;
top: -1em;
left: 3%;
width: 94%;
height: 0.5em;
border-top: 1px solid #aaa;
border-left: 1px solid #aaa;
border-right: 1px solid #aaa;
border-top-left-radius: 20px;
border-top-right-radius: 20px;
z-index: 10;
}
.label {
position: absolute;
top: -3em;
left: 3%;
width: 94%;
z-index: 10;
text-align: center;
}
.label:after {
content: "|";
position: absolute;
top: 1.2em;
left: 3%;
width: 94%;
z-index: 10;
text-align: center;
color: #aaa;
}
.drug {
color: red;
}
.person {
color: blue;
}
.disease {
color: green;
}
<div class="container1">
<token>Effects</token>
<token>of</token>
<token>an</token>
<token>ascorbic</token>
<elem type="drug">
<token>acid-derivative</token>
<token>dentifrice</token>
<div class=" label drug">
Drug
</div>
</elem>
<token>in</token>
<elem type="person">
<token>patients</token>
<div class=" label person">
Person
</div>
</elem>
<token>with</token>
<elem type="disease">
<token>gingivitis</token>
<div class=" label disease">
Disease
</div>
</elem>
</div>
答案 1 :(得分:2)
使用HTML和CSS无法轻松实现 。对于高级格式化,我使用MathJax获得了良好的结果,它允许类似LaTeX的格式化。
例如,格式
$\overbrace{\text{Big ones, small ones}}^{Coconuts}\text{, some as big as your head}$
看起来像:
实例:http://jsfiddle.net/AqDCA/940/
另见:MathJax basic tutorial and quick reference
jqMath是一种轻量级替代方案,具有更少的功能和更小的占用空间。
答案 2 :(得分:2)
简单选项虽然不太时尚,但使用<ruby>
标签。请注意,这些是针对东亚字符的,可能有奇怪的格式与英文文本:
ruby rt {font-size:12px;}
ruby {color:#4a4;}
ruby.drug {color:#44a;}
Maybe this can <ruby class="drug">be done<rt>Drug</ruby> with <ruby>HTML<rt>Han</ruby>.