2A News

Tennessee Man Charged After Allegedly Shooting Break-In Suspect

Reading Time: 1:58 min

It can be a risky proposition to use lethal force for self-defense, even in an obvious situation where the intended victim has a reasonable fear of imminent harm.  That’s because…

View post

Gov. Hochul Declares Intent to Eradicate ‘Ghost Guns’

Reading Time: 2:2 min

As states that are bastions of Second Amendment opponents compete to see who can infringe on gun rights the most, New York may be taking the lead. In 2025, the…

View post

Pro-2A South Carolina Lawmakers Act to Defend Weapons Industry

Reading Time: 1:55 min

As more states opposed to Second Amendment rights dig in to launch attacks on the weapons industry, South Carolina lawmakers are bucking that trend. State Rep. Chris Wooten (R) recently…

View post

New Year’s Day Brings Spike in ATF Form Submissions and Chaos

Reading Time: 1:49 min

New Year’s Day is a time of rest—and recovery—for millions of Americans as the long holiday season finally wraps up. But for many gun owners and the Bureau of Alcohol,…

View post

Anti-2A Lawmakers Blast DOJ’s New Defense of Gun Rights

Reading Time: 2:11 min

Gun rights opponents are up in arms over the recent and dramatic pivot at the Department of Justice (DOJ) on gun rights. While much work remains, there is already a…

View post

Another In-Person Transaction Ends in Deadly Gunfire

Reading Time: 1:53 min

Meeting a total stranger somewhere to consummate a transaction is inherently risky, and there are an increasing number of reports of these encounters turning out to be nothing more than…

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>