Как создать внешнюю обводку вокруг текста?

Как можно создать внешнюю обводку текста, подобную той, что изображена на фото слева? Буду благодарен за любые методы, включая JavaScript, Canvas или SVG-текст. <br/> <br/>
  • 10 сентября 2024 г. 15:23
Ответы на вопрос 4
Создать внешнюю обводку вокруг текста можно несколькими способами, включая CSS, SVG и Canvas. Вот несколько примеров, как это сделать:

### 1. CSS (через тень текста)

Если вам нужно простое решение, можно использовать свойство `text-shadow`, чтобы создать эффект обводки:

```html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Обводка текста с помощью CSS</title>
    <style>
        .outlined-text {
            font-size: 48px;
            color: white; /* Цвет текста */
            text-shadow: 
                -1px -1px 0 black,
                1px -1px 0 black,
                -1px 1px 0 black,
                1px 1px 0 black; /* Цвет обводки */
        }
    </style>
</head>
<body>
    <h1 class="outlined-text">Обведенный текст</h1>
</body>
</html>
```

### 2. SVG

Еще один способ — использовать SVG для создания текста с обводкой:

```html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Обводка текста с помощью SVG</title>
</head>
<body>
    <svg width="400" height="100">
        <text x="10" y="40" font-family="Arial" font-size="40" fill="white" stroke="black" stroke-width="2">
            Обведенный текст
        </text>
    </svg>
</body>
</html>
```

### 3. Canvas

Создание текста с обводкой в HTML5 Canvas также возможно:

```html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Обводка текста с помощью Canvas</title>
</head>
<body>
    <canvas id="myCanvas" width="400" height="100"></canvas>
    <script>
        var canvas = document.getElementById('myCanvas');
        var ctx = canvas.getContext('2d');

        // Цвет и стиль обводки
        ctx.strokeStyle = 'black';
        ctx.lineWidth = 3;
        ctx.font = '40px Arial';
        ctx.strokeText('Обведенный текст', 10, 40);

        // Цвет текста
        ctx.fillStyle = 'white';
        ctx.fillText('Обведенный текст', 10, 40);
    </script>
</body>
</html>
```

Выберите любой из предложенных способов в зависимости от ваших нужд и предпочтений. Каждый из методов позволяет добиться интересного эффекта обводки вокруг текста.
вариант 1: ИМХО самый оптимальный (но криво работает с прозрачным текстом) 

вариант 2: доработка напильником ответа Как в шрифте pacifico сделать при бордере, чтобы не было линий при пересечении букв? , если нужно больше контроля над обводкой
а что если попробовать больше значение сделать? 

например
-webkit-text-stroke: 10px red;
Используйте SVG с тэгом text (только оптимизируйте, а не как я в примере) 
Похожие вопросы