Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.0.10/custom-elements-es5-adapter.js"></script>
</head>
<body>
<my-foo data-name="Ruby" data-img="https://s3-us-west-2.amazonaws.com/s.cdpn.io/4621/ruby.png" data-url="http://example.com/1"></my-foo>
</body>
</html>
 
::content .product-img {
  width: 12px;
  cursor: pointer;
}
 
function Foo() {
  HTMLElement.call(this)
// Create a shadow root
    var shadow = this.attachShadow({mode: 'open'});
    // Create a standard img element and set it's attributes.
    var img = document.createElement('img');
    img.alt = this.getAttribute('data-name');
    img.src = this.getAttribute('data-img');
    img.width = '150';
    img.height = '150';
    img.className = 'product-img';
    // Add the image to the shadow root.
    shadow.appendChild(img);
    // Add an event listener to the image.
    img.addEventListener('click', () => {
      window.location = this.getAttribute('data-url');
    });
    // Create a link to the product.
    var link = document.createElement('a');
    link.innerText = this.getAttribute('data-name');
    link.href = this.getAttribute('data-url');
    link.className = 'product-name';
    // Add the link to the shadow root.
    shadow.appendChild(link);
}
Foo.prototype = Object.create(HTMLElement.prototype)
Foo.prototype.constructor = Foo
customElements.define("my-foo", Foo);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers