如何使 ReactPlayer 按高度和宽度缩放

Tay*_*tin 4 css iframe reactjs

我正在将 reactplayer 用于使用 iframe 的 youtube 视频。我正在尝试将视频缩放到我的 div 并且我希望它具有响应性。

我在 ReactPlayer 上放了一个widthheightat 100%,我有一个包装 div,我在上面放了高度和宽度,但是 reactplayer 不适合这个 div。无论我如何调整屏幕大小,它都停留在 150px 的高度。

<div className="video-wrapper>
  <ReactPlayer
            width="100%"
            height="100%"
            url="https://youtu.be/BGhqlJnFIXU"
            controls
            muted
            config={{
              youtube: {
                playerVars: { showinfo: 1 }
              }
            }}
          />
</div>
Run Code Online (Sandbox Code Playgroud)

.css

.video-wrapper {
 height: 100%;
 width: 100%;
 min-height: 225px;
}
Run Code Online (Sandbox Code Playgroud)

小智 13

为了强制反应播放器完全响应,我做了以下操作:

CSS

.player-wrapper {
  position: relative;
  padding-top: 56.25%; /* 720 / 1280 = 0.5625 */
}

.react-player {
  position: absolute;
  top: 0;
  left: 0;
}
Run Code Online (Sandbox Code Playgroud)

JSX

import React from "react";
import ReactPlayer from "react-player";
import "./Player.css";

const Player = () => (
  <div className="player-wrapper">
    <ReactPlayer
      url="https://youtu.be/3eLrINg3O2Q"
      className="react-player"
      playing
      width="100%"
      height="100%"
      controls={false}
    />
  </div>
);

export default Player;
Run Code Online (Sandbox Code Playgroud)


小智 8

这可以通过进一步扩展您的 CSS 轻松实现。由于大多数视频都是以 16:9 拍摄的,因此遵循Chris Coyier 的本指南将使该过程轻松实现。

由于您使用的是 React-Player,我正在处理位于他们演示页面上的内容。

.player-wrapper {
  width: auto; // Reset width
  height: auto; // Reset height
}
.react-player {
  padding-top: 56.25%; // Percentage ratio for 16:9
  position: relative; // Set to relative
}

.react-player > div {
  position: absolute; // Scaling will occur since parent is relative now
}
Run Code Online (Sandbox Code Playgroud)

为什么有效?

TL;DR-百分比填充基于宽度。通过将元素的高度设置为 0,我们可以利用 'padding-top' 的百分比来完美地缩放内容。

生成 16:9 的百分比

(9 / 16) * 100 = 56.25

  • 工作完美,但我还必须将“top: 0;”添加到我的案例的“.react-player &gt; div”选择器中。 (4认同)

小智 5

使其响应的最简单方法是将宽度添加为 100%

<ReactPlayer
  controls
  pip
  width="100%"
  url={_post.videolink}
 /> 
Run Code Online (Sandbox Code Playgroud)