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

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

Virginia Lawmakers Launch New Attacks on Second Amendment Rights

Reading Time: 3:23 min

Virginia’s 2026 General Assembly session rolls out this week, and anti-gun lawmakers are falling all over themselves in a mad dash to enact new gun control legislation. These Second Amendment…

View post

US Gun Sales Soften but Remain Strong in December

Reading Time: 1:50 min

The American appetite for firearms shows no signs of abating as December’s retail gun sales continued to be strong. The old year saw a softening in raw numbers, but it…

View post

Appeals Court Strikes Down Lifetime Firearm Ban for Non-Violent Offender

Reading Time: 2:14 min

Every responsible gun owner supports keeping firearms away from violent criminals, but what about those guilty of non-violent offenses who find themselves forever stripped of Second Amendment rights? Last month,…

View post

NRA Sues NRA Foundation Over Financial and Trademark Issues

Reading Time: 3:30 min

The National Rifle Association (NRA), the country’s oldest and largest Second Amendment advocacy group, filed a lawsuit on Monday against the NRA Foundation. The organization’s complaint declared that the NRA…

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>