Home > database >  Only the play button should be clickable
Only the play button should be clickable

Time:10-30

Currently, both the image and play button are both clickable. How would I adjust it so that only the play button is clickable?

I am trying to figure out how to adjust it so that only the play button is clickable. How am I able to do that? Is this able to be done?

code https://jsitor.com/3RCuY3s_O

(function(){
  let YouTubeContainers = document.querySelectorAll(".embed-youtube");

  // Iterate over every YouTube container you may have
  for (let i = 0; i < YouTubeContainers.length; i  ) {
    let container = YouTubeContainers[i];
    let imageSource = "https://img.youtube.com/vi/"  container.dataset.videoId  "/sddefault.jpg"; 

    // Load the Thumbnail Image asynchronously
    let image = new Image();
    image.src = imageSource;
    image.addEventListener("load", function() {
      container.appendChild(image);
    });

    // When the user clicks on the container, load the embedded YouTube video
    container.addEventListener("click", function() {
      let iframe = document.createElement( "iframe" );

      iframe.setAttribute("frameborder", "0");
      iframe.setAttribute("allowfullscreen", "");
      iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");
      // Important: add the autoplay GET parameter, otherwise the user would need to click over the YouTube video again to play it 
      iframe.setAttribute("src", "https://www.youtube.com/embed/"  this.dataset.videoId  "?rel=0&showinfo=0&autoplay=1");

      // Clear Thumbnail and load the YouTube iframe
      this.innerHTML = "";
      this.appendChild( iframe );
    });
  }
})();
.container {
  position: absolute;
  left: 0;
  right: 0;
  min-height: 100%;
  display: flex;
  padding: 8px 8px;
}

.curtain {
  flex: 1 0 0;
  margin: auto;
  max-width: 640px;
  min-width: 155px;
  position: relative;
}

.embed-youtube {
  background-color: #000;
  margin-bottom: 10px;
  position: relative;
  height: 0;
  padding-top: 56.25%;
  overflow: hidden;
  
}

.embed-youtube img {
  width: 100%;
  top: -16.84%;
  left: 0;
  opacity: 0.7; 
}

/*.embed-youtube img,
.embed-youtube .embed-youtube-play {
  cursor: default;
}*/

.embed-youtube img,
.embed-youtube iframe,
.embed-youtube .embed-youtube-play,
.embed-youtube .embed-youtube-play:before {
  position: absolute;
}

.embed-youtube iframe {
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

 .embed-youtube .embed-youtube-play {
  -webkit-appearance: none;
  appearance: none;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  margin: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 90px;
  height: 90px;
  border-radius: 50%;
  cursor: pointer;
  border: 9px solid blue;
  background: transparent;
  filter: drop-shadow(3px 3px 3px #000000b3);
 
   z-index: 1;

}

.embed-youtube-play::before {
  content: "";
  width: 0;
  height: 0;
  border-top: 20px solid transparent;
  border-bottom: 20px solid transparent;
  border-left: 27px solid blue;
  transform: translateX(4px);
}

.embed-youtube-play:hover {
  box-shadow: 0 0 0 5px rgba(43, 179, 20, 0.5);
}

.embed-youtube-play:focus {
  outline: 0;
  box-shadow: 0 0 0 5px rgba(0, 255, 255, 0.5);
}
<div >
   <div >
     
<!-- 1. Video Wrapper Container -->
<div  data-video-id="djV11Xbc914">
  <!-- 2. The preview button that will contain the Play icon -->
  <button  type="button" aria-label="Open"></button>
</div>

<!-- 1. Video Wrapper Container -->
<div  data-video-id="djV11Xbc914">
  <!-- 2. The preview button that will contain the Play icon -->

  
     <button  type="button" aria-label="Open"></button>
</div>

<!-- 1. Video Wrapper Container -->
<div  data-video-id="djV11Xbc914">
  <!-- 2. The preview button that will contain the Play icon -->
 <button  type="button" aria-label="Open"></button>
</div>

<!-- 1. Video Wrapper Container -->
<div  data-video-id="djV11Xbc914">
  <!-- 2. The preview button that will contain the Play icon -->
  <button  type="button" aria-label="Open"></button>
</div>

<!-- 1. Video Wrapper Container -->
<div  data-video-id="djV11Xbc914">
  <!-- 2. The preview button that will contain the Play icon -->
  <button  type="button" aria-label="Open"></button>
</div>

</div>
</div>

CodePudding user response:

You set the click event to the entire container. Set it to only the button (container.querySelector("button")), and change this to container to accomodate for the changes:

(function(){
  let YouTubeContainers = document.querySelectorAll(".embed-youtube");

  // Iterate over every YouTube container you may have
  for (let i = 0; i < YouTubeContainers.length; i  ) {
    let container = YouTubeContainers[i];
    let imageSource = "https://img.youtube.com/vi/"  container.dataset.videoId  "/sddefault.jpg"; 

    // Load the Thumbnail Image asynchronously
    let image = new Image();
    image.src = imageSource;
    image.addEventListener("load", function() {
      container.appendChild(image);
    });

    // When the user clicks on the container, load the embedded YouTube video
    container.querySelector("button").addEventListener("click", function() {
      let iframe = document.createElement( "iframe" );

      iframe.setAttribute("frameborder", "0");
      iframe.setAttribute("allowfullscreen", "");
      iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");
      // Important: add the autoplay GET parameter, otherwise the user would need to click over the YouTube video again to play it 
      iframe.setAttribute("src", "https://www.youtube.com/embed/"  container.dataset.videoId  "?rel=0&showinfo=0&autoplay=1");

      // Clear Thumbnail and load the YouTube iframe
      container.innerHTML = "";
      container.appendChild( iframe );
    });
  }
})();
.container {
  position: absolute;
  left: 0;
  right: 0;
  min-height: 100%;
  display: flex;
  padding: 8px 8px;
}

.curtain {
  flex: 1 0 0;
  margin: auto;
  max-width: 640px;
  min-width: 155px;
  position: relative;
}

.embed-youtube {
  background-color: #000;
  margin-bottom: 10px;
  position: relative;
  height: 0;
  padding-top: 56.25%;
  overflow: hidden;
  
}

.embed-youtube img {
  width: 100%;
  top: -16.84%;
  left: 0;
  opacity: 0.7; 
}

/*.embed-youtube img,
.embed-youtube .embed-youtube-play {
  cursor: default;
}*/

.embed-youtube img,
.embed-youtube iframe,
.embed-youtube .embed-youtube-play,
.embed-youtube .embed-youtube-play:before {
  position: absolute;
}

.embed-youtube iframe {
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

 .embed-youtube .embed-youtube-play {
  -webkit-appearance: none;
  appearance: none;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  margin: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 90px;
  height: 90px;
  border-radius: 50%;
  cursor: pointer;
  border: 9px solid blue;
  background: transparent;
  filter: drop-shadow(3px 3px 3px #000000b3);
 
   z-index: 1;

}

.embed-youtube-play::before {
  content: "";
  width: 0;
  height: 0;
  border-top: 20px solid transparent;
  border-bottom: 20px solid transparent;
  border-left: 27px solid blue;
  transform: translateX(4px);
}

.embed-youtube-play:hover {
  box-shadow: 0 0 0 5px rgba(43, 179, 20, 0.5);
}

.embed-youtube-play:focus {
  outline: 0;
  box-shadow: 0 0 0 5px rgba(0, 255, 255, 0.5);
}
<div >
  <div >

    <!-- 1. Video Wrapper Container -->
    <div  data-video-id="djV11Xbc914">
      <!-- 2. The preview button that will contain the Play icon -->
      <button  type="button" aria-label="Open"></button>
    </div>

    <!-- 1. Video Wrapper Container -->
    <div  data-video-id="djV11Xbc914">
      <!-- 2. The preview button that will contain the Play icon -->


      <button  type="button" aria-label="Open"></button>
    </div>

    <!-- 1. Video Wrapper Container -->
    <div  data-video-id="djV11Xbc914">
      <!-- 2. The preview button that will contain the Play icon -->
      <button  type="button" aria-label="Open"></button>
    </div>

    <!-- 1. Video Wrapper Container -->
    <div  data-video-id="djV11Xbc914">
      <!-- 2. The preview button that will contain the Play icon -->
      <button  type="button" aria-label="Open"></button>
    </div>

    <!-- 1. Video Wrapper Container -->
    <div  data-video-id="djV11Xbc914">
      <!-- 2. The preview button that will contain the Play icon -->
      <button  type="button" aria-label="Open"></button>
    </div>

  </div>
</div>

CodePudding user response:

try:

 for(let button of embed-youtube-play) {
    button.addEventListener("click", function() {
      //yourCode
    })
}
  • Related