I want to annotate text with categories. Each categorie has a specific color. Also, I want to focus on the visualization of overlapping annotations.
Annotations and Atoms
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:
- Lorem { [ ipsum ] } dolor sit amet, consetetur sadipscing elitr. (Identity)
- { Lorem [ ipsum ] dolor } sit amet, consetetur sadipscing elitr. (Inclusion)
- Lorem { ipsum dolor [ sit amet, } consetetur ] sadipscing elitr. (Overlap)
- Lorem ipsum dolor sit amet, [ consetetur ] { sadipscing } elitr. (Neighbor)
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.
CSS and SPANs
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 usingz-index
, I know they have to beinline-block
orblock
elements. If they areblock
, aspan
is spread over more than one line.
Example
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/