Skip to content
Snippets Groups Projects
spinner.js 3.96 KiB
// Note: This doesn't have a lit-element dependency on purpose, so it can be loaded faster before
// other web components (assuming it's not bundled)

export class Spinner extends HTMLElement {

    constructor() {
        super();
        let shadowRoot = this.attachShadow({mode: 'open'});
        shadowRoot.innerHTML = `
<style>
:host {
    display: block;
}
#all-spinner-tuglogo {
  width:130px;
    height:130px;
      position:relative;
        background-color:transparent;
          margin:0 auto;
}

.all-spinner-tuglogo-box {
  width:20%;
    height:20%;
     background-color:#e4154b;
        position:absolute;
          top:50%;
            left:50%;
          animation-duration: 1.6s;
            animation-direction:alternate;
              animation-iteration-count:infinite;
    animation-fill-mode:both;
      animation-timing-function:ease;
        transition: transform 0.5s, background-color 0.2s 0.5s;
}

#all-spinner-tuglogo-box-1 {
      animation-name: box1;
        transform:translateX(-160%) translateY(-50%);
}

#all-spinner-tuglogo-box-2 {
      transform-origin:0 0;
      animation-name: box2;
transform:scale(1) translateX(-50%) translateY(-50%);
}

#all-spinner-tuglogo-box-3 {

      animation-name: box3;
        animation-delay:0.3s;
          transform:translateX(60%) translateY(-50%); visibility:visible;
}

#all-spinner-tuglogo-box-4 {

      animation-name: box4;
        animation-delay:0.1s;
transform:translateX(0%) translateY(-100%);  visibility:visible;
}

#all-spinner-tuglogo-box-5 {

      animation-name: box5;
        animation-delay:0.2s;
transform:translateX(-100%) translateY(0%);  visibility:visible;
}

@keyframes box1 {
    0% { transform:translateX(-50%) translateY(-50%); visibility:hidden; }
    50% { transform:translateX(-50%) translateY(-50%); visibility:hidden; }
    70% { transform:translateX(-170%) translateY(-50%); visibility:visible;}
    80% { transform:translateX(-160%) translateY(-50%); visibility:visible;}
  100%  { transform:translateX(-160%) translateY(-50%); visibility:visible;}
}

@keyframes box2 {
    0% { transform:scale(0) translateX(-50%) translateY(-50%);}
    5% { transform:scale(0) translateX(-50%) translateY(-50%);}
    30% { transform:scale(1.2) translateX(-50%) translateY(-50%);}
    35% { transform:scale(1) translateX(-50%) translateY(-50%);}
  100% { transform:scale(1) translateX(-50%) translateY(-50%);}

}

@keyframes box3 {
    0% { transform:translateX(-50%) translateY(-50%); visibility:hidden; }
    50% { transform:translateX(-50%) translateY(-50%); visibility:hidden; }
    70% { transform:translateX(70%) translateY(-50%); visibility:visible;}
    80% { transform:translateX(60%) translateY(-50%); visibility:visible;}
  100%  { transform:translateX(60%) translateY(-50%); visibility:visible;}
}

@keyframes box4 {
    0%  { transform:translateX(-50%) translateY(-50%);  visibility:hidden; }
    50% { transform:translateX(-50%) translateY(-50%);  visibility:hidden; }
    70% { transform:translateX(10%) translateY(-110%);  visibility:visible;}
    80% { transform:translateX(0%) translateY(-100%);  visibility:visible;}
  100%  { transform:translateX(0%) translateY(-100%);  visibility:visible;}
}
@keyframes box5 {
    0%  { transform:translateX(-50%) translateY(-50%);  visibility:hidden; }
    50% { transform:translateX(-50%) translateY(-50%);  visibility:hidden; }
    70% { transform:translateX(-110%) translateY(10%);  visibility:visible;}
    80% { transform:translateX(-100%) translateY(0%);  visibility:visible;}
  100%  { transform:translateX(-100%) translateY(0%);  visibility:visible;}
}
</style>

<div id="all-spinner-tuglogo">
  <div id="all-spinner-tuglogo-box-1" class="all-spinner-tuglogo-box"></div>
  <div id="all-spinner-tuglogo-box-2" class="all-spinner-tuglogo-box"></div>
  <div id="all-spinner-tuglogo-box-3" class="all-spinner-tuglogo-box"></div>
  <div id="all-spinner-tuglogo-box-4" class="all-spinner-tuglogo-box"></div>
  <div id="all-spinner-tuglogo-box-5" class="all-spinner-tuglogo-box"></div>
</div>`;
    }
}