2A News

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

Trump Pardons Four Convicted of NFA-Related ‘Crimes’

Reading Time: 2:21 min

As the oppressive and archaic National Firearms Act (NFA) is in its death rattle stage, more good news came from the White House last week concerning four gun owners charged…

View post

Anti-Gunners Demanded New Research–Only to Get Worse News

Reading Time: 2:8 min

When it comes to life lessons, the one Second Amendment opponents just absorbed is rich with irony. Fox News Digital summed up the bitter pill succinctly. “A Georgetown professor just…

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>