Исправление различий между ios и Chrome рендеринг SVG на MacOS - PullRequest
0 голосов
/ 21 июня 2020

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

Рассмотрим следующий код:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>StackOverflowExample</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"
        type="text/css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
        integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link href="https://fonts.googleapis.com/css?family=Muli" rel="stylesheet">
    <script src="https://code.iconify.design/1/1.0.6/iconify.min.js"></script>

</head>

<style>
text {
  font-family: 'Muli';
  font-weight: 600;
  fill: white;
}

svg {
  width: 100%;
}
a {
  color: white;
}
body {
  background-image: linear-gradient(180deg, rgba(35, 50, 64, 0.91) 61.95%, rgba(0, 0, 0, 0.51) 94.56%),
  /* height: 100vh; */
  width: 100vw;
  background-color: black;
  background-position: center;
  background-attachment: fixed;
  background-size: cover;
  background-repeat: no-repeat;
  font-family: 'Muli';
  color: #ffffff;

  min-height: 100vh;
  display: flex;
  align-items: center;
}
</style>

<body class="text-center">
    <div class="container">

        <div class="row">
            <div class="col-12">
                <svg viewBox="0 0 167 20">
                    <text x="0" y="15">This is a Test Of This T</text>
                </svg>
            </div>

        </div>

    </div>
</body>
</html>

Я добился того, чтобы это отлично работало в Chrome, но потом я был удивлен, что на ios последняя буква будет обрезана. См. Снимок экрана:

IOS: enter image description here

Chrome: введите описание изображения здесь

Есть идеи, как сделать так, чтобы это выглядело правильно в обеих ОС / браузерах? Предполагается, что будет сказано: «Это тест Этого Т». Если вы не видите, Chrome правильно изменяет размер независимо от того, какое разрешение экрана я поставил (меньше или больше, чем ios). На ios он всегда отключает его.

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

1 Ответ

0 голосов
/ 21 июня 2020

Работает ... на будущее, если кто-то еще столкнется с этим ...

Добавление textLength="167px", где 167 совпадает с размером вашего окна просмотра, устранило проблему. По-видимому, ios и MacOS по-разному отображали интервал между двумя системами, вызывая проблему. Определение textLength заставило его отображать более равномерно, устраняя проблему.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>StackOverflowExample</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"
        type="text/css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
        integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link href="https://fonts.googleapis.com/css?family=Muli" rel="stylesheet">
    <script src="https://code.iconify.design/1/1.0.6/iconify.min.js"></script>

</head>

<style>
text {
  font-family: 'Muli';
  font-weight: 600;
  fill: white;
}

svg {
  width: 100%;
}
a {
  color: white;
}
body {
  background-image: linear-gradient(180deg, rgba(35, 50, 64, 0.91) 61.95%, rgba(0, 0, 0, 0.51) 94.56%),
  /* height: 100vh; */
  width: 100vw;
  background-color: black;
  background-position: center;
  background-attachment: fixed;
  background-size: cover;
  background-repeat: no-repeat;
  font-family: 'Muli';
  color: #ffffff;

  min-height: 100vh;
  display: flex;
  align-items: center;
}
</style>

<body class="text-center">
    <div class="container">

        <div class="row">
            <div class="col-12">
                <svg viewBox="0 0 167 20">
                    <text x="0" y="15" textLength="167px">This is a Test Of This T</text>
                </svg>
            </div>

        </div>

    </div>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...