Разное

Выделить текст html: Тег HTML выделение текста, подсветка фона

09.08.2023

Курсивный текст: CSS и HTML подходы

В прошлой статье мы обсуждали спецификацию выделения текста жирным шрифтом. В текущей статье мы поговорим о том, как выделить текст курсивом HTML. Как и в случае с жирным текстом, курсивный текст можно сделать тремя способами:

  • Тег i HTML;
  • Тег em HTML;
  • CSS-свойство font-style.

Рассмотрим все три варианта, как можно сделать курсив в HTML, обсудим тонкости этого вопроса и какие способы удобнее и правильнее использовать в тех или иных ситуациях.

Курсивный текст: тег <i>

Тег i (italic), по аналогии с тегом b для жирного текста, служит для физического выделения курсивного текста (это означает, что изменяется только начертание текста). Применение тега i:

<i>Конструктор сайтов "Нубекс"</i>

Таким образом, нужная часть текста помещается между тегами <i></i>

.

Курсивный текст: тег <em>

Хотя тег i остается валидным, с точки зрения оптимизации сайта лучше использовать тег em для выделения логически важных участков текста. Это означает, что поисковые роботы учитывают важность текста, помещенного между тегами <em></em>:

Конструктор сайтов <em>"Нубекс"</em>

Результат:

Конструктор сайтов «Нубекс»

Но не стоит забывать, что текст, заключенный в теги i и em, хоть и отображаются практически одинаково (во всех современных браузерах), по своей сути являеются не совсем идентичными, как уже отмечалось выше. Поэтому использовать теги нужно по мере необходимости: тегом

em HTML обрамлять важные участки текста, а визуальное курсивное оформление применять с помощью тега i или CSS-стилей. Рассмотрим теперь использование CSS-стилей для курсивного выделения текста.

Курсивный текст силами CSS

Для установления стилей отображения шрифтов в CSS применяется свойство font-style, которое может принимать значения: oblique (наклонный текст), italic (курсив) и normal (обычный шрифт).

Стоит помнить о том, что

курсивный шрифт и наклонный, по своей сути, не являются одним и тем же. Курсив — это особый шрифт, который является аналогом рукописного текста, а наклонный формируется посредством наклона обычного шрифта вправо.

Применение атрибута font-style на практике:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Курсив с помощью CSS - "Нубекс"</title>
  <style>
   .nubex1 {
    font-style: italic;
   }
   .nubex2 {
    font-style: oblique;
   }
  </style>
 </head>
 <body>
  <center>
   <p>Наши сайты - это, действительно, <span>огромный шаг</span> в веб-разработке.
</p> <p>Мы делаем по-настоящему <span>качественные</span> сайты.</p> </center> </body> </html>

Но необходимо помнить, что некоторые браузеры текст со свойством font-style: oblique; могут интерпретировать не как наклонный текст, а как курсивный.

Внешний вид текста в html-документе

В данном уроке html мы познакомимся с тегами, отвечающими за

внешний вид текста, и научимся этими тегами пользоваться. И так, давайте попробуем в нашем файле html изменить цвет текста какого-нибудь абзаца из серого на зеленый.

За внешний вид текста в html-документе отвечает тег <font>. Это тег парный: значит в конце абзаца нам необходимо его закрыть — </font>.

Сам по себе тег <font> ничего не значит. Важность ему придают его атрибуты. Так что, если мы хотим придать тексту абзаца определенный цвет, мы должны прописать атрибут, отвечающий за цвет. Это атрибут color к которому необходимо добавить значение цвета.

Пример:

<p><font color=»green»>Текст абзаца стал зеленым</font></p>

Так же на примере видно, что тег <font> — вложенный тег, он прописан внутри тега <p>.

Кроме атрибута color, тег <font> имеет еще один важный атрибут — это атрибут face. Он отвечает за шрифт текста — какой шрифт будет использоваться в этом абзаце. Самые распространенные шрифты на сегодня — это Verdana, Tahoma. Рекомендуется пользоваться именно этими шрифтами, так как при использовании экзотических шрифтов, таковых может не оказаться на компьютере посетителя вашего сайта и страница у него будет отображаться стандартным шрифтом.

Пример:

<p><font color=»green» face=»Verdana»>Текст абзаца шрифтом Verdana</font></p>

 

Теперь давайте разберемся со способами выделения в тексте. Бывают моменты, когда необходимо выделить часть абзаца, одно слово или весь абзац. За выделение текста жирным шрифтом отвечает тег <strong>. Именно ту часть текста, которую мы хотим выделить жирным, помещаем внутрь тега <strong>.

Пример:

<p>Текст абзаца<strong>выделение в тексте жирным</strong>текст</p>

Если же мы хотим сделать выделение в тексте курсивом, применяем тег <em>.

Пример:

<p>Текст абзаца<em>выделение курсивом</em>текст</p>


При желании, текст можно выделить и жирным, и курсивом. В этом случае к тегу <strong> добавим еще тег <em>:

Пример:

 

<p>Текст <strong><em>выделение жирным курсивом </em></strong> текст</p>

 

В литературе вы можете встретить, что для выделения текста жирным применяется тег <b>. Это устаревший тег. Именно он использовался для выделения текста жирным в предыдущих версиях языка html.

Тоже самое и с курсивом: раньше, для выделения текста курсивом, использовался тег <i>.

Следующий урок — размещение изображения.

 

javascript — Как выделить текст HTML, не оборачивая его тегами?

Теперь есть несколько способов добиться этого эффекта без изменения структуры элементов DOM.

Однако все они имеют свои особенности.

Этот ответ основан на исследовании, которое я провел для моего расширения браузера с открытым исходным кодом Mark My Search (репозиторий), которое выделяет текст, который вы ищете на веб-страницах. Естественная деструктивность принятого подхода привела к тому, что я стал рассматривать множество альтернатив. Расширение будет использовать только один из приведенных ниже подходов, если не отмечен расширенный параметр «Использовать классическую подсветку», который не установлен по умолчанию из-за недостатков, которые я собираюсь описать.

Все мои подходы ниже включают только добавление дополнительного рисования в DOM, поэтому нет возможности стилизовать текст или иным образом изменить существующее содержимое. Тем не менее, это полностью неразрушающие операции, которые могут привести к повышению эффективности, что делает их конкурентоспособной альтернативой.

Важно. В этом ответе предполагается, что вы либо применяете стили непосредственно к элементам, либо используете таблицу стилей и сгенерированные атрибуты для их удаленного применения. Этот тип манипуляции с DOM по-прежнему необходим.

Подходы

  1. Монолитные

    Плюсы:

    • Просто, очевидно.
    • Управление всей подсветкой в ​​одном месте.
    • Эффективен для мутаций сразу многих элементов.

    Минусы:

    • Множество компромиссов. Если вы решите наложить выделение, непрозрачность выделения обязательно будет компромиссом между видимостью и затемнением текста. Если вы подложка, вы должны удалить все фонов, чтобы избежать скрытия бликов.
    • Неэффективно для мутаций нескольких элементов, так как все должно пересчитываться сразу (частично компенсируется кэшированием).
    • Неэффективно для реализаций, которые лучше всего работают в небольших разрозненных кадрах.
  2. Композитный

    • Чтобы выделить весь текст, просмотрите отдельные элементы самого низкого уровня, которые содержат части текстовых диапазонов.

    • Нарисуйте выделение на каждом из этих элементов.

      • Получить клиентские прямоугольники необходимых диапазонов текста.
      • Сравнить с клиентскими прямоугольниками конкретного содержащего элемента, получив соответствующие позиции нарисованного текста.*
      • Примените одну из реализаций ниже к содержащему элементу.

    Плюсы:

    • Устраняет проблему со скрытыми фонами элементов.
    • Сдвиги макета от
      до
      будут нести с собой подсветку, уменьшая потребность в бдительных обновлениях/пересчетах.
    • Гораздо более уместно использовать подложку, а не наложение, так что меньше компромиссов между затемнением текста и его выделением.
    • Эффективен для обновления нескольких элементов, поскольку выделение является модульным и разбивается на ряд отдельных областей.

    Минусы:

    • Сложный, нюансированный.
    • В некоторых реализациях один фон (обычно background-image ) по-прежнему потенциально теряется для каждого выделенного элемента.
    • Неэффективен для мутаций сразу многих элементов
    • Неэффективно для реализаций, которые лучше всего работают с большими, небольшими кадрами.
  3. Гибрид

    • Объедините подсветку ответственности в несколько элементов (например, элементы с отображением : блокируйте для обработки выделения для своего отображения : встроенные дочерних элементов).

Реализации

  1. Элементы

    • Создайте элементы подсветки соответствующих размеров.
    • Расположите их так, чтобы они закрывали нужные области.

    Плюсы:

    • Безупречная поддержка браузера.
    • Доступны бесконечные эффекты.

    Минусы:

    • Тяжеловесный, медленный, зависимый от DOM.
    • Добавляет много лишних элементов в основную структуру страницы, нарушает работу.
  2. СВГ

    • Процентное кодирование SVG, рисующее выложенные элементы подсветки.
    • Используйте url() на background-image элемента-предка.

    Плюсы:

    • Довольно быстро.
    • Совместимость с современными браузерами.

    Минусы:

    • CSP страниц (редко) блокируют использование url() , ожидая, что он извлечет удаленный контент.
  3. Холст

    • Процентное кодирование холста, рисующего выложенные элементы подсветки, или используйте элемент .
    • Используйте url() на background-image элемента-предка.

    Плюсы:

    • Совместимость с современными браузерами.

    Минусы:

    • Чрезвычайно медленный после нескольких холстов (особенно больших), по-видимому, из-за того, что каждый пиксель прорисовывается явно. Кажется, плохо оптимизирован, особенно для прозрачных пикселей.
    • Если используется url() : CSP страниц будут (редко) блокировать использование url() , ожидая, что он извлечет удаленный контент.
  4. Гудини

    • Зарегистрируйте ворклет Paint, который рисует блики на основе размера и положения переменных CSS, с любой дополнительной информацией, которую вы считаете необходимой (см. подробности об API Houdini Paint).
    • Используйте background-image: paint({worklet name}) по мере необходимости для элементов, чтобы отобразить выделение.
    • Определите переменные CSS (те, которые используются ворклетом) для одного и того же элемента — рассмотрите возможность использования для этого строкового объекта JSON, который будет распакован в ворклете, это удивительно эффективно.
  5. элемент()

    • Создайте элементы подсветки соответствующих размеров.
    • Абсолютно расположите их так, чтобы они покрывали нужные области, в выделенной части DOM (за кадром).
    • Использовать background: element({ID выделенного элемента}) в зависимости от элементов для отображения выделения.

    Плюсы:

    • Возможны бесконечные эффекты.
    • Гораздо более жизнеспособна, чем прямая альтернатива DOM.

    Минусы:

    • Специально для Firefox , для которого он является экспериментальным, но поддерживается годами.
    • Почему-то требует приложение фон вместо просто background-image , что приводит к большему переопределению фонов элементов. Кажется, это упущение.
    • Тяжеловесный, немного медленный, зависимый от DOM.

Динамическое обновление

Я не буду вдаваться в подробности, так как это очень специфично для ваших нужд. Однако, чтобы получить полностью актуальную подсветку при применении ко всей странице, мне понадобилось:

  • A MutationObserver наблюдение за поддеревом , childList и characterData для тела документа, чтобы обнаруживать все изменения, которые могут повлиять на сопоставление. Мой случай очень крайний, поэтому я должен соблюдать весь документ; Оптимизировал разными способами, в том числе отсеивая события, не требующие внимания.

  • A ResizeObserver наблюдение за выделенными элементами, просматриваемыми в данный момент, для пересчета выделения при изменении макета.

  • IntersectionObserver наблюдающий за всеми выделенными элементами, когда они появляются в окне просмотра, чтобы отрисовывать выделение и ResizeObserver только при необходимости. Это только мера оптимизации.

Информация

Вот PR, в котором я добился этого, используя несколько вышеперечисленных методов, которые можно было заменить. Я использовал высокоструктурированный подход, включающий кэширование DOM и другие оптимизации, такие как разбиение на несколько этапов, чтобы сделать его эффективным даже в случаях, когда вся средняя страница выделена разными цветами. Обзор представлен в PR.

Это один из самых крайних возможных случаев, поэтому у других должна быть возможность добиться хороших результатов без существенной потери производительности.

Я буду рад ответить на любые вопросы, касающиеся моей реализации или начала работы с этими технологиями.

Статьи

  • https://developer. mozilla.org/docs/Web/API/CSS_Painting_API
  • https://developer.chrome.com/blog/paintapi/
  • https://drafts.csswg.org/css-images-4/#element-notation

Примечания

*Из-за запутанного поведения браузера, когда дело доходит до ассоциации клиентских прямоугольников с фактической компоновкой+позицией, очень сложно убедиться, что алгоритм выделения на основе наложения будет правильно располагать поля выделения во всех случаях. Мне до сих пор не удалось правильно учесть эффект границы (который нарушает вычисления) или странные случаи потокового содержимого, но это технически возможно, используя только результаты Range.getClientRects() и Element.getClientRects() .

Текст выделения HTML | Как использовать тег HTML Mark

Поиск

Введение

Исторически авторы веб-страниц использовали свойства шрифтов и стили CSS для выделения разделов на веб-страницах. Не было единообразия в том, как веб-авторы занимались своим делом «выделения». Чувствуя потребность в обеспечении единообразия, спецификация HTMl5 ввела новый элемент разметки «метка» для маркировки текста на веб-страницах.

Спецификация HTML5 гласит…

Спецификация HTML5 определяет элемент «mark» как элемент, представляющий фрагмент текста в одном документе, отмеченный или выделенный для справочных целей. Элемент Mark используется для маркировки релевантного контента.

 

Источник: http://dev.w3.org/html5/markup/mark.html

 

Элемент «mark» может использоваться в одном или нескольких следующих сценариях

  • Выделение условий поиска в результатах поиска для предоставления контекста.
  • Различение нового контента, добавленного пользователем, путем его отображения по-разному.
  • Элемент «mark» — это тип элемента фразового содержимого. Любой элемент фразировки может быть родительским для элемента «метка», разрешены все глобальные атрибуты.

    В отличие от некоторых других фразовых элементов, элемент «mark» должен иметь как начальный, так и конечный теги.

     

    Элемент «Отметка» поддерживает следующие свойства отображения по умолчанию:

    1. Цвет фона — определяет цвет фона, по умолчанию желтый

    2. Цвет: определяет цвет текста, по умолчанию черный.

    знак {

    цвет фона: желтый;

    цвет: черный; }

    Практика

    Давайте посмотрим на исходный код простой HTML5-страницы, на которой показан элемент «отметить».

    Отметить образец элемента

         

              < header>

                     

    Отметить element sample

                    

    Демонстрация, показывающая элемент mark в HTML5

             

             

                     

                    

    HTML Goodies

             

       

    900 05

    Когда приведенный выше код отображается в браузере, понимающем HTML5 ( в последних версиях браузеров), вы заметите, что элемент «отметить» выделен желтым цветом.

    Если мы хотим настроить внешний вид элемента «метка» по умолчанию, мы можем определить его в разделе стилей на веб-странице.

     

    // Листинг 2

    Отметить образец элемента

    9 0004 <тело>

         

             

                  

    Образец элемента Mark

                  

    Демонстрация, показывающая элемент mark в HTML 5

             

             

                  

                         

    HTML Goodies

             

        

        

    В приведенном выше HTML-коде мы изменили цвет фона по умолчанию на красный, поэтому теперь, когда страница отображается, она выглядит, как показано ниже.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *