Skip to content
Snippets Groups Projects
debug.html 4.4 KiB
Newer Older
alexisben's avatar
alexisben committed
<div class="d-grid">
alexisben's avatar
alexisben committed
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
  <div>11</div>
  <div>12</div>
alexisben's avatar
alexisben committed
</div>

alexisben's avatar
alexisben committed
<div class="d-spacing">
alexisben's avatar
alexisben committed
  <div><span>0 (12px) </span></div>
  <div><span>1 (24px) </span></div>
  <div><span>2 (48px) </span></div>
  <div><span>3 (64px) </span></div>
alexisben's avatar
alexisben committed
  <div><span>4 (128px) </span></div>
  <div><span>5 (256px) </span></div>
alexisben's avatar
alexisben committed
</div>

alexisben's avatar
alexisben committed
<div class="d-cross"></div>
alexisben's avatar
alexisben committed
<style>
  .d-grid {
    bottom: 0;
    display: none;
alexisben's avatar
alexisben committed
    grid-gap: var(--grid-gutter);
alexisben's avatar
alexisben committed
    grid-template-columns: repeat(12, 1fr);
Arnaud Levy's avatar
Arnaud Levy committed
    opacity: 0.3;
alexisben's avatar
alexisben committed
    padding: 0 var(--grid-gutter);
alexisben's avatar
alexisben committed
    pointer-events: none;
    position: fixed;
    margin: auto;
    max-width: 100%;
    top: 0;
alexisben's avatar
alexisben committed
    left: 50%;
    transform: translateX(-50%);
alexisben's avatar
alexisben committed
    width: calc(var(--grid-max-width) + var(--grid-gutter));
alexisben's avatar
alexisben committed
    z-index: 9999;
Arnaud Levy's avatar
Arnaud Levy committed
    font-family: sans-serif;
    font-size: 12px;
alexisben's avatar
alexisben committed
  }
  .d-grid.is-visible {
    display: grid;
  }
  .d-grid > div {
alexisben's avatar
alexisben committed
    background: fuchsia;
alexisben's avatar
alexisben committed
    border-left: 1px solid yellow;
    border-right: 1px solid yellow; 
    */
alexisben's avatar
alexisben committed
    text-align: center;
alexisben's avatar
alexisben committed
  }
alexisben's avatar
alexisben committed
  .d-spacing {
    display: none;
    position: fixed;
    top: 50%;
    transform: translateY(-50%);
    left: 0;
alexisben's avatar
alexisben committed
    pointer-events: none;
alexisben's avatar
alexisben committed
    width: 100%;
alexisben's avatar
alexisben committed
    mix-blend-mode: difference;
Arnaud Levy's avatar
Arnaud Levy committed
    opacity: 0.3;
    font-family: sans-serif;
    font-size: 12px;
alexisben's avatar
alexisben committed
  }
  .d-spacing.is-visible {
    display: block;
  }
  .d-spacing > div {
    position: relative;
  }
  .d-spacing > div span {
    position: absolute;
  }
  .d-spacing > div {
    width: 100%;
alexisben's avatar
alexisben committed
    border-bottom: 1px solid white;
alexisben's avatar
alexisben committed
    display: block;
alexisben's avatar
alexisben committed
    color: white;
    text-indent: 5px;
alexisben's avatar
alexisben committed
  }
  .d-spacing > div:nth-child(1){
alexisben's avatar
alexisben committed
    border-top: 1px solid white;
alexisben's avatar
alexisben committed
    height: var(--spacing0);
  }
  .d-spacing > div:nth-child(1) span{
    margin-top: -10px;
  }
  .d-spacing > div:nth-child(2){
    height: var(--spacing1);
  }
  .d-spacing > div:nth-child(3){
    height: var(--spacing2);
  }
  .d-spacing > div:nth-child(4){
    height: var(--spacing3);
  }
  .d-spacing > div:nth-child(5){
    height: var(--spacing4);
  }
  .d-spacing > div:nth-child(6){
    height: var(--spacing5);
  }
alexisben's avatar
alexisben committed
  .d-cross {
    position: fixed;
    top: 0;
    left: 0;
    width: 2px;
    height: 2px;
    background: gray;
    display: none;
alexisben's avatar
alexisben committed
    pointer-events: none;
alexisben's avatar
alexisben committed
    z-index: 100;
  }
  .d-cross.is-visible {
    display: block;
  }
  .d-cross:after, .d-cross:before{
    content: '';
    position: absolute;
    background: gray;
    transform: translate(-50%, -50%);
    width: 1px;
    height: 1px;
  }
  .d-cross:after{
    height: 200vh;
  }
  .d-cross:before{
    width: 200vw;
  }

  @media (max-width: 768px) {
    .d-grid > div {
      display: none;
    }
    .d-grid {
alexisben's avatar
alexisben committed
      border-left: calc(var(--grid-gutter-sm) / 2) solid fuchsia;
      border-right: calc(var(--grid-gutter-sm) / 2) solid fuchsia;
alexisben's avatar
alexisben committed
</style>

<script>
  window.addEventListener('keydown', e => {
    if (e.ctrlKey && e.key === 'g') {
      document.querySelector('.d-grid').classList.toggle('is-visible');
alexisben's avatar
alexisben committed
      document.querySelector('.d-spacing').classList.toggle('is-visible');
alexisben's avatar
alexisben committed
      document.querySelector('.d-cross').classList.toggle('is-visible');
alexisben's avatar
alexisben committed
    }
    if (e.ctrlKey && e.key === 'w') {
      document.body.classList.toggle('full-width');
    }
alexisben's avatar
alexisben committed
  });
alexisben's avatar
alexisben committed
  window.addEventListener('pointermove', e => {
    document.querySelector('.d-cross').style.left = e.clientX + "px";
    document.querySelector('.d-cross').style.top = e.clientY + "px";
  });

  document.querySelectorAll('img').forEach(img => {
    img.addEventListener('click', e => {
      if (e.altKey) {
        e.preventDefault()
        e.stopImmediatePropagation()
        responsiveImageDebugOutput(img)
      }
    })
alexisben's avatar
alexisben committed
  })

  function responsiveImageDebugOutput(img) {
    if (!img) {
      throw new TypeError("Expected an image node. Got none.");
    }
    const listener = function () {
      const pixelRatio = window.devicePixelRatio > 1 ? 2 : 1;
      const dimensionWidth = img.naturalWidth * pixelRatio;
      const dimensionHeight = img.naturalHeight * pixelRatio;
      console.log(`
        -------------------------
        Rendered size: ${img.width}x${img.height}
        Intrinsic size: ${dimensionWidth}x${dimensionHeight}
        Device Pixel Ratio: ${window.devicePixelRatio}
        -------------------------
      `);
    };
    if (img.complete) listener();
    //img.addEventListener('load', listener);
  }
alexisben's avatar
alexisben committed
</script>