2A News

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

Police: Memphis Store Clerk Shot Armed Attempted Robber

Reading Time: 1:52 min

The best laid plans of violent criminals can quickly slide off the rails, especially when the intention is to target an armed and law-abiding citizen for attack. That appears to…

View post

2A Community Cautiously Celebrates California Victory

Reading Time: 3:27 min

It’s self-defeating to be skeptical of every victory or even sliver of good news, but gun rights advocates are accustomed to tempering their expectations. So, while Friday’s ruling striking down…

View post

DOJ Files Brief Supporting Challenge to California’s Ammunition Restrictions

Reading Time: 1:54 min

The revamped Department of Justice’s Civil Rights Division filed an amicus brief on Monday supporting the plaintiff’s challenge to California’s onerous ammunition regulations. After all, Second Amendment rights mean little…

View post

Rest in Peace: Hated NFA Stamp Tax Dead and Gone in 2026

Reading Time: 1:54 min

Along with raucous New Year’s celebrations and an endless deluge of football, the changing of the calendar brought a welcome update for law-abiding American gun owners. As of January 1,…

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>