Как скруглить фон текста только по краям строки с помощью CSS

    Стандартное свойство border-radius применяется ко всему блоку целиком, поэтому скруглить фон только в начале первой строки и в конце последней - нетривиальная задача. Однако современные CSS-техники позволяют добиться такого эффекта без использования фоновых изображений, сохраняя текст редактируемым.

    Проблема обычного border-radius

    Если применить border-radius к блочному элементу (display: block), скругление появится на всех четырёх углах прямоугольника. Для многострочного текста это означает, что фон будет скруглён не только в начале и конце текста, но и на пустых углах, что выглядит неестественно.

    Решение: inline-block + box-decoration-break

    Ключевой приём - сделать элемент строчно-блочным (display: inline-block), а затем использовать свойство box-decoration-break: clone. Это заставит браузер применять стили к каждому фрагменту текста (каждой строке) отдельно. В результате border-radius будет действовать только на углы каждой строки, а не всего абзаца.

    .text-background {
    display: inline-block;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
    background: #ffcc00;
    border-radius: 12px;
    padding: 4px 12px;
    }

    Этот метод работает во всех современных браузерах, включая Chrome, Firefox и Safari. Для старых версий Edge может потребоваться префикс -webkit-.

    Альтернативный способ: градиентная маска

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

    .text-mask {
    background: #ffcc00;
    -webkit-mask-image: radial-gradient(circle at 0% 50%, transparent 8px, black 8px),
    radial-gradient(circle at 100% 50%, transparent 8px, black 8px);
    -webkit-mask-composite: xor;
    mask-image: radial-gradient(circle at 0% 50%, transparent 8px, black 8px),
    radial-gradient(circle at 100% 50%, transparent 8px, black 8px);
    mask-composite: exclude;
    }

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

    Поддержка браузеров и ограничения

    Метод с box-decoration-break поддерживается во всех актуальных версиях Chrome (начиная с 54), Firefox (с 32), Safari (с 10). В Internet Explorer 11 этот способ не работает - там фон будет применён ко всему блоку целиком.

    Практический пример для вёрстки

    Если вы верстаете текст, который может переноситься на несколько строк, используйте первый метод. Он надёжен и прост. Для однострочного текста подойдёт обычный border-radius на строчном элементе.

    Часто задаваемые вопросы