点击封面后显示youtube

1tuwyuhd  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(161)

其工作原理是:
点击后,youtube应该会出现在屏幕上,但事实并非如此。
代码中需要修复/调整哪些内容才能实现?
此外,由于某种原因,我一直收到一条错误消息。
它要求我提供更多信息,但仅此而已。
代码https://jsfiddle.net/rsbwe91z/

  1. const load = (function () {
  2. "use strict";
  3. function _load(tag) {
  4. return function (url) {
  5. return new Promise(function (resolve) {
  6. const element = document.createElement(tag);
  7. const parent = "body";
  8. const attr = "src";
  9. element.onload = function () {
  10. resolve(url);
  11. };
  12. element[attr] = url;
  13. document[parent].appendChild(element);
  14. });
  15. };
  16. }
  17. return {
  18. js: _load("script")
  19. };
  20. }());
  21. (function manageCover() {
  22. "use strict";
  23. function show(el) {
  24. el.classList.remove("hide");
  25. document.querySelector(".curtain").classList.add("slide");
  26. }
  27. function hide(el) {
  28. el.classList.add("hide");
  29. }
  30. function coverClickHandler(evt) {
  31. const cover = evt.currentTarget;
  32. const thewrap = cover.parentNode.querySelector(".container");
  33. hide(cover);
  34. show(thewrap);
  35. }
  36. const cover = document.querySelector(".jacket");
  37. cover.addEventListener("click", coverClickHandler);
  38. }());
  39. const videoPlayer = (function makeVideoPlayer() {
  40. "use strict";
  41. function onPlayerReady(event) {
  42. const player = event.target;
  43. player.setVolume(100); // percent
  44. }
  45. let hasShuffled = false;
  46. function onPlayerStateChange(event) {
  47. const player = event.target;
  48. const shufflePlaylist = true;
  49. if (!hasShuffled) {
  50. player.setShuffle(shufflePlaylist);
  51. player.playVideoAt(0);
  52. hasShuffled = true;
  53. }
  54. }
  55. function addVideo(video) {
  56. const playlist = "M7lc1UVf-VE";
  57. new YT.Player(video, {
  58. width: 640,
  59. height: 360,
  60. host: "https://www.youtube-nocookie.com",
  61. playerVars: {
  62. autoplay: 0,
  63. controls: 1,
  64. loop: 1,
  65. rel: 0,
  66. iv_load_policy: 3,
  67. cc_load_policy: 0,
  68. fs: 0,
  69. disablekb: 1,
  70. playlist
  71. },
  72. events: {
  73. "onReady": onPlayerReady,
  74. "onStateChange": onPlayerStateChange
  75. }
  76. });
  77. }
  78. function init(opts) {
  79. load.js("https://www.youtube.com/player_api").then(function () {
  80. YT.ready(function () {
  81. addVideo(opts.video);
  82. });
  83. });
  84. }
  85. return {
  86. init
  87. };
  88. }());
  89. (function iife() {
  90. "use strict";
  91. function show(el) {
  92. el.classList.remove("hide");
  93. }
  94. function initPlayer(wrapper) {
  95. videoPlayer.init({
  96. video: wrapper.querySelector(".video")
  97. });
  98. }
  99. function coverClickHandler(evt) {
  100. const wrapper = evt.currentTarget.nextElementSibling;
  101. show(wrapper);
  102. initPlayer(wrapper);
  103. }
  104. const cover = document.querySelector(".jacket");
  105. cover.addEventListener("click", coverClickHandler);
  106. }());
  1. html,
  2. body {
  3. height: 100%;
  4. background: #000000;
  5. padding: 0;
  6. margin: 0;
  7. }
  8. .outer {
  9. display: table;
  10. height: 100%;
  11. margin: 0 auto;
  12. width: 100%;
  13. }
  14. .tcell {
  15. display: table-cell;
  16. vertical-align: middle;
  17. padding: 8px 8px;
  18. }
  19. .curtain-wrapper {
  20. min-width: 40%;
  21. max-width: 640px;
  22. margin: auto;
  23. }
  24. .curtain-ratio-keeper {
  25. position: relative;
  26. padding-top: 56.25%;
  27. }
  28. .curtain {
  29. position: absolute;
  30. top: 0;
  31. left: 0;
  32. bottom: 0;
  33. right: 0;
  34. width: 100%;
  35. height: 100%;
  36. border: 3px solid red;
  37. box-sizing: border-box;
  38. border-radius: 25px;
  39. overflow: hidden;
  40. background: transparent;
  41. }
  42. .container {}
  43. .panel-left,
  44. .panel-right {
  45. position: absolute;
  46. height: 100%;
  47. width: 50%;
  48. top: 0%;
  49. transition: all ease 8s;
  50. }
  51. .panel-left {
  52. left: 0%;
  53. background-color: rgb(91, 96, 106);
  54. }
  55. .panel-right {
  56. left: 50%;
  57. background-color: rgb(229, 211, 211);
  58. }
  59. .curtain.slide .panel-left {
  60. transform: translateX(-100%);
  61. }
  62. .curtain.slide .panel-right {
  63. transform: translateX(100%);
  64. }
  65. .video-wrapper {
  66. min-width: 40%;
  67. max-width: 640px;
  68. margin: auto;
  69. }
  70. .video-ratio-keeper {
  71. position: relative;
  72. padding-top: 56.25%;
  73. }
  74. .video-frame {
  75. position: absolute;
  76. top: 0;
  77. left: 0;
  78. width: 100%;
  79. height: 100%;
  80. }
  81. .jacket {
  82. position: absolute;
  83. top: 0;
  84. left: 0;
  85. bottom: 0;
  86. right: 0;
  87. height: 100%;
  88. width: 100%;
  89. margin: auto;
  90. cursor: pointer;
  91. border-radius: 25px;
  92. }
  93. .play {
  94. position: absolute;
  95. top: 0;
  96. left: 0;
  97. bottom: 0;
  98. right: 0;
  99. margin: auto;
  100. min-width: 70px;
  101. min-height: 70px;
  102. max-width: 30%;
  103. max-height: 30%;
  104. fill: red;
  105. filter: drop-shadow(3px 3px 3px rgba(0, 0, 0, 0.7));
  106. cursor: pointer;
  107. }
  108. .wrap {
  109. position: absolute;
  110. left: 0;
  111. top: 0;
  112. right: 0;
  113. bottom: 0;
  114. margin: 0;
  115. width: 100%;
  116. height: 100%;
  117. overflow: hidden;
  118. border-radius: 25px;
  119. }
  120. .wrap,
  121. .jacket {
  122. position: absolute;
  123. top: -3px;
  124. left: -3px;
  125. width: calc(100% + 6px);
  126. height: calc(100% + 6px);
  127. }
  128. .wrap iframe {
  129. position: absolute;
  130. top: -3px;
  131. left: -3px;
  132. width: calc(100% + 6px);
  133. height: calc(100% + 6px);
  134. }
  135. .hide {
  136. display: none;
  137. }
  1. <div class="outer">
  2. <div class="tcell">
  3. <div class="curtain-wrapper">
  4. <div class="curtain-ratio-keeper">
  5. <div class="curtain">
  6. <div class="container hide">
  7. <div class="video-wrapper">
  8. <div class="video-ratio-keeper">
  9. </div>
  10. </div>
  11. </div>
  12. <div class="panel-left"></div>
  13. <div class="wrap hide">
  14. <div class="video video-frame"></div>
  15. </div>
  16. <div class="panel-right"></div>
  17. </div>
  18. <div class="jacket" title="Play">
  19. <svg class="play" width="100%" height="100%" viewBox="0 0 64 64">
  20. <path d="M25.6,46.4L44.8,32L25.6,17.6V46.4z M32,0C14.3,0,0,14.3,0,32s14.3,32,32,32s32-14.3,32-32S49.7,0,32,0z
  21. M32,57.6C17.9,57.6,6.4,46.1,6.4,32S17.9,6.4,32,6.4S57.6,17.9,57.6,32S46.1,57.6,32,57.6z" />
  22. </svg>
  23. </div>
  24. </div>
  25. </div>
  26. </div>
  27. </div>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题