SVG-события указателя и штрих-дашаррей

В следующем примере я рисую эллипс без заливки и штриховкой-дашарреем. pointer-events настроен на visibleStroke или stroke. Когда я наведу указатель мыши на обводку, круг внутри должен измениться на fill и stroke:

ellipse:hover ~ circle {
  fill: LightSkyBlue;
  stroke: DodgerBlue;
}

Определение из MDN:

visibleStroke:
SVG only. The element can only be the target of a mouse event when the visibility property is set to visible and when the mouse cursor is over the perimeter (i.e., stroke) of the element. The value of the stroke property does not affect event processing.

В следующем примере, когда я наводил курсор на черточки, все было так, как ожидалось. Однако когда я наведываю указатель мыши на пробелы, ничего не происходит. Более того: в Chrome необходимо компенсировать нечувствительные зазоры швов. Это ошибка или особенность?

figure {
  width: 200px;
  height: 230px;
  border: 1px solid #d9d9d9;
  margin:1em;
}
figure::before {
  content: attr(data-pe);
  visibility: visible;
  color: indigo;
  background: skyBlue;
  display: block;
  padding: 0.5em;
}
ellipse {
  fill: none;
  stroke: #d9d9d9;
  stroke-dasharray: 4 3;
  stroke-width: 2;
}
ellipse:hover ~ circle {
  fill: LightSkyBlue;
  stroke: DodgerBlue;
}
circle {
  fill: royalBlue;
  stroke: red;
  stroke-width: 2;
  pointer-events: none;
}
<figure data-pe = "visibleStroke">
    <svg viewBox = "-12 -12 24 24">
      <ellipse rx = "9" ry = "9" style = "pointer-events:visibleStroke;"></ellipse>
      <circle r = "5"></circle>
    </svg>
</figure>

Значение свойства stroke не влияет на обработку, ничего не говорит о значении свойства stroke-dasharray. Firefox работает как Chrome, поэтому, если уже есть совместимость с браузером, так оно и есть. Похоже, что в Firefox нет компенсации, так что, возможно, это ошибка Chrome.

Robert Longson 19.12.2018 12:30

Я не уверен, что это ошибка. Решить эту проблему можно, добавив прозрачный эллипс под пунктирным.

Nicolas Roehm 19.12.2018 12:54
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
2
420
0

Другие вопросы по теме