2A News

Suspect Killed After Allegedly Breaking into Ex-Girlfriend’s Residence

Reading Time: 1:51 min

One of the reasons for the massive surge in female gun ownership in recent years is the sometimes volatile nature of breakups. While most spouses and partners are mature enough…

View post

Case Against New Jersey’s Hollow Point Ban Gains Momentum

Reading Time: 1:59 min

There are several states hostile to the Second Amendment, but New Jersey leads the way in prohibiting a popular form of ammunition. In 1978, the Garden State enacted a ban…

View post

Hero Security Guards Take Down Alleged Terrorist in Synagogue Attack

Reading Time: 1:51 min

Even as the nation learned shocking details of an apparent terror attack on a Michigan synagogue on Thursday, news spread of the heroic actions of an armed security guard who…

View post

California Lawmaker Proposes Gun-Related Restrictions on 3D Printing

Reading Time: 1:53 min

If a new proposal becomes law, many 3D printers sold or transferred into California would have to feature government-authorized “firearm blocking technology.” Sponsored by Assembly Member Rebecca Bauer-Kahan (D), Assembly…

View post

New Jersey’s Rebellion Against Carry Permit Fees Spreads

Reading Time: 1:59 min

Add another New Jersey municipality to the growing roster of local governments that have declared a hard no to the state’s controversial carry permit fee scheme. West Milford is the…

View post

Minnesota’s Firearms Community Under Attack by Anti-2A Lawmakers

Reading Time: 1:57 min

Minnesota’s increasingly anti-Second Amendment political leadership stoked controversy yet again on Wednesday when they introduced a volatile new measure. SF 4290 is the latest attempt to prohibit nearly all semi-automatic…

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>