VibeCoderzVibeCoderz
Telegram
All Prompts
Animated Amenities Feature Section preview
featuresectionanimatedresponsivescrolltailwindreal-estate

Animated Amenities Feature Section

Анимированный блок с удобствами: секция с жилыми, реставрационными зонами и зонами для встреч. Анимация при прокрутке. Идеально для лендингов недвижимости, отелей.

Prompt

<section id="amenities-section"
  class="relative overflow-hidden bg-white py-24 md:py-32 font-sans font-light text-[#1c1917]"
  style="selection-background-color: #1c1917; selection-color: white;">
  <!-- GSAP Library Imports -->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>

  <div class="mx-auto max-w-[1400px] px-6 md:px-12">
    <div class="flex flex-col gap-12 md:flex-row md:gap-24">

      <!-- Sticky Label Column -->
      <div class="w-full pt-2 md:w-1/4" style="border-top: 1px solid #1c1917;">
        <span class="mt-4 block text-[10px] uppercase tracking-[0.2em]">
          03 — Amenities
        </span>
      </div>

      <!-- Main Content Column -->
      <div class="w-full md:w-3/4">
        <!-- Intro Header -->
        <div class="mb-12 md:mb-20">
          <h2 class="mb-6 font-serif text-3xl font-light leading-tight text-[#1c1917] md:text-5xl lg:text-6xl">
            Designed for the hours between.
          </h2>
          <p class="max-w-xl text-sm leading-relaxed text-black/70 md:text-base">
            Resident-only spaces curated for stillness, wellness, and effortless living. A landscape of amenities that
            extends your home beyond its walls.
          </p>
        </div>

        <!-- Row 1: Living (Image Left, Text Right) -->
        <div
          class="amenity-row flex flex-col items-center gap-8 border-t border-black/10 py-12 opacity-0 md:grid md:grid-cols-12 md:gap-12 md:py-20"
          style="transform: translateY(40px);">
          <div class="w-full md:col-span-5">
            <div class="group relative aspect-[4/5] w-full overflow-hidden rounded-[2px] border border-black/10">
              <img
                src="https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/111ca588-31c4-44cd-8724-eacc4cbcda19_800w.jpg"
                alt="Lobby Detail"
                class="h-full w-full object-cover transition-transform duration-[1200ms] ease-[cubic-bezier(0.22,1,0.36,1)] group-hover:scale-105"
              />
            </div>
          </div>
          <div class="w-full md:col-span-7 md:pl-8">
            <span class="mb-8 block text-[10px] uppercase tracking-[0.2em] text-black/50">Designed for Living</span>
            <ul class="space-y-8">
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Concierge & Secure Entry</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">24/7 Service</span>
                </div>
                <span class="block text-xs font-light text-black/70">24/7 lobby presence + parcel room</span>
              </li>
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Turnkey Residences</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">Furnished</span>
                </div>
                <span class="block text-xs font-light text-black/70">Integrated appliances + furnished options</span>
              </li>
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">EV Ready Parking</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">Underground</span>
                </div>
                <span class="block text-xs font-light text-black/70">Secure underground facility</span>
              </li>
            </ul>
          </div>
        </div>

        <!-- Row 2: Restoration (Text Left, Image Right) -->
        <div
          class="amenity-row flex flex-col items-center gap-8 border-t border-black/10 py-12 opacity-0 md:grid md:grid-cols-12 md:gap-12 md:py-20"
          style="transform: translateY(40px);">
          <div class="w-full md:col-span-5 md:col-start-8">
            <div class="group relative aspect-[4/5] w-full overflow-hidden rounded-[2px] border border-black/10">
              <img
                src="https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/4029113c-abfc-4e12-9bc3-f226900932c1_800w.jpg"
                alt="Wellness Spa"
                class="h-full w-full object-cover transition-transform duration-[1200ms] ease-[cubic-bezier(0.22,1,0.36,1)] group-hover:scale-105"
              />
            </div>
          </div>
          <div class="w-full md:col-start-1 md:col-span-7 md:row-start-1 md:pr-8">
            <span class="mb-8 block text-[10px] uppercase tracking-[0.2em] text-black/50">Designed for Restoration</span>
            <ul class="space-y-8">
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Wellness Floor</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">06:00 — 23:00</span>
                </div>
                <span class="block text-xs font-light text-black/70">Strength studio + quiet cardio suite</span>
              </li>
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Thermal Circuit</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">Resident Only</span>
                </div>
                <span class="block text-xs font-light text-black/70">Rooftop plunge pool + dry sauna</span>
              </li>
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Yoga Studio</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">Sessions</span>
                </div>
                <span class="block text-xs font-light text-black/70">Quiet morning sessions with mats provided</span>
              </li>
            </ul>
          </div>
        </div>

        <!-- Row 3: Gathering (Image Left, Text Right) -->
        <div
          class="amenity-row flex flex-col items-center gap-8 border-t border-black/10 py-12 opacity-0 md:grid md:grid-cols-12 md:gap-12 md:py-20"
          style="transform: translateY(40px);">
          <div class="w-full md:col-span-5">
            <div class="group relative aspect-[4/5] w-full overflow-hidden rounded-[2px] border border-black/10">
              <img
                src="https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/85f80b28-9ea3-463d-9bf9-bc3a61e0d51b_800w.jpg"
                alt="Rooftop Terrace"
                class="h-full w-full object-cover transition-transform duration-[1200ms] ease-[cubic-bezier(0.22,1,0.36,1)] group-hover:scale-105"
              />
            </div>
          </div>
          <div class="w-full md:col-span-7 md:pl-8">
            <span class="mb-8 block text-[10px] uppercase tracking-[0.2em] text-black/50">Designed for Gathering</span>
            <ul class="space-y-8">
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Rooftop Terrace</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">Seasonal</span>
                </div>
                <span class="block text-xs font-light text-black/70">Outdoor kitchen + curated seating for sunset viewing</span>
              </li>
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Co-working Salon</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">WiFi 6</span>
                </div>
                <span class="block text-xs font-light text-black/70">Private work suites + library with complimentary coffee</span>
              </li>
              <li class="group cursor-default border-b border-black/10 pb-4 transition-colors hover:border-black/30">
                <div class="mb-2 flex items-baseline justify-between">
                  <span class="font-serif text-xl text-[#1c1917]">Private Screening</span>
                  <span class="hidden text-[10px] uppercase tracking-widest text-black/40 opacity-0 transition-opacity duration-300 group-hover:opacity-100 md:block">Bookable</span>
                </div>
                <span class="block text-xs font-light text-black/70">Immersive cinema room with plush lounge seating</span>
              </li>
            </ul>
          </div>
        </div>

      </div>
    </div>
  </div>

  <script>
    (function() {
      const initAmenities = () => {
        if (typeof gsap === 'undefined' || typeof ScrollTrigger === 'undefined') return;
        
        gsap.registerPlugin(ScrollTrigger);

        if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
          gsap.set(".amenity-row", { opacity: 1, y: 0 });
          return;
        }

        const rows = document.querySelectorAll(".amenity-row");
        rows.forEach((row) => {
          gsap.to(row, {
            y: 0,
            opacity: 1,
            duration: 1.2,
            ease: "power3.out",
            scrollTrigger: {
              trigger: row,
              start: "top 85%",
              toggleActions: "play none none none"
            },
          });
        });
      };

      if (document.readyState === 'complete') {
        initAmenities();
      } else {
        window.addEventListener('load', initAmenities);
      }
    })();
  </script>
</section>
All Prompts