2A News

Gun Rights Groups Challenge Wall Street to End Discrimination Against Industry

Reading Time: 3:22 min

Politics should have no place in major financial institutions’ decisions to extend essential services to various industries, but in 2025, it still does. That led the National Rifle Association (NRA),…

View post

Colorado’s Latest Gun Control Package Has Citizens Scrambling

Reading Time: 1:49 min

Colorado lawmakers may be late for the anti-Second Amendment party, but they are doing their best to make up for lost time with wave after wave of gun control bills.…

View post

Constitutional Carry for NC On Hold Yet Again

Reading Time: 1:57 min

North Carolina’s large shooting community continues to be teased by the possibility of constitutional carry. Unfortunately, the latest scheduled veto override vote was postponed yet again on Monday. Senate Bill…

View post

Walz: ‘Not Acceptable’ That Legislature Refuses to Cave to Anti-Gunners

Reading Time: 1:51 min

Former vice presidential candidate and current governor of Minnesota Tim Walz (D) took the chance last week to blast lawmakers for failing to react to the Annunciation Catholic School shooting…

View post

Barber Shop Employee Shoots Machete-Wielding Alleged Robber

Reading Time: 2:2 min

It’s not every day that a man rushes into a local barber shop with a machete and threatens everyone inside in a robbery attempt, but that’s what unfolded in South…

View post

Anti-Gunners Howl in Protest Over Florida’s New Open Carry Status

Reading Time: 1:54 min

Florida recently leaped into new territory as a true constitutional carry state, a development following an appeals court decision that delighted Second Amendment advocates. The First District ruled that the…

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>