vue3对视频进行分屏操作

全屏在前面已经做过了,现在就是遗留下来了分屏的操作,我需要做的是多视频功能进行分屏

这段代码可以和前面的分屏操作直接结合使用

<template>
    <div>
        <div class="head">
            <div>
                <el-button :type="state.classtype1" @click="selecttype('classtype1', 1, 24)">单屏</el-button>
                <el-button :type="state.classtype2" @click="selecttype('classtype2', 4, 12)">四分屏</el-button>
                <el-button :type="state.classtype3" @click="selecttype('classtype3', 9, 8)">九分屏</el-button>
                <el-button :type="state.classtype4" @click="selecttype('classtype4', 16, 6)">十六分屏</el-button>
                <el-button :type="state.classtype5" @click="selecttype('classtype5', 36, 4)">三十二分屏</el-button>
            </div>
        </div>

        <div class="main">
            <div class="conter" ref="box">
                <el-row :gutter="10">
                    <el-col v-for="(n, index) in state.fornum" :key="index" :xs="24" :sm="24" :md="state.clonum"
                        :lg="state.clonum" :xl="state.clonum" :class="state.videoclass">
                        <div class="player-wrapper" element-loading-text="加载中..." element-loading-background="#000">
                            <div class="video-wrapper" :style="state.videoclass" :id="`videoid${n}`">
                                <div class="video-inner live hide-waiting"
                                    style="position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px;">
                                    <div class="alt">
                                        <div class="talbetop">
                                            <table>
                                                <tr>
                                                    <td>
                                                        <video style="width: 100%; height:100%;"
                                                            src="https://haokan.baidu.com/v?pd=wisenatural&vid=21794045913693680" id="video" muted playsinline controls></video>
                                                    </td>
                                                </tr>
                                            </table>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </el-col>
                </el-row>
            </div>
        </div>
    </div>
</template>

<script setup>
    import { reactive } from 'vue'

    const state = reactive({
        fullscreen: false,
        fornum: 4,
        clonum: 12,
        videoclass: "padding-bottom: 50%; position: relative; margin: 0px auto;",
        classtype1: "",
        classtype2: "primary",
        classtype3: "",
        classtype4: "",
        classtype5: "",
        items: [false, false, false, false],
    });
    function selecttype(item, fnum, clo) {
        state.items = [];
        for (let i = 0; i < fnum; i++) {
            state.items[i] = false;
        }
        state.fornum = fnum;
        state.clonum = clo;
       if (item === "classtype1") {
            state.classtype1 = "primary";
            state.classtype2 = "";
            state.classtype3 = "";
            state.classtype4 = "";
            state.classtype5 = "";
        } else if (item === "classtype2") {
            state.classtype1 = "";
            state.classtype2 = "primary";
            state.classtype3 = "";
            state.classtype4 = "";
            state.classtype5 = "";
        } else if (item === "classtype3") {
            state.classtype1 = "";
            state.classtype2 = "";
            state.classtype3 = "primary";
            state.classtype4 = "";
            state.classtype5 = "";
        } else if (item === "classtype4") {
            state.classtype1 = "";
            state.classtype2 = "";
            state.classtype3 = "";
            state.classtype4 = "primary";
            state.classtype5 = "";
        } else if (item === "classtype5") {
            state.classtype1 = "";
            state.classtype2 = "";
            state.classtype3 = "";
            state.classtype4 = "";
            state.classtype5 = "primary";
        }
    }
</script>

<style>
    .main {
        padding: 10px;
        width: auto;
        height: 100%;
    }

    html,
    body {
        height: 100%;
        margin: 0;
        overflow-x: hidden;
    }

    .video-wrapper {
        position: relative;
        top: 0px;
        bottom: 0px;
        left: 0px;
        right: 0px;
    }

    .alt {
        position: absolute;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        background: #e8c6c6;
        color: #fff;
        text-align: center;
    }

    .alt table {
        width: 100%;
        height: 100%;
    }

    .talbetop {
        width: 100%;
        height: 100%;
        position: relative;
    }

    .selectchannel {
        position: absolute;
        right: 5px;
        top: 5px;
    }

    .video-close {
        position: absolute;
        top: 5px;
        right: 5px;
        color: #fff;
        font-size: 12px;
        background-color: hsla(0, 0%, 50%, .5);
        padding: 2px 5px;
        cursor: pointer;
        border-radius: 2px;
        max-width: 120px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }

    .table-c table {
        border-right: 2px solid #fff;
        border-bottom: 2px solid #fff;
    }

    .table-c table td {
        border-left: 2px solid #fff;
        border-top: 2px solid #fff;
    }

    .player-wrapper {
        padding-bottom: 5px;
    }
        :deep(.el-button+.el-button ){
        margin-left: 0;
    }
</style>

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值