gun

ASK NOIR | Ep.17: I Hold My Rifle Wrong, My Supporters & When I Got My Hat

Reading Time: 0:15 min

On this weeks episode of NOIR, I learn that someone people can’t stomach the way I hold my rifle. Also, I finally give up the dirt on where I got…

View post

AIMPOINT CARBINE OPTIC: YOUR NEW “BUDGET” OPTION

Reading Time: 0:50 min

When it comes to red dot optics, Aimpoint is at the top of the list. Unfortunately, when it comes to red dot prices, they’re right up there again. There’s no point…

View post

NOIR Ep.17: Shotgun For Home Defense, Bullet Buttons, Athletic Shooting as a Pro Sport

Reading Time: 0:15 min

On this weeks episode of NOIR, we discuss whether a shotgun is the best home defense gun, I see a bullet button for the first time and we sit down…

View post

Teaching Moments: Talking/Arguing Guns

Reading Time: 1:5 min

“Okay, here’s what I’m going to do. I’m going to go around the corner, and I want you to act like you have a gun and I am an attacker…

View post

Shooting Ppl In The Leg & The Coonan .357 Magnum Review on NOIR | Ep.16

Reading Time: 0:21 min

Why don’t they just shoot him in the leg? If I had a dollar every time someone asked that question I would have enough money to buy a new gun…

View post

Ask NOIR |Ep.7: Tactical THOTS, Definition of Hero & I Hate on LaSorte’s Shooting Skills

Reading Time: 0:19 min

On this Episode of Ask NOIR, I give my definition of a Hero, I expose a Tactical Male THOT, and I get on my soap box about LaSorte’s shooting skills.…

View post
<script>
  /*Source: https://github.com/Krzysztof-Antosik/Two-direction-Sticky-Sidebar*/
  
  // Verificar el ancho de pantalla al cargar y redimensionar
  function checkScreenWidth() {
    if (window.innerWidth <= 767) {
      // Si la pantalla es menor o igual a 676px, no ejecutar el código
      return;
    }

    const stickyElement = document.querySelector('.fb-sidebar__aside');
    const startPosition = stickyElement.getBoundingClientRect().top;

    let endScroll = window.innerHeight - stickyElement.offsetHeight - 500;
    let currPos = window.scrollY;
    let screenHeight = window.innerHeight;
    let stickyElementHeight = stickyElement.offsetHeight;
    let topGap = 40;
    let bottomGap = 40;

    setTimeout(() => {
      if (stickyElement.hasAttribute('data-top-gap')) {
        const dataTopGap = stickyElement.getAttribute('data-top-gap');
        topGap = dataTopGap === 'auto' ? startPosition : parseInt(dataTopGap);
      }

      if (stickyElement.hasAttribute('data-bottom-gap')) {
        bottomGap = parseInt(stickyElement.getAttribute('data-bottom-gap'));
      }
    }, 100);

    stickyElement.style.position = 'sticky';
    stickyElement.style.top = `${topGap}px`;
    stickyElement.style.height = 'fit-content';

    function positionStickySidebar() {
      endScroll = window.innerHeight - stickyElement.offsetHeight - bottomGap;
      const stickyElementTop = parseInt(stickyElement.style.top.replace('px', ''));

      if (stickyElementHeight + topGap + bottomGap > screenHeight) {
        if (window.scrollY < currPos) {
          if (stickyElementTop < topGap) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop >= topGap && stickyElementTop !== topGap) {
            stickyElement.style.top = `${topGap}px`;
          }
        } else {
          if (stickyElementTop > endScroll) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop < endScroll && stickyElementTop !== endScroll) {
            stickyElement.style.top = `${endScroll}px`;
          }
        }
      } else {
        stickyElement.style.top = `${topGap}px`;
      }
      currPos = window.scrollY;
    }

    function stickyElementToMe() {
      stickyElement.style.top = `${topGap}px`;
    }

    function updateSticky() {
      screenHeight = window.innerHeight;
      stickyElementHeight = stickyElement.offsetHeight;
      positionStickySidebar();
    }

    setTimeout(() => {
      window.addEventListener('resize', () => {
        currPos = window.scrollY;
        updateSticky();
      });

      document.addEventListener('scroll', updateSticky, {
        capture: true,
        passive: true
      });
    }, 1000);
  }

  // Verificar el ancho de pantalla al cargar y redimensionar
  window.addEventListener('load', checkScreenWidth);
  window.addEventListener('resize', checkScreenWidth);
</script>