Как применить стили при наведении курсора только на ::первую строку элемента?

Я хочу сделать первую строку абзаца жирной только тогда, когда пользователь наводит курсор на первую строку абзаца. Я попробовал что-то вроде:

p::first-line:hover {
    font-weight: bold;
}

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

Это было бы :first-line, поскольку :first-child выбирает только фактические элементы, но я ПОКА не верю, что его можно наводить по мере необходимости!

Paulie_D 29.02.2024 19:37

@ user12137152: Извините, по какой-то причине я неправильно прочитал ::first-child, поскольку ::first-line, мой (удаленный) комментарий и ссылка были основаны на недоразумении.

David Thomas 01.03.2024 00:42

@DavidThomas, на самом деле это была моя ошибка, я ошибочно написал ::first-child. Я отредактировал вопрос. Теперь я отредактировал вопрос. Извините еще раз. :)

user12137152 01.03.2024 06:52
Приемы 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
3
107
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

То, как вы это пробовали, соответствует соответствующей спецификации CSS:

Например, поскольку псевдокласс :hover указывает, что он может применяться к любому псевдоэлементу, ::first-line:hover будет соответствовать при наведении курсора на первую строку.

Однако эта конкретная комбинация функций еще не реализована ни в одном браузере (например, Firefox v123 и Chromium v123). Не стесняйтесь протестировать этот фрагмент стека; когда это сработает, вы узнаете, что ваш браузер реализовал эту функцию:

p::first-line:hover {
    color: blue;
}
<p>Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>

В будущем браузеры могут поддерживать это, и этот ответ может быть обновлен в это время. А пока вам нужно будет использовать JavaScript для достижения этой функциональности.

Спасибо за ответ. Можете ли вы прикрепить несколько ссылок, которые конкретно указывают на то, что такие функции не реализованы в браузерах. Я имею в виду, можете ли вы предоставить некоторые другие источники, которые предполагают, что в этих браузерах нет другого способа реализовать вышеуказанные селекторы каким-либо другим способом, например, box-decoration-break реализован как -webkit-box-decoration-break в Chrome и Safari. Таким образом, они могли быть реализованы, но с другим именем свойства.

user12137152 01.03.2024 07:08

@user12137152 user12137152 Ну, я не могу доказать обратное, кроме как показать вам в демо-версии, что стиль, разработанный в спецификации, не работает в любом браузере, в котором вы его запустите. Я добавлю один в почта. В системах отслеживания ошибок Chrome или Firefox может быть ошибка; вы можете подать заявку на эту проблему и посмотреть, будет ли она закрыта как дубликат существующей ошибки или нет - это также способ обнаружить существующую информацию о ней, которая не работает, если она действительно существует.

TylerH 01.03.2024 15:05

Единственный способ, который я могу придумать в настоящее время с CSS, - это немного хакерский подход, поскольку он вводит в DOM поддельный элемент.

Этот фрагмент помещает пробел над первой строкой, и его наведение вызывает изменение стиля в соседнем элементе p.

span:has(+p) {
  position: absolute;
  width: 100%;
  height: 1lh;
  background-color: transparent;
  z-index: 1;
}

span:hover+p::first-line {
  font-weight: bold;
  position: relative;
  padding: 0;
}
<span></span>
<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
  in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit,
  sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
  eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

По крайней мере, во встроенном фрагменте стека это также меняет кернинг второй строки, когда кернинг первой строки изменяется для соответствия жирному стилю. В полноэкранном режиме дела обстоят еще хуже; кернинг всего абзаца смещается.

TylerH 01.03.2024 15:10

@TylerH Не уверен, что можно с этим поделать, если первая строка будет выделена жирным шрифтом - она ​​почти наверняка выйдет за пределы своих предыдущих границ. Есть мнения?

A Haworth 01.03.2024 18:46

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

TylerH 01.03.2024 18:49

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