2A News

Armed Civilian on Military Base Fires Warning Shot, Scares Off Armed Intruder

Reading Time: 3:18 min

An armed civilian who is also the spouse of the Air Force’s top noncommissioned officer stopped an armed intruder on a military base with a warning shot last week. The…

View post

Hotel Clerk Armed With Handgun Stops Rifle-Carrying Robber

Reading Time: 3:1 min

Two things we have learned we can count on are bad guys doing bad things and good guys — and ladies — exercising their Second Amendment rights to stop them.…

View post

ATF Barred from Enforcing Pistol Brace Rule in Montana

Reading Time: 3:6 min

The battle lines are forming over the Bureau of Alcohol, Tobacco, Firearms, and Explosives’ (ATF) new pistol brace rule. Now entering the fray is Gov. Greg Gianforte of Montana, who…

View post

Powerful Legal Challenges Mounted Against ATF Over Pistol Brace Rule

Reading Time: 3:5 min

A pair of strong legal challenges were launched Thursday against the Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) new pistol brace rule. The National Rifle Association (NRA), 25 states…

View post

Iowa Teen Sues Over Suspension for Wearing Second Amendment Shirt

Reading Time: 3:21 min

An Iowa teenager filed a federal lawsuit against her school district and high school civics teacher. The reason? She was suspended for exercising her First Amendment right to free speech…

View post

Biden Uses SOTU to Renew Call for More Gun Control

Reading Time: 3:15 min

When the president talks, people listen. That goes with the territory of being the most powerful person in the world.  So, when President Joe Biden used his State of 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>