2A News

SC Man Shoots Attackers Who Allegedly Set Him Up for an Online Transaction

Reading Time: 1:54 min

Online sales by individuals are here to stay, but there are increasingly alarming reports that they are a tool for violent criminals to target innocent victims. A South Carolina man…

View post

NRA Battle Against California’s Ammunition Controls Continues

Reading Time: 1:56 min

California’s gun owners live under a regime that attempts to stymie their right to keep and bear arms at every turn. One of the major impediments erected by the state…

View post

Report: More Evidence That Armed Citizens Reduce Violent Crime

Reading Time: 1:53 min

Shrill anti-gunners would have you believe that protecting the right to keep and bear arms will result in violence and blood running in the streets. Only, that’s simply not true.…

View post

Virginia’s Anti-Gunners Plot Course After Regaining Power

Reading Time: 2:14 min

Elections have consequences, first and foremost. Second Amendment advocates fretted about Virginia’s elections last month as the state teetered on the edge of falling into a full-blown gun control regime.…

View post

Michigan Bill Would Establish Concealed Carry for Young Adults

Reading Time: 1:54 min

It is indefensible that young adults are denied the Constitution’s complete protection through arbitrary anti-gun laws that do nothing to enhance public safety. In Michigan, State Representative Jason Woolford (R)…

View post

Shock: Whitmer’s Anti-2A Cronies Conclude Guns Are the Problem

Reading Time: 1:54 min

People and machines are not so different—you typically get out what you put in. With that in mind, the outcome of a highly touted Michigan task force’s work was never…

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>