I want to annotate text with categories. Each categorie has a specific color. Also, I want to focus on the visualization of overlapping annotations.
The part of the text (user selection), which is annotated, I call atoms.
For me there are 4 types of atoms which can overlap, described as follows:
We assume there are only 2 categories A with [ ] and B with { }. (but it works for more too)
All the tools I looked at overlap by background-color or different style types (like underlining A and background-color for B). When using background colors, the overlapping parts have usually a darker or a mixed color.
My approach is to border the atoms. So each atom gets wrapped in a span
tag. I have some problems with the (3.) overlap. Of course, I broke it down to 4 span
s: start, end and two for the overlapping part.
<span class="A outer start">iam nonumy</span>
<span class="A outer end overlap">
<span class="B start">
eirmod
</span>
</span>
<span class="B end">tempor</span>`
The line-height needs to increase as more atoms are annotated and overlapping.
How do I join the spans with the same class A and B ? (I tried padding, but it is not working. Also I tried to decrease the word-spacing
, but it works for the overlaps but breaks the normal text.)
How do I move span
s using z-index
, I know they have to be inline-block
or block
elements. If they are block
, a span
is spread over more than one line.
The example shows all 4 types. Also you can see the problem with the overlap and my attempt to use word-spacing
, also in the last example, the purple atom should be at the top.
http://jsfiddle.net/Bb62u/289/
Here is another example with word-spacing
, I have to set it to -10 to join the parts.
http://jsfiddle.net/Bb62u/297/
vertical-align
to make line-height
fluidUse relative/absolute positioning to bookend the spans
position: relative; text-align:right; /* for the container, */
position: absolute; left: 0; /* for the left aligned element, */
display: inline; /* or */
display: inline-block /* for the right element. */
Use white-space:nowrap
to avoid wrapping of text in inline-block
or block
elements
For example:
#container{ position: relative; text-align:right; }
#lefty { position: absolute; left: 0; }
#lefty, #righty { display: inline-block }
<div id="container">
<span id="lefty"><blockquote>left</blockquote></span>
<span id="righty"><blockquote>right</blockquote></span>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With