2A News

Elderly Atlanta Couple Defends Against Alleged Home Invasion with Handgun

Reading Time: 2:4 min

Not every defensive gun use involves an Old West shootout and carnage in the streets. Many times, the mere presence of a ready firearm is an enormous assistance to the…

View post

Pro-2A Lawmakers Want Michigan to Become 30th Constitutional Carry State

Reading Time: 2:7 min

Second Amendment forces came together in Michigan last week to attempt a historic milestone—they would make the state the 30th to codify constitutional carry in the U.S. Proponents want to…

View post

Report: Lawmaker Introduces National Constitutional Carry Act

Reading Time: 1:54 min

Sen. Mike Lee (R-UT) introduced an overdue piece of legislation on Thursday that, if passed and signed into law, would go a long way toward erasing the unworkable patchwork of…

View post

Appeals Court Strikes Down DC Gun Magazine Ban

Reading Time: 1:55 min

A major blow was dealt on Thursday to the controversial gun control regime that currently controls Washington, D.C. The District of Columbia Court of Appeals determined that the local ban…

View post

Anti-2A States Argue for Keeping Federal Ban on Mailing Handguns

Reading Time: 1:60 min

A funny thing happened when the Department of Justice (DOJ) determined that mailing a handgun should no longer be subject to a federal ban. Three states decided to take on…

View post

Gorsuch Grills DOJ Lawyers Over Founding Fathers’ Habits in 2A Case

Reading Time: 3:32 min

More than one Supreme Court justice this week expressed skepticism over the federal ban on marijuana users possessing weapons. Justice Neil Gorsuch asked the government lawyer defending the Department of…

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>