2A News

SAF: School Illegally Searched 18-Year-Old Gun Owner’s Truck

Reading Time: 1:55 min

The Fourth Amendment was engraved into the Bill of Rights for very specific reasons: to prevent the government from randomly sifting through private property in hopes of finding something–anything–to prosecute…

View post

2A Group Argues for Constitutional Carry Over Reciprocity

Reading Time: 1:57 min

In a perfect world, national reciprocity makes perfect sense. State governments would respect the Second Amendment-guaranteed right to keep and bear arms and minor variations in local laws would not…

View post

Appeals Court Lets Texas State Fair Gun Ban Stand

Reading Time: 1:53 min

Carry rights for lawful Texas gun owners suffered a surprising defeat Thursday when a three-judge panel unanimously upheld a lower court ruling supporting the Texas State Fair’s controversial firearm prohibition.…

View post

Armed Illinois Resident Saves Juvenile from Vicious Dog Attack

Reading Time: 1:56 min

A lawful and ready firearm in the hands of an upstanding citizen is often the front line of defense against violence when there is no one there to save the…

View post

Federal Judge: Remaining NFA Registration Requirement Unconstitutional

Reading Time: 1:57 min

It was bound to happen and finally did.  Roughly a year after Congress erased the hated $200 tax on suppressors and short-barreled rifles (SBRs), a U.S. District Court Judge in…

View post

NSSF: July Gun Sales, NFA Items Continue 2026 Surge

Reading Time: 1:55 min

Law-abiding Americans showed zero signs in July of losing their passion for the right to keep and bear arms. National Instant Criminal Background Check System (NICS) data, adjusted by the…

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>