2A News

2A Critic Claims Virginia’s Soaring Gun Sales Due to ‘Fearmongering’

Reading Time: 1:57 min

Law-abiding gun owners are aware of how much anti-Second Amendment radicals detest their freedom to keep and bear arms. And they are intelligent enough to know a threat when they…

View post

California Proposes New Gun Restrictions on Incoming Residents

Reading Time: 1:58 min

The Golden State is once again attempting to raise the barriers higher between law-abiding citizens and the free exercise of their Second Amendment rights.  This time, it’s Senate Bill 948,…

View post

Surprise! Mississippi Lawmakers Target Those Responsible for Crime

Reading Time: 1:52 min

It’s a sorry state of affairs when duty calls for singling out a state for doing exactly what it should, but that’s where we are. Amid officials attempting to place…

View post

Separate Self-Defense Incidents Rock Philadelphia

Reading Time: 2:1 min

The City of Brotherly Love might want to start taking suggestions on a new moniker after a night of explosive violence. Two times an alleged violent criminal attempted to prey…

View post

Appeals Court Rejects New York’s ‘Vampire Rule’

Reading Time: 3:25 min

The so-called “vampire rule” imposed by anti-gun states was never about public safety or disarming criminals. Rather, because the law required civilians in possession of weapons to ask permission from…

View post

Civil Rights Group Sues Illinois Over Orwellian Gun Law

Reading Time: 1:57 min

“Show your papers” is a familiar refrain from Cold War-era scripts, and there were many real-world instances of law-abiding citizens being forced to bend the knee for those in power.…

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>