Как найти правильные значения ширины, высоты и viewBox с помощью реакции-native-svgCSS

Разбираемся в CSS
Ответить Пред. темаСлед. тема
Anonymous
 Как найти правильные значения ширины, высоты и viewBox с помощью реакции-native-svg

Сообщение Anonymous »

Я пытаюсь сделать что-то, что кажется простым, но пытаюсь уже несколько часов и не могу найти решение.

У меня есть SVG, который должен быть поверх экрана. От дизайнера пришли такие размеры:
В React Native это будет внутри контейнера, а SVG должен занять всю ширину экрана, что я и делаю. взято с:

Код: Выделить всё

Dimensions.get("window").width
Моя проблема в том, что я не нашел способа масштабировать SVG, чтобы он занимал 100% ширины экрана, выяснив правильную высоту (или способ ее получения). устанавливается автоматически) и сохраняет соотношение сторон. Я пробовал около миллиона вещей, в том числе экспериментировал со стилем aspectRatio контейнера и его высотой (или вообще не устанавливал высоту). . Всякий раз, когда я находил какие-то «пропорции», которые работали, я пробовал использовать другое устройство с другой шириной экрана, и это выглядело совсем не очень хорошо (обрезано, меньше ширины экрана и т. д.).

Мне кажется, что свойство preserveAspectRatio в SVG (react-native-svg) каким-то образом конфликтует с aspectRatio стиль. И я совершенно запутался с preserveAspectRatio, я не нашел способа масштабировать его без обрезки.

У кого-нибудь есть идея, как этого добиться?

Это мой окончательный код, который возвращает компонент HeatMap, показывающий SVG, но, хотя он имеет правильную высоту, часть SVG отсутствует экрана справа (выглядит обрезанным, потому что он слишком широкий):

Код: Выделить всё

const windowWidth = Dimensions.get("window").width;

const getSVGRootProps = ({ width, height }) => ({
width: "100%",
height: "100%",
viewBox: `0 0 ${width} ${height}`,
preserveAspectRatio: "xMinYMin meet",
});

const FieldShape = () => {
const width = 354; // Original width
const height = 190; // Original height
const aspectRatio = width / height;
// adjusted height =  * original height / original width
const calculatedHeight = (windowWidth * height) / width;
const fieldStyles = {
width: windowWidth,
height: calculatedHeight,
aspectRatio,
};

return (


...


);
};

const HeatMap = () => {
return ;
};
Это результат:

Изображение


Подробнее здесь: https://stackoverflow.com/questions/616 ... native-svg
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как найти правильные значения ширины, высоты и viewBox с помощью реакции-native-svg
    Anonymous » » в форуме CSS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Почему фильтры SVG не учитывают положение viewBox SVG, хотя они учитывают его размер?
    Anonymous » » в форуме CSS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Невозможно записывать голос и преобразовывать его в речь с помощью реакции-native-tab-view и реакции-родного голоса/голо
    Anonymous » » в форуме Android
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Масштабирование SVG в HTML Viewbox
    Anonymous » » в форуме Html
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Масштабирование SVG в HTML Viewbox
    Anonymous » » в форуме CSS
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «CSS»