2A News

Va. Authorities Declare ‘Assault Firearm’ Ban Won’t be Enforced

Reading Time: 2:5 min

Virginia’s all-out attack on what are falsely deemed “assault firearms” quickly stirred a wave of opposition. Gun rights stalwarts quickly filed multiple lawsuits, and more legal challenges would not be…

View post

Homeowner Shoots Alleged Intruder Who Then Ran but Left Wallet Behind

Reading Time: 1:56 min

It almost wasn’t fair for the suspect. Imagine casing a residence with intentions of breaking in and stealing someone else’s property or much, much worse. Now consider that the homeowner…

View post

Florida’s 2A Sales Tax Holiday to Return—With a Bonus

Reading Time: 1:57 min

While a handful of members of the Republic waste an enormous amount of time and expense vilifying the Second Amendment, Florida just took another giant step on a better path.…

View post

Virginia Senator Blasts Rebellious Prosecutors to Stop ‘Tough Guy Posturing’

Reading Time: 1:57 min

As a wave of Commonwealth Attorneys tells the state to put their “assault weapons” ban where the sun doesn’t shine, the sponsor of the insidious prohibition on the most popular…

View post

Report: 2026 Could Finish with Lowest US Murder Rate in History

Reading Time: 2:12 min

With anti-gun radicals running in aghast circles over the hundreds of millions of firearms that Americans own, there’s a bit of data that they should check out. The Reload reported…

View post

Philly Activist Group Members Lose Carry Rights After Police Confrontation

Reading Time: 2:1 min

An armed Philadelphia activist group that patrols city streets charges that authorities singled them out to revoke many of their concealed carry permits. But why? The Black Lion Party for…

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>