#svg
#svg
Вопрос:
Я использую приведенный ниже код SVG для построения горизонтальной гистограммы. Это нормально, но мне нужны также две встроенные метки до и после диаграммы. Я знаю, как добавить их с помощью HTML и CSS, но я хочу решить эту проблему только с помощью чистого SVG. Как это сделать?
<svg class="chart" width="300px" height="40">
<g transform="translate(0,0)">
<rect width="82%" height="22" fill="lightskyblue"></rect>
<rect width="100%" height="22" style="fill:none; stroke-width:1; stroke:gray;"></rect>
<text y="30" dx="0.25em" dy=".35em">0</text>
<text x="20%" y="10" dy=".35em" fill="red">|</text>
<text x="20%" y="30" dx="-0.25em" dy=".35em" fill="red">13</text>
<text x="100%" y="30" dx="-1.25em" dy=".35em">63</text>
</g>
</svg>
Это то, что у меня есть сейчас:
И это то, что я хочу:
Ответ №1:
Чтобы заставить это работать, я использую ваш код как вложенный svg внутри элемента svg большего размера. Пожалуйста, обратите внимание, что я использую атрибут viewBox, где компонент x имеет отрицательное значение (-50), освобождая место для текста.
svg{border:solid;}
<svg class="chart" width="300px" viewBox="-50 0 400 40">
<text y="20" x="-45">TXT</text>
<text x="345" y="20" text-anchor="end">TXT</text>
<svg viewBox="0 0 300 40" width="300">
<rect width="82%" height="22" fill="lightskyblue"></rect>
<rect width="100%" height="22" style="fill:none; stroke-width:1; stroke:gray;"></rect>
<text y="30" dx="0.25em" dy=".35em">0</text>
<text x="20%" y="10" dy=".35em" fill="red">|</text>
<text x="20%" y="30" dx="-0.25em" dy=".35em" fill="red">13</text>
<text x="100%" y="30" dx="-1.25em" dy=".35em">63</text>
</svg>
</svg>
Я должен сказать вам, что я бы не стал указывать проценты для положения и размера прямоугольников. Я бы сделал это, используя пользовательские единицы измерения (без идентификатора единицы измерения), и мне не нужно было бы переносить его в другой элемент svg.
Обновить
OP комментирует
Можете ли вы привести другой пример, без процентов для положения и размера прямоугольников и без переноса его в другой элемент svg
svg{border:solid}
<svg class="chart" width="300px" viewBox="-50 0 400 40">
<text y="20" x="-45">TXT</text>
<text x="345" y="20" text-anchor="end">TXT</text>
<rect width="246" height="22" fill="lightskyblue"></rect>
<rect width="300" height="22" style="fill:none; stroke-width:1; stroke:gray;"></rect>
<text y="30" dx="0.25em" dy=".35em">0</text>
<text x="60" y="10" dy=".35em" fill="red">|</text>
<text x="60" y="30" dx="-0.25em" dy=".35em" fill="red">13</text>
<text x="300" y="30" dx="-1.25em" dy=".35em">63</text>
<svg>
Комментарии:
1. Спасибо! Можете ли вы привести другой пример, без процентов для положения и размера прямоугольников и без переноса его в другой элемент svg, пожалуйста?
2. Большое вам спасибо!