您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

58 行
1.4KB

  1. <meta charset="utf-8"/>
  2. <link rel="stylesheet" href="/pico.css" />
  3. <style>
  4. body {
  5. margin: 0;
  6. }
  7. .media {
  8. position: fixed;
  9. top: 50;
  10. left: 100;
  11. width: 800;
  12. height: 300;
  13. background-color: crimson;
  14. padding: 1em;
  15. overflow: hidden;
  16. resize: both;
  17. }
  18. .videos {
  19. --pad: 3px;
  20. grid-gap: var(--pad);
  21. padding: var(--pad);
  22. height: calc(100% - 2 * var(--pad));
  23. background-color: royalblue;
  24. }
  25. </style>
  26. <body>
  27. <div class="media">
  28. <div class="videos">
  29. <div class="video-container mirror">
  30. <video autoplay></video>
  31. </div>
  32. <div class="video-container mirror square">
  33. <video autoplay></video>
  34. </div>
  35. <div class="video-container mirror">
  36. <video autoplay></video>
  37. </div>
  38. </div>
  39. </div>
  40. </body>
  41. <script>
  42. navigator.mediaDevices.getUserMedia({audio: false, video: true})
  43. .then(stream => document.querySelectorAll('video')
  44. .forEach(video => video.srcObject = stream))
  45. </script>
  46. <script>
  47. const doOne = ({target}) => target.style.setProperty('--height', `${target.clientHeight}px`)
  48. const doAll = (entries) => entries.forEach(doOne)
  49. sizer = new ResizeObserver(doAll)
  50. document.querySelectorAll('.video-container').forEach(el => sizer.observe(el))
  51. document.querySelectorAll('.video-container').forEach(el =>
  52. el.onclick = (ev) => el.classList.toggle('full-screen'))
  53. </script>