2A News

Survey: Soft-on-Crime Policies to Blame for Deadly Violence

Reading Time: 1:55 min

Despite widely reported double-digit decreases in homicides and other violent crimes, the needed relief is hardly spread evenly. Strong pockets of resistance to progress remain, including two notable examples just…

View post

Oral Arguments Over AR-15 Bans Set for December

Reading Time: 2:2 min

With a landmark challenge to state and local bans on AR-15s and other sporting rifles on the U.S. Supreme Court docket, anticipation is high for a resolution on this volatile…

View post

SCOTUS Brief Argues AR-15’s Usefulness Justifies Protection

Reading Time: 1:54 min

Anti-gun radicals love to smear the uber popular AR-15 and similar models as “assault rifles” or “weapons of war.” Until now, gun rights enthusiasts have fought back against the designations…

View post

Florida’s Firearm Sales Tax Holiday Underway

Reading Time: 2:7 min

As the roster of states stacking obstacles between gun owners and their Second Amendment rights expands (e.g., Virginia and Colorado), Florida leaves no doubt about where it stands on civil…

View post

SAF Files Brief Supporting Suit Against Maryland’s ‘Sensitive Places’

Reading Time: 2:6 min

If the Second Amendment right to keep and bear arms is egregiously limited by huge swaths of so-called “sensitive places,” are law-abiding citizens deprived of one of their fundamental freedoms?…

View post

DOJ Expands Action Against Virgin Islands to Include AR-15 Ban

Reading Time: 2:3 min

U.S. Virgin Islands (USVI) authorities apparently take their cues from California and a few other Second Amendment outliers. This drew attention from the rejuvenated Department of Justice (DOJ), which recently…

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>