2A News

Poll Shows Positive 2A Findings–With a Catch

Reading Time: 2:7 min

Polls are part of modern political life, and a recent study revealed interesting data for gun rights advocates. The latest Rasmussen effort encouragingly found that most American voters, 52%, favor…

View post

Microstamping’s Viability Questioned as California Moves Ahead 

Reading Time: 2:3 min

The fixation on magically imprinting small identifiers on firing pins and ammunition is gathering steam in California and elsewhere, despite the recent federal finding that “significant disagreement” remains over whether…

View post

Final FBI Numbers for 2025 Show Gun Control Fallacy

Reading Time: 2:1 min

Predictions of a record drop in violent crime proved correct last week when the Federal Bureau of Investigation (FBI) released its final crime data for 2025, and the silence from…

View post

Texas Congressional Race Showcases Divide on 2A Rights

Reading Time: 2:11 min

A seemingly nondescript Texas congressional race is drawing attention from anti-Second Amendment forces as it pits polar extremes on the issue against each other. Thirty-year-old Brandon Herrera (R) is the…

View post

Another Rural Gun Range Targeted for Closure by Developers

Reading Time: 2:3 min

Wildlife and gun ranges have much in common when it comes to surviving in rural America. As developers encroach on more open land, both face extinction or closure. As reported…

View post

Appeals Court Rejects Gun Grabbers’ Lawsuit Against ATF

Reading Time: 1:58 min

Anti-Second Amendment outfit Giffords and its California partners are licking their wounds today after the Ninth Circuit Court of Appeals shot down their suit against the Bureau of Alcohol, Tobacco,…

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>