2A News

National Gun Sales Strong in March as Virginians Scramble for Firearms

Reading Time: 1:47 min

The American firearm industry sailed through March with positive retail sales again, according to the National Shooting Sports Foundation (NSSF). And alarmed citizens of one state helped lead the charge.…

View post

Connecticut Lawmakers Advance Proposed Glock Ban

Reading Time: 1:60 min

No reasonable person wants to ban automobiles because some people drive while intoxicated. That’s because operating a vehicle while under the influence is already illegal, and it would be foolish…

View post

NY Lawmakers Seek to Punish Free Exercise of Gun Rights Financially

Reading Time: 1:53 min

Politicians using tax policy to influence the public’s behavior are as old as governments themselves. What is not so common is for these leaders to use the power of the…

View post

2A Groups Challenge National Park Carry Ban

Reading Time: 1:59 min

Gun rights supporters have long contended that the federal law banning the carry of firearms in federal facilities is unconstitutional, particularly as it applies to national parks. Last week, the…

View post

Senate Candidate Breaks with Virginia Colleagues Over Second Amendment

Reading Time: 1:55 min

The Second Amendment is for every law-abiding American adult, regardless of political affiliation or socioeconomic status. Particularly in Virginia in 2026, the line on gun rights runs straight between the…

View post

NSSF: Chicago Spending $30 Million Annually to Protect Anti-2A Mayor

Reading Time: 1:60 min

The fact that a double standard on gun rights exists between the politically powerful and the rest of us is no surprise in 2026. Many U.S. leaders proclaim guns 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>