2A News

Preteen Boy Fires Handgun to Protect Mother from Alleged Attack

Reading Time: 1:56 min

Having a legal and ready firearm at your disposal may be the difference between life and death. It may also be the difference between seeing a loved one suffer at…

View post

Hero Son Arms Himself and Shoots Alleged Burglar

Reading Time: 1:56 min

A Utah family was startled on Thursday during what was likely a typical evening by something no one should ever face. A stranger allegedly burst into the home, causing everyone…

View post

West Virginia’s ‘Machine Gun Bill’ Dies in State Senate

Reading Time: 1:54 min

West Virginia’s novel “machine gun bill,” technically Senate Bill 1071, died a premature death in the state Senate on Friday. The measure would allow law-abiding citizens to acquire machine guns…

View post

National Gun Sales Surge as Virginia Residents Stock Up

Reading Time: 1:53 min

The American appetite for exercising the right to keep and bear arms is alive and well in 2026. The National Shooting Sports Foundation (NSSF) culls the raw numbers from the…

View post

Elderly Atlanta Couple Defends Against Alleged Home Invasion with Handgun

Reading Time: 2:4 min

Not every defensive gun use involves an Old West shootout and carnage in the streets. Many times, the mere presence of a ready firearm is an enormous assistance to the…

View post

Pro-2A Lawmakers Want Michigan to Become 30th Constitutional Carry State

Reading Time: 2:7 min

Second Amendment forces came together in Michigan last week to attempt a historic milestone—they would make the state the 30th to codify constitutional carry in the U.S. Proponents want to…

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>