Высота в пользовательском интерфейсе темы

У меня есть встроенный компонент theme-ui, и его высота не работает. В консоли отображается нормально, но отображается 100%;

<Embed src={url} sx={{width: '800px', height: '400px'}}/>

Встраивание находится внутри модального окна 100vw для 100vh

благодаря

1 ответ

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

Убедитесь, что вы вводите свой код /** @jsx jsx */ и после этого объявите jsx, например import { jsx } from "theme-ui";

И попробуйте использовать самую последнюю версию, в примере я использую 0.3.1 для theme-ui

ОБНОВИТЬ

Копнув глубже, я думаю, что необходимо создать свой собственный компонент, в котором вы можете определить iframe, потому что компонент Embed не позволяет напрямую изменять некоторые свойства css.

Theme-ui позволяет создавать iframe, используя компонент Box, устанавливая опору следующим образом:

<Box as="iframe" .../>

OwnEmbed.js

       /** @jsx jsx */
import { jsx, Box } from "theme-ui";

const OwnEmbed = ({
  src,
  frameBorder = 0,
  allowFullScreen = true,
  width = "100%",
  height = 0, /** <-- It's necessary set height from outside*/
  iFrameWidth = 560,
  iFrameHeight = 315,
  allow,
  ...props
}) => {
  return (
    <Box
      {...props}
      __css={{
        width: width,
        height: height,
        position: "relative",
        overflow: "hidden"
      }}
    >
      <Box
        as="iframe"
        src={src}
        width={iFrameWidth}
        height={iFrameHeight}
        frameBorder={frameBorder}
        allowFullScreen={allowFullScreen}
        allow={allow}
        __css={{
          position: "absolute",
          width: "100%",
          height: "100%",
          top: 0,
          bottom: 0,
          left: 0,
          border: 0
        }}
      />
    </Box>
  );
};

export default OwnEmbed;

Реализация такая же, как у компонента Embed

Main.js

       /** @jsx jsx */
import { jsx, Embed, Box, Flex } from "theme-ui";
import React from "react";
import OwnEmbed from "./OwnEmbed";

class Main extends React.Component {
  render() {
    return (
      <Box p={1} bg="red">
        <OwnEmbed
          src="https://www.youtube.com/embed/GNCd_ERZvZM"
          width="100px"
          height="100px"
        />
        <hr />
        <OwnEmbed
          src="https://www.youtube.com/embed/mQ055hHdxbE"
          width="200px"
          height="200px"
        />
        <hr />
        <OwnEmbed
          src="https://www.youtube.com/embed/7oVnHbHhxLo"
          width="400px"
          height="200px"
        />
      </Box>
    );
  }
}
export default Main;

Если вы выделите элемент в браузере, вы увидите правильный размер.

Взгляните на это: Изменить размер Вставить из theme-ui

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