Я не уверен, что это лучший подход. Я пытаюсь сделать SVG, который имеет детали, которые масштабируются и детали, которые исправлены. Это выглядит так:
Когда веб-страница загружается, я не знаю, какой будет высота контейнера для нее, но я знаю ширину. Я хочу, чтобы соединительные линии масштабировались в зависимости от высоты, но оставьте поле с плюсом по центру так:
Я поиграл с настройками линии для x1, y1 и т. Д., Но я не могу придумать, как это сделать, не прибегая к javascript. Разве SVG не лучший вариант здесь? Вот что у меня есть:
<svg class="s2">
<line x1="50%" y1="0" x2="50%" y2="10%" style="stroke:rgba(255,0,0,.9);stroke-width:1px;"></line> <!-- top joining line -->
<g id="square" x="50%" y="50%" width="16px" height="16px">
<line x1="5" y1="8" x2="11" y2="8" style="stroke:rgba(255,0,0,.9);stroke-width:1px;"></line> <!-- plus horizontal line -->
<line x1="8" y1="5" x2="8" y2="11" style="stroke:rgba(255,0,0,.9);stroke-width:1px;"></line> <!-- plus vertical line -->
<rect x="4" y="4" width="8" height="8" style="fill:transparent;stroke:rgba(0,0,0,.5);"></rect>
</g>
<line x1="50%" y1="90%" x2="50%" y2="100%" style="stroke:rgba(255,0,0,.9);stroke-width:1px;"></line> <!-- bottom joining line -->
<line x1="90%" y1="50%" x2="100%" y2="50%" style="stroke:rgba(255,0,0,.9);stroke-width:1px;"></line> <!-- right joining line -->
</svg>
Будет ли JavaScript здесь единственным вариантом? Я пытался использовать такие значения, как
calc(50% - 5px)
для позиционирования линии, но похоже, что она не поддерживается. Если бы это было так, это бы решило проблему.