Как сделать выбранный текст отличным от того, что отображается - PullRequest
1 голос
/ 20 мая 2019

Мне нужно создать немного стилизованный текст, который не отображает определенный символ визуально, но содержит , содержащий символ для других целей.Например, пользовательский интерфейс может отображать что-то вроде <sup><sub>$</sub></sup>123<sup><sub>45</sub></sup>, но основной текст на самом деле $123.45.

  • Если вы выберите отображаемый текст и Ctrl + C , буфер обмена должен фактически содержать нижележащий текст.
  • Если вы выделите отображаемый текст и щелкните правой кнопкой мыши, контекстное меню должно иметь опцию вдоль строк Search Google for "<em>X</em>", где X - это основной текст (при условии, что браузер его поддерживает).
  • Как программы чтения с экрана, так и веб-сканеры должны «видеть» базовый текст.

Вот мое текущее решение:

body {
  font-family: sans-serif;
}

.price {
  line-height: 4.4rem;
  font-size: 4rem;
}

.cc, .cf {
  font-size: 0.6em;
  vertical-align: super;
  margin: 0 2px;
}

.cs {
  opacity: 0;
  margin: 0 0 0 -.28em;
}

.ci {
  font-size: 4.4rem;
}
<span class="price" aria-label="$123.45">
  <span class="cc">$</span><span class="ci">123</span><span class="cs">.</span><span class="cf">45</span>
</span>

Однако я не уверен, что наличие невидимого (opacity: 0) элемента действительно лучший способ сделать это - он чувствует себя немного закулисным ивозможно, некоторые умные сканеры тоже могут это увидеть.Кроме того, -.28em не является масштабируемым - это лучшее число, которое я могу найти, чтобы выглядеть хорошо, и мне пришлось бы настроить его для различных шрифтов или размеров шрифтов.

Я мог бы изменить .cs наdisplay: inline-block; width: 0, чтобы обойти проблему margin, но затем, если вы дважды щелкнете по 123, чтобы выбрать слово или трижды щелкните, чтобы выбрать блок, 45 не будет выбран.Поэтому сохранение .cs в строке кажется важным для обеспечения того, чтобы весь текст обрабатывался как один непрерывный фрагмент текста.

Поэтому мой вопрос заключается в том, как использовать HTML5 и CSS, каков семантически правильный способ иметь разный контентчто выбирается, чем то, что отображается?

1 Ответ

1 голос
/ 20 мая 2019

Размер шрифта 0 - это альтернатива, которую вы можете попробовать за период.

.cs {
 font-size: 0;
}

Информация будет сохранена в соответствии с вашими требованиями как для программы чтения с экрана, так и для буфера обмена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...