rotate 全屏 进度50%

This commit is contained in:
cxc
2022-06-06 17:32:42 +08:00
parent b4deb0e053
commit 03a0dcf84b
12 changed files with 1230 additions and 180 deletions

View File

@ -2,17 +2,33 @@
<div id="app-container" ref="appContainerRef">
<!-- zoom 会议组件 -->
<div id="meeting-chat-row">
<div
id="meeting-container"
ref="meetingContainerRef"
:class="{ fullscreen: isFullScreen }"
>
<div class="fullscreen-wrap" ref="fullscreenWrapRef">
<div
id="video-element"
:class="`layout-template-${templateId}`"
ref="videoElementRef"
></div>
<el-button :icon="FullScreen" circle @click="setFullScreen"></el-button>
id="meeting-container"
ref="meetingContainerRef"
:class="{
fullscreen: isFullScreen && !isVerticalFullScreen,
verticalFullScreen: isVerticalFullScreen,
}"
>
<div
id="video-element"
:class="`layout-template-${templateId}`"
ref="videoElementRef"
></div>
<el-button
v-if="!isFullScreen"
:icon="FullScreen"
circle
@click="setFullScreen"
></el-button>
<el-button
v-else
:icon="CloseBold"
circle
@click="quitFullScreen"
></el-button>
</div>
</div>
<div id="right-chat">
<Chat
@ -64,6 +80,62 @@
</span>
</template>
</el-dialog>
<el-dialog
custom-class="check-media"
v-model="showCheckMediaVideo"
:close-on-click-modal="false"
title="摄像头和麦克风"
:fullscreen="screenWidth < 900"
width="60%"
>
<el-alert
v-if="isVideoAvailable === undefined || isAudioAvailable === undefined"
>检测中。</el-alert
>
<el-alert
v-else-if="isVideoAvailable === true && isAudioAvailable === true"
type="success"
>摄像头工作正常,麦克风工作正常。</el-alert
>
<el-alert
v-else-if="isVideoAvailable === true && isAudioAvailable === false"
type="warning"
>摄像头工作正常,麦克风无法正常工作。</el-alert
>
<el-alert
v-else-if="isVideoAvailable === false && isAudioAvailable === true"
type="warning"
>摄像头无法正常工作,麦克风工作正常。</el-alert
>
<el-alert v-else type="error"
>摄像头无法正常工作,麦克风无法正常工作。</el-alert
>
<!-- <div id="row"> -->
<div id="check-media-wrap" ref="checkMediaWrapRef">
<video id="check-media-video" ref="checkMediaVideoRef"></video>
<!-- <el-icon class="microphone-icon" :size="50"> -->
<Microphone
v-if="isAudioAvailable === undefined"
class="microphone-loading"
/>
<Microphone
v-else-if="isAudioAvailable === true"
class="microphone-on"
/>
<Mute v-else class="microphone-off" />
<!-- </el-icon> -->
</div>
<!-- </div> -->
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="showCheckMediaVideo = false"
>关闭</el-button
>
</span>
</template>
</el-dialog>
<questions
mode="1"
@stage="getStageExamAnswer"
@ -79,6 +151,15 @@
:showDialog="showQuestionnaireDialog"
@close="showQuestionnaireDialog = $event"
></questions>
<el-dialog v-model="showHorizontalScreen" fullscreen :show-close="false">
<el-result icon="warning" title="无法全屏" sub-title="请先将手机横过来">
<template #icon>
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-hengping"></use>
</svg>
</template>
</el-result>
</el-dialog>
</div>
</template>
@ -100,7 +181,12 @@ import { uniqueId } from "lodash";
import ZoomMtgEmbedded from "@zoomus/websdk/embedded";
import ReconnectingWebSocket from "reconnecting-websocket";
import { ElMessage, ElMessageBox } from "element-plus";
import { FullScreen } from "@element-plus/icons-vue";
import {
FullScreen,
CloseBold,
Microphone,
Mute,
} from "@element-plus/icons-vue";
import { signMeeting, generateSignature } from "@/api/meeting";
import Chat from "@/components/chat";
import questions from "@/components/questions";
@ -198,7 +284,7 @@ const startMeeting = async () => {
console.log(meetingConfig.client.getAttendeeslist());
document.querySelector("#suspension-view-tab-thumbnail-gallery").click();
// 自动点击允许共享屏幕
// 自动点击允许共享屏幕 //TODO:自动点击按钮
if (route.name === "Host") {
const safeButton = document.querySelector('button[title="安全"]');
if (safeButton) {
@ -216,59 +302,63 @@ const startMeeting = async () => {
isMeetingLoading.value = false;
}
};
const setSize = () => {
meetingWidth.value = meetingContainerRef.value.offsetWidth * 0.9;
meetingHeight.value = (meetingWidth.value * 9) / 16;
videoElementRef.value.style.width = `${meetingWidth.value}px`;
videoElementRef.value.style.height = `${meetingHeight.value + 42}px`;
document.querySelector(
"#video-element> div> .zmwebsdk-MuiPaper-root> .zmwebsdk-MuiPaper-root:nth-child(1)"
).style.width = `${meetingWidth.value}px`;
document
.querySelectorAll(
'div[id*="suspension-view-tabpanel"] > .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root'
)
.forEach((el) => {
el.style.height = `${meetingHeight.value}px`;
});
};
window.client = meetingConfig.client;
window.startMeeting = startMeeting;
// 使摄像头窗口显示在右上角当切换布局或resize、横屏时执行
const makeVideoTop = () => {
const screenShareEl = document.querySelector(
'div[id*="suspension-view-tabpanel"]>div.zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root>div[class*="inSharing"]>div'
);
if (screenShareEl) console.log(screenShareEl.offsetTop);
};
// 根据id设置布局
// const setLayout = (templateId) => {
// videoElementRef.value.className = `layout-template-${templateId}`;
// if (templateId === "1") {
// } else if (templateId === "2") {
// } else if (templateId === "3") {
// }
// };
// const setLayout = (templateId) => {
// console.log(templateId);
// const videoScreenWrapEl = document.querySelectorAll(
// ".zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root"
// )[2]; // 包含视频和课件的容器
// videoScreenWrapEl.style.flexDirection = "";
// const videoWrapEl = videoScreenWrapEl.lastChild;
// if (!inSharing.value) return;
// const screenWrapEl = document.querySelector(
// `div[class*="zmwebsdk-makeStyles-inSharing"]`
// );
// if (templateId === "1") {
// // 课件|视频 对半分
// videoWrapEl.style.width = `${meetingWidth.value / 2 - 2}px`;
// } else if (templateId === "2") {
// // 视频|课件 对半分
// videoWrapEl.style.width = `${meetingWidth.value / 2 - 2}px`;
// videoScreenWrapEl.style.flexDirection = "row-reverse";
// } else if (templateId === "3") {
// // 课件|视频 左4/5 | 右边1/5
// videoWrapEl.style.width = `${(meetingWidth.value - 4) / 5}px`;
// } else if (templateId === "4") {
// // 视频|课件 左1/4 | 右边3/4
// videoWrapEl.style.width = `${(meetingWidth.value - 4) / 5}px`;
// videoScreenWrapEl.style.flexDirection = "row-reverse";
// } else if (templateId === "5") {
// // 只显示课件
// videoWrapEl.style.display = `none`;
// } else if (templateId === "6") {
// // 只显示视频
// screenWrapEl.style.display = "none";
// videoWrapEl.style.width = `${meetingWidth.value - 4}px`;
// }
// };
const checkMediaVideoRef = ref(null);
const checkMediaWrapRef = ref(null);
const showCheckMediaVideo = ref(true);
const isVideoAvailable = ref(undefined);
const isAudioAvailable = ref(undefined);
onMounted(() => {
nextTick(() => {
const videoWidth = checkMediaWrapRef.value.offsetWidth;
const videoHeight = checkMediaWrapRef.value.offsetHeight;
console.log(checkMediaVideoRef.value);
navigator.mediaDevices
.getUserMedia({ video: { width: videoWidth, height: videoHeight } })
.then((stream) => {
checkMediaVideoRef.value.srcObject = stream;
checkMediaVideoRef.value.play();
isVideoAvailable.value = true;
})
.catch((err) => {
console.log(err);
isVideoAvailable.value = false;
});
});
navigator.mediaDevices
.getUserMedia({ audio: true })
.then((stream) => {
console.log(stream);
isAudioAvailable.value = true;
})
.catch((err) => {
console.log(err);
isAudioAvailable.value = false;
});
});
// 设置文本标签
const setTextLabel = () => {
@ -361,11 +451,15 @@ setInterval(() => {
}
// ------
// TODO:
// 检测是否存在"同意被设为嘉宾按钮",存在则自动点击
const isSetAsGuest = document.querySelector(
".zmwebsdk-MuiButtonBase-root.zmwebsdk-MuiButton-root.zmwebsdk-MuiButton-contained.zmwebsdk-MuiButton-containedPrimary.zmwebsdk-MuiButton-containedSizeSmall.zmwebsdk-MuiButton-sizeSmall.zmwebsdk-MuiButton-disableElevation"
);
if (isSetAsGuest) {
const setAsGuestLabel = document.querySelector(
".zmwebsdk-MuiButtonBase-root.zmwebsdk-MuiButton-root.zmwebsdk-MuiButton-contained.zmwebsdk-MuiButton-containedPrimary.zmwebsdk-MuiButton-containedSizeSmall.zmwebsdk-MuiButton-sizeSmall.zmwebsdk-MuiButton-disableElevation>span"
);
if (isSetAsGuest && setAsGuestLabel.innerHTML === "以嘉宾身份加入") {
isSetAsGuest.click();
}
// -------
@ -376,15 +470,19 @@ setInterval(() => {
.join("$");
// 检测共享屏幕canvas距离父元素顶部距离
// const shareScreenWrapEl =
const shareScreenCanvasEl = document.querySelector(
'div[id*="suspension-view-tabpanel"]>.zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root>div[class*="inSharing"]>div:first-child'
);
// console.log(shareScreenCanvasEl);
if (shareScreenCanvasEl) {
document.querySelector(
`div[id*="suspension-view-tabpanel"] > .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root > div[class*="inSharing"] + div`
).style.top = `${shareScreenCanvasEl.offsetTop}px`;
if (templateId.value == 3 || templateId.value == 4 || screen.width < 900) {
document.querySelector(
`div[id*="suspension-view-tabpanel"] > .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root > div[class*="inSharing"] + div`
).style.top = `${shareScreenCanvasEl.offsetTop}px`;
} else {
document.querySelector(
`div[id*="suspension-view-tabpanel"] > .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root > div[class*="inSharing"] + div`
).style.top = "";
}
}
}, 500);
@ -402,6 +500,7 @@ watch(inSharing, (val) => {
}
});
// 监听参会人员videoOn状态变化自动切换到已开启摄像头的用户
watch(attendeeslist, (val) => {
console.log(val);
if (inSharing.value) {
@ -410,19 +509,63 @@ watch(attendeeslist, (val) => {
});
// 点击进入全屏模式
const fullscreenWrapRef = ref(null);
const isVerticalFullScreen = ref(false);
const showHorizontalScreen = ref(false);
const setFullScreen = async () => {
meetingContainerRef.value.requestFullscreen();
// if (window.orientation === 0) {
// // ElMessageBox.prompt("请将手机横过来");
// showHorizontalScreen.value = true;
// setTimeout(() => {
// showHorizontalScreen.value = false;
// }, 1500);
// return;
// }
document.querySelector(".fullscreen-wrap").requestFullscreen();
// meetingContainerRef.value.requestFullscreen();
isFullScreen.value = true;
document
.querySelectorAll(
"div[id*=suspension-view-tabpanel]>.zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root"
)
.forEach((el) => {
el.setAttribute(
`style`,
`height: ${screen.height - screen.width * 0.08}px !important`
);
});
nextTick(() => {
meetingWidth.value = meetingContainerRef.value.offsetWidth * 0.9;
meetingHeight.value = (meetingWidth.value * 9) / 16;
if (window.orientation === 0) {
// const height = innerHeight;
isVerticalFullScreen.value = true;
nextTick(() => {
videoElementRef.value.setAttribute(
"style",
`width: ${innerHeight * 0.9}px !important; height: ${
(innerHeight * 0.9 * 9) / 16
}px !important`
);
document
.querySelectorAll(
'div[id*="suspension-view-tabpanel"] > .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root'
)
.forEach((el) => {
el.setAttribute("style", `height: ${92}vw !important`);
});
});
}
videoElementRef.value.setAttribute(
`style`,
`width: ${meetingWidth.value}px !important; height: ${
screen.height - screen.width * 0.08
}px !important`
);
document
.querySelectorAll(
"div[id*=suspension-view-tabpanel]>.zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root"
)
.forEach((el) => {
el.setAttribute(
`style`,
`height: ${screen.height - screen.width * 0.08}px !important`
);
});
});
};
const quitFullScreen = () => {
document.exitFullscreen();
};
// 是否显示考试和问卷弹窗
const showExamDialog = ref(false);
@ -518,19 +661,19 @@ const initWebSocket = () => {
});
}
// 开始签到时
else if (data.type === "isStartSign" && route.name !== "Host") {
else if (data.type === "isStartSign" && route.name === "Meeting") {
showSignDialog.value = true;
}
// 签到结束时
else if (data.type === "isEndSign" && route.name !== "Host") {
else if (data.type === "isEndSign" && route.name === "Meeting") {
showSignDialog.value = false;
}
// 开始考试时
else if (data.type === "isStartExam" && route.name !== "Host") {
else if (data.type === "isStartExam" && route.name === "Meeting") {
showExamDialog.value = true;
}
// 开始问卷时
else if (data.type === "isStartQuestionnaire" && route.name !== "Host") {
else if (data.type === "isStartQuestionnaire" && route.name === "Meeting") {
showQuestionnaireDialog.value = true;
}
// 会议结束时
@ -590,7 +733,6 @@ const getStageQuestionnaireAnswer = (val) => {
};
const isFullScreen = ref(false);
onMounted(() => {
meetingContainerRef.value.style.background = ` url(${store.getters.templateBackgroundPic}) 0% 0% / cover no-repeat`;
meetingWidth.value = meetingContainerRef.value.offsetWidth * 0.9;
@ -598,12 +740,13 @@ onMounted(() => {
videoElementRef.value.style.width = `${meetingWidth.value}px`;
videoElementRef.value.style.height = `${meetingHeight.value + 42}px`;
// 当退出全屏模式
meetingContainerRef.value.addEventListener("fullscreenchange", () => {
// 当全屏状态改变
fullscreenWrapRef.value.addEventListener("fullscreenchange", () => {
if (document.fullscreenElement) {
isFullScreen.value = true;
} else {
isFullScreen.value = false;
isVerticalFullScreen.value = false;
nextTick(() => {
meetingWidth.value = meetingContainerRef.value.offsetWidth * 0.9;
meetingHeight.value = (meetingWidth.value * 9) / 16;
@ -614,6 +757,7 @@ onMounted(() => {
"div[id*=suspension-view-tabpanel]>.zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root"
)
.forEach((el) => {
console.log(`${meetingHeight.value}px`);
el.style.height = `${meetingHeight.value}px`;
});
});
@ -622,15 +766,26 @@ onMounted(() => {
setTextLabel();
startMeeting();
});
window.addEventListener(
"resize",
_.throttle(() => {
meetingWidth.value = meetingContainerRef.value.offsetWidth * 0.9;
meetingHeight.value = (meetingWidth.value * 9) / 16;
videoElementRef.value.style.width = `${meetingWidth.value}px`;
videoElementRef.value.style.height = `${meetingHeight.value + 42}px`;
}, 500)
);
window.addEventListener("resize", (e) => {
console.log(e);
meetingWidth.value = meetingContainerRef.value.offsetWidth * 0.9;
meetingHeight.value = (meetingWidth.value * 9) / 16;
videoElementRef.value.style.width = `${meetingWidth.value}px`;
videoElementRef.value.style.height = `${meetingHeight.value + 42}px`;
document
.querySelectorAll(
"div[id*=suspension-view-tabpanel]>.zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root"
)
.forEach((el) => {
console.log(`${meetingHeight.value}px`);
el.style.height = `${meetingHeight.value}px`;
});
});
window.addEventListener("orientationchange", function () {
console.log(
"the orientation of the device is now " + screen.orientation.angle
);
});
window.getCurrentUser = meetingConfig.client.getCurrentUser;
window.getAttendeeslist = meetingConfig.client.getAttendeeslist;
window.getCurrentMeetingInfo = meetingConfig.client.getCurrentMeetingInfo;
@ -645,13 +800,16 @@ onUnmounted(() => {
</script>
<style lang="scss" scoped>
// $videoELementWidth: 80vw * 0.9;
// $videoElementHeight: $videoELementWidth * 9 / 16 + 42px;
// $videoWidth: 470px;
// $videoHeight: $videoWidth * 9 / 16;
$videoELementWidth: 80vw * 0.9;
$videoElementHeight: $videoELementWidth * 9 / 16 + 1.5vw;
$meetingComponentWitdh: 80vw * 0.9;
$meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
:deep(#right-chat .chat-container .message-list) {
height: $meetingComponentWitdh * 9 / 16;
overflow-y: scroll;
}
#app-container {
#meeting-chat-row {
display: flex;
@ -664,8 +822,8 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
position: relative;
.el-button {
position: absolute;
right: 0;
bottom: 0;
right: 1vw;
bottom: 1vw;
}
:deep(.text-tag) {
position: absolute;
@ -691,6 +849,8 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
height: $meetingComponentWitdh * 0.5 * 9 / 16;
align-self: center;
}
}
.layout-template-2 {
@ -699,6 +859,8 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
height: $meetingComponentWitdh * 0.5 * 9 / 16;
align-self: center;
}
:deep(#suspension-view-tabpanel-ribbon
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root),
@ -754,6 +916,7 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
> .zmwebsdk-MuiPaper-root
> .zmwebsdk-MuiPaper-root:nth-child(2)) {
width: 270px;
// height: 1.5vw;
background: #ccc;
}
:deep(div[id*="suspension-view-tabpanel"]
@ -765,7 +928,44 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
background: transparent;
box-shadow: 0 0;
}
// 隐藏共享屏幕上方提示
:deep(div[id*="suspension-view-tabpanel"]
div[class*="inSharing"]
> .zmwebsdk-MuiBox-root) {
display: none;
}
:deep(.check-media) {
.el-dialog__body {
text-align: center;
#check-media-wrap {
display: inline-block;
margin: 1vw auto;
// text-align: center;
border-radius: 1vw;
overflow: hidden;
width: 36vw;
height: 24vw;
background-color: #000;
position: relative;
svg {
position: absolute;
left: 1vw;
bottom: 1vw;
width: 3vw;
height: 3vw;
}
.microphone-loading {
color: #fff;
}
.microphone-on {
color: springgreen;
}
.microphone-off {
color: indianred;
}
}
}
}
// 适配移动端 屏幕宽度小于 900px
@media screen and (max-width: 900px) {
$meetingComponentWitdh: 100vw * 0.9;
@ -782,19 +982,20 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
> .zmwebsdk-MuiPaper-root:nth-child(1)) {
width: $meetingComponentWitdh !important;
}
:deep(div[id="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root) {
height: calc(100vw * 0.9 * 9 / 16) !important;
}
// :deep(div[id*="suspension-view-tabpanel"]
// > .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root) {
// height: calc(100vw * 0.9 * 9 / 16) !important;
// }
.layout-template-1 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
height: $meetingComponentWitdh * 0.5 * 9 / 14;
align-self: center;
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 14.5;
position: relative;
align-self: initial;
}
}
.layout-template-2 {
@ -802,9 +1003,10 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
height: $meetingComponentWitdh * 0.5 * 9 / 14;
align-self: center;
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 14.5;
position: relative;
align-self: initial;
}
}
.layout-template-3 {
@ -813,7 +1015,7 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 14;
height: $meetingComponentWitdh * 0.2 * 9 / 14.5;
position: relative;
// align-self: center;
}
@ -824,74 +1026,128 @@ $meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 14;
height: $meetingComponentWitdh * 0.2 * 9 / 14.5;
position: relative;
// align-self: center;
}
}
}
// 全屏样式
#meeting-container.fullscreen {
$meetingComponentWitdh: 100vw * 0.9;
$meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
padding-top: calc(100vw * 0.08) !important;
width: 100vw !important;
.layout-template-1 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
}
}
.layout-template-2 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
}
}
.layout-template-3 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 16;
position: relative;
// align-self: center;
}
}
.layout-template-4 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 16;
position: relative;
// align-self: center;
}
}
:deep(#video-element
> div
> .zmwebsdk-MuiPaper-root
> .zmwebsdk-MuiPaper-root:nth-child(1)) {
width: calc(100vw * 0.9);
}
:deep(#video-element
> div
> .zmwebsdk-MuiPaper-root
> .zmwebsdk-MuiPaper-root:nth-child(2)) {
display: none;
}
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root) {
height: calc(100vw * 0.9 * 9 / 16);
}
:deep(.check-media) {
#check-media-wrap {
margin: 2vw auto !important;
width: 80vw !important;
height: 54vw !important;
svg {
width: 6vw !important;
height: 6vw !important;
}
}
}
}
// 全屏样式
.fullscreen-wrap {
width: 100%;
height: 100%;
#meeting-container.fullscreen {
$meetingComponentWitdh: 100vw * 0.9;
$meetingComponentHeight: $meetingComponentWitdh * 9 / 16;
padding-top: calc(100vw * 0.08) !important;
width: 100vw !important;
#video-element {
// width: calc(100vw * 0.9) !important;
// height: calc(100vw * 0.9 * 9 / 16 + 1.5vw) !important;
}
.layout-template-1 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
height: $meetingComponentWitdh * 0.5 * 9 / 16;
position: relative;
// align-self: initial;
}
}
.layout-template-2 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.5;
height: $meetingComponentWitdh * 0.5 * 9 / 16;
position: relative;
// align-self: initial;
}
}
.layout-template-3 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 16;
position: relative;
// align-self: center;
}
}
.layout-template-4 {
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root
> div[class*="inSharing"]
+ div) {
width: $meetingComponentWitdh * 0.2;
height: $meetingComponentWitdh * 0.2 * 9 / 16;
position: relative;
// align-self: center;
}
}
:deep(#video-element
> div
> .zmwebsdk-MuiPaper-root
> .zmwebsdk-MuiPaper-root:nth-child(1)) {
width: calc(100vw * 0.9);
}
:deep(#video-element
> div
> .zmwebsdk-MuiPaper-root
> .zmwebsdk-MuiPaper-root:nth-child(2)) {
display: none;
}
:deep(div[id*="suspension-view-tabpanel"]
> .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root) {
height: calc(100vw * 0.9 * 9 / 16) !important;
}
}
#meeting-container.verticalFullScreen {
position: absolute;
transform-origin: 0% 0%;
transform: rotate(90deg);
top: 0;
left: 100vw;
width: 100vh !important;
height: calc(92vw);
:deep(#video-element
> div
> .zmwebsdk-MuiPaper-root
> .zmwebsdk-MuiPaper-root:nth-child(1)) {
width: calc(100vh * 0.9) !important;
}
:deep(#video-element
> div
> .zmwebsdk-MuiPaper-root
> .zmwebsdk-MuiPaper-root:nth-child(2)) {
display: none;
}
// :deep(div[id*="suspension-view-tabpanel"]
// > .zmwebsdk-MuiBox-root.zmwebsdk-MuiBox-root) {
// height: calc(100vh * 0.9 * 9 / 16) !important;
// }
}
}
</style>