Как вставить разрыв строки в ::before элемента с помощью CSS и attr()

Мой вопрос похож на этот при переполнении стека. Но есть разница. Я хочу иметь разрыв строки в функции «attr()» в «содержимом» псевдоэлемента «::before». Мой код выглядит примерно так:

<!doctype html>
<html lang = "en">
<head>
    <meta charset = "UTF-8">
    <meta name = "viewport"
          content = "width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv = "X-UA-Compatible" content = "ie=edge">
    <title>Document</title>
    <style>
        div > a {
            white-space: pre-wrap;
        }
        div > a::before {
            display: block;
            content: attr(title);
        }
    </style>
</head>
<body>
<div><a href = "#" title = "Facebook Ads \A Performance Grader Get  ready to improve your reach …">actual link</a></div>
</body>
</html>

Мне нужен разрыв строки в моем тексте в атрибуте «title» тега «a». Итак, согласно этому вопросу, я использовал \A в своем атрибуте «заголовок». Но это не работает! В этом сценарии разрыва строки не происходит. Я хочу знать, почему? и как я могу использовать «разрыв строки» (создание новой строки) в своем тексте, когда я использую функцию «attr()» в CSS? Если я просто использую реальный текст в своем свойстве «content» в CSS, как в приведенном ниже коде:

div > a::before {
            display: block;
            
            content: "Facebook Ads \A Performance Grader Get  ready to improve your reach …";
        }

Он работает нормально. Но при использовании «attr()» он не работает!

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
0
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Внутри HTML вам нужно использовать объект HTML &#10; (или аналогичный).

div > a {
  white-space: pre-wrap;
}

div > a::before {
  display: block;
  content: attr(title);
}
<div><a href = "#" title = "Facebook Ads &#10; Performance Grader Get  ready to improve your reach …">actual link</a></div>

Афииф Большое спасибо. Есть ли способ удалить связанный текст из ::before? Я имею в виду, что связана только «фактическая ссылка», а не «Facebook…».

hamid-davodi 06.07.2024 12:31

@hamid-davodi добавьте pointer-events: none;float: left;width: 100%; к псевдоэлементу (но это очень хакерски и не рекомендуется)

Temani Afif 06.07.2024 12:34

Вы также можете использовать альтернативное написание &NewLine;.

zer00ne 07.07.2024 10:41

@zer00ne, большое спасибо. Это тоже работает для меня.

hamid-davodi 07.07.2024 13:21

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