element-call/src/video-grid/VideoTile.module.css

154 lines
2.6 KiB
CSS
Raw Normal View History

2022-04-07 14:22:36 -07:00
.videoTile {
position: absolute;
will-change: transform, width, height, opacity, box-shadow;
border-radius: 20px;
overflow: hidden;
cursor: pointer;
touch-action: none;
2022-05-31 10:43:05 -04:00
/* HACK: This has no visual effect due to the short duration, but allows the
JS to detect movement via the transform property for audio spatialization */
transition: transform 0.000000001s;
2022-04-07 14:22:36 -07:00
}
.videoTile * {
touch-action: none;
-moz-user-select: none;
-webkit-user-drag: none;
user-select: none;
}
.videoTile video {
width: 100%;
height: 100%;
object-fit: cover;
background-color: #444;
}
.videoTile.isLocal:not(.screenshare) video {
transform: scaleX(-1);
}
.videoTile.speaking::after {
position: absolute;
top: -1px;
left: -1px;
right: -1px;
bottom: -1px;
content: "";
border-radius: 20px;
2022-06-01 11:48:17 -04:00
box-shadow: inset 0 0 0 4px var(--accent) !important;
2022-04-07 14:22:36 -07:00
}
.videoTile.screenshare > video {
object-fit: contain;
}
.infoBubble {
2022-04-07 14:22:36 -07:00
position: absolute;
height: 24px;
padding: 0 8px;
color: var(--primary-content);
background-color: var(--background-85);
2022-04-07 14:22:36 -07:00
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
user-select: none;
max-width: calc(100% - 48px);
overflow: hidden;
z-index: 1;
}
.toolbar {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 42px;
color: var(--primary-content);
background-color: var(--background-85);
display: flex;
align-items: center;
justify-content: flex-end;
overflow: hidden;
z-index: 1;
}
.videoTile:not(.isLocal):not(:hover) .toolbar {
//display: none;
}
.button {
margin-right: 16px;
}
.button svg {
width: 16px;
height: 16px;
}
.memberName {
left: 16px;
bottom: 16px;
}
2022-04-07 14:22:36 -07:00
.memberName > * {
margin-right: 6px;
}
.memberName > :last-child {
margin-right: 0px;
}
.memberName span {
font-size: 12px;
font-weight: 400;
line-height: 16px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.videoMutedAvatar {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.videoMutedOverlay {
width: 100%;
height: 100%;
background-color: #21262c;
2022-04-07 14:22:36 -07:00
}
.presenterLabel {
position: absolute;
top: calc(
16px + 20px + 16px + 20px
); /* top padding + button size + buttom padding + top padding */
2022-04-07 14:22:36 -07:00
left: 50%;
transform: translateX(-50%);
background-color: #17191c;
2022-04-07 14:22:36 -07:00
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
padding: 4px 8px;
font-weight: normal;
font-size: 12px;
line-height: 15px;
}
.screensharePIP {
bottom: 8px;
right: 8px;
width: 25%;
max-width: 360px;
border-radius: 20px;
}