在反应项目

时间:2017-01-15 08:13:06

标签: javascript css reactjs video.js

我有一个宽度为100%且高度为50%的div。基本上它是一个16/8比率的div。现在我想在其中安装视频js播放器。呈现此16/8 div的组件就是这个(您可以在视频容器div中看到Player组件

return (
            <div className={c.container}>
                <div className='video-section'>
                    <div className='video-container'>
                        *<Player/>*
                    </div>

视频容器的CSS

.video-container
        width 100%
        background-color #000
        padding-bottom:  50%;

我有一个像这样的播放器组件

assign(props, {
        ref: 'video',
        controls: true,
        width: "960", height: "600"
    });


return (
    <div class="video-wrapper">
        <video {... props}>
            <source src={videoSrc} type="video/mp4"/>
        </video>
    </div>)

videoplayer.css

.video-wrapper {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    padding-top: 25px;
    height: 0;
}

.video-wrapper > video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

我在屏幕上看到这个 enter image description here 这是现在更新

编辑后的新更新

.video-container
            width 100%

并从视频标记中删除宽度和高度。

enter image description here

我想要的是这个

enter image description here

index.js

return (
            <div className={c.container}>
                <div className='video-section'>
                    <div className='video-container'>
                        <Player/>
                    </div>
                    <div className='video-title'> {name} </div>
                    <div className='process-list'>
                        {
                            PROCESS_LIST.map((x,i)=> (
                                <div
                                    className='process-item'
                                    key={i}
                                    onClick={this.toHome.bind(this)}> {x} </div>
                            ))
                        }
                    </div>
                </div>
                <div className='details-section'>
                    <VideoDetails/>
                </div>
            </div>

CSS

:local(.container)
    display flex
    flex 1

    .video-section
        margin 24px
        flex 1
    .details-section
        margin 24px
        width 33vw
        flex-shrink 0
        display flex
        flex-direction column
// border-left 1px rgba(#000, 0.12) solid

    .video-container
        width 80%

    .video-title
        font-size 2.4em
        margin-top 4vh
        margin-bottom 4vh

    .video-section .process-list
        display flex
        width 100%

        .process-item
            flex 1
            background-color #D7D7D7
            padding 18px 30px
            font-size 1em
            text-align center
            border-radius 8px
            margin 0 4px
            cursor pointer
            &:hover
                background-color darken(@background-color, 10%)



:local(.container)
    .video-details-container
        flex 1
        display flex
        flex-direction column

    .comments-section, .tabbed-section
        min-height 100px
        background-color #fff
        border 1px rgba(#000, 0.12) solid
        box-shadow 0 4px 24px 0 rgba(#000, 0.12)
    .comments-section
        height 180px

    .flex-vertical
        display flex
        flex-direction column
        height 100%

    .flex-fill
        flex 1

    .tabbed-section
        flex 1
        margin-bottom 20px
        display flex
        flex-direction column
        .tab-content
            flex 1

    .table-footer, .comments-footer
        clearfix()
        text-align right
        padding 10px
        border-top 1px rgba(#000, 0.2) solid

    #comments-input
        flex 1
        border none
        padding 20px
        outline none


    .flags-table 
        .red-box
            width 16px
            height 16px
            margin 3px 5px
            background-color red

新更新

enter image description here

1 个答案:

答案 0 :(得分:1)

你可以通过CSS使用这种方法。这是一个基本上常见的问题,这是他的共同解决方案。

http://jsfiddle.net/t1gsrsu5/3

只需在React wrapper divvideo element中渲染,css就会为您处理比率。

.playerDiv
   .video-wrapper
      video

根据.playerDiv.

的大小,视频的比例为16:9

&#13;
&#13;
.video-wrapper {
  position: relative;
  padding-bottom: 56.25%; /* 16:9 */
  padding-top: 25px;
  height: 0;
}

.video-wrapper > video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
&#13;
<div class="video-wrapper">
<video controls>
  <source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
  <source src="http://www.w3schools.com/html/mov_bbb.ogg" type="video/ogg">
  Your browser does not support HTML5 video.
</video>
</div>
&#13;
&#13;
&#13;