2A News

Texas Homeowner Uses Ring Camera to Shoot Suspect

Reading Time: 2:14 min

Home security for the rank and file used to be a shotgun and a German Shepherd. Times have changed, and while these two choices remain good ones, modern technology has…

View post

Ruger Becomes Latest Firearms Manufacturer to Move to Greener Pastures

Reading Time: 1:55 min

Actions spur consequences, and the all-out war on Second Amendment industries by a handful of states prompted yet another firearms business to pull up roots and head elsewhere. Ruger was…

View post

Minneapolis Mayor Signs Unenforceable Gun Control Package

Reading Time: 2:6 min

Whatever obvious flaws they normally possess, anti-Second Amendment radicals are at least consistent in their persistence in trying to strip away the right to keep and bear arms. Even when…

View post

2A Coalition Immediately Sues Virginia Over ‘Assault Firearms’ Ban

Reading Time: 1:56 min

Well, that didn’t take long. As controversial Virginia Gov. Abigail Spanberger’s (D) signature on the state’s shiny new ban on so-called “assault firearms” was drying on Thursday, a powerful coalition…

View post

DOJ Expands DC Lawsuit to Include Suppressor Ban

Reading Time: 1:57 min

The revamped Department of Justice (DOJ) signaled Thursday that it intends to aggressively fight for Second Amendment rights in the District of Columbia.  Of course, saying it and doing it…

View post

Pennsylvania Pushes to Become 30th Constitutional Carry State

Reading Time: 2:2 min

While the Tar Heel State keeps dragging its feet as lawmakers debate the merits of the Second Amendment, there’s suddenly a new contender to become the 30th constitutional carry state…

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>