#javascript #css #reactjs #react-player
#javascript #css #reactjs #react-player
Вопрос:
Не удается изменить размер видео в проигрывателе React. Я меняю ширину на любое число, и видео остается неизменным. Я пытаюсь оптимизировать его для просмотра на компьютере, а затем добавить точки останова для изменения размера для экранов меньшего размера, таких как телефоны.
Ниже приведен файл, в котором я визуализирую видео с React-плеером внутри a, к которому я применяю желаемую высоту и ширину, которые я хотел бы использовать для своего видео с react-плеером.
import React, { useContext, useEffect, useState } from 'react'
import { makeStyles } from '@material-ui/core/styles'
import Modal from '@material-ui/core/Modal'
import { MovieContext } from './MovieContext'
import ReactPlayer from 'react-player'
import { getTrailer } from '../utils/movieDB'
// potential of adding controls
// import { Slider, Direction } from 'react-player-controls'
//slider to be implemented
//https://www.npmjs.com/package/react-player-controls#playericon-
const useStyles = makeStyles((theme) => ({
video: {
width: 'auto',
height: 'auto',
top: '25%',
right: '25%',
position: 'fixed',
[theme.breakpoints.down('xs')]: {},
},
}))
const styles = {
player: {
width: '300px',
},
}
export default function SimpleModal({ open }) {
const classes = useStyles(),
//receives movie from Home > DisplayCard > MovieContext
{ setOpenTrailer, movie, setMovie } = useContext(MovieContext),
[trailer, setTrailer] = useState(),
[key, setKey] = useState(),
[modalStyle] = useState()
useEffect(() => {
if (movie) {
getTrailer(movie).then((data) => {
setKey(data.videos.results[0].key)
setTrailer(data)
})
}
}, [movie])
const handleOpen = () => {
setOpenTrailer(true)
}
const handleClose = () => {
setOpenTrailer(false)
setMovie(undefined)
setTrailer(undefined)
setKey(undefined)
}
const renderVideo = (
<>
{key amp;amp; (
<div className={classes.video}>
<ReactPlayer style={styles.player} url={`https://www.youtube.com/watch?v=${key}`} />
</div>
)}
</>
)
return (
<div>
<Modal
open={open || false}
onClose={handleClose}
aria-labelledby="simple-modal-title"
aria-describedby="simple-modal-description"
>
{renderVideo}
</Modal>
</div>
)
}
Как правильно установить размеры для объекта react-Player?
Комментарии:
1. Пожалуйста, вставьте свой css
2. Как говорится в документации react-player, вы можете использовать параметры width и height для регулировки ширины и высоты проигрывателя.
3. Спасибо, я пытался использовать стили react для использования точек останова, но я просто использую media query.
Ответ №1:
Использование реквизитов ширины и высоты как таковых:
<ReactPlayer
width={“300px”}
url={`https://www.youtube.com/watch?v=${key}`} />
Ответ №2:
этот код взят из библиотеки react-Player. Это сделало мое видео отзывчивым
его из: https://github.com/cookpete/react-player
class ResponsivePlayer extends Component {
render () {
return (
<div className='player-wrapper'>
<ReactPlayer
className='react-player'
url='https://www.youtube.com/watch?v=ysz5S6PUM-U'
width='100%'
height='100%'
/>
</div>
)
}
}
—— CSS ——
.player-wrapper {
position: relative;
padding-top: 56.25% /* Player ratio: 100 / (1280 / 720) */
}
.react-player {
position: absolute;
top: 0;
left: 0;
}