Untitled
unknown
plain_text
6 months ago
4.1 kB
6
Indexable
<?php // Array of carousel items with type defining the layout (image-content, content-only) $carousels = [ ['type' => 'image-content', 'image' => 'image1.jpg', 'content' => 'Content for carousel 1'], ['type' => 'content-only', 'image' => '', 'content' => 'Content for carousel 2'], ['type' => 'image-content', 'image' => 'image3.jpg', 'content' => 'Content for carousel 3'], ]; // Default settings if needed $default_case = 'image-content'; // Can be 'image-content', 'content-only' // Function to render the carousel item based on type function render_carousel_item($carousel, $default_case) { $type = $carousel['type'] ?? $default_case; // Use default case if type is not set $image = $carousel['image'] ?? ''; $content = $carousel['content'] ?? ''; // Start carousel item container echo '<div class="carousel-item">'; if ($type === 'image-content' && $image) { // Image on the left, content on the right echo '<div class="carousel-left">'; echo '<img src="' . $image . '" alt="Carousel Image">'; echo '</div>'; echo '<div class="carousel-right">'; echo '<p>' . $content . '</p>'; echo '</div>'; } elseif ($type === 'content-only') { // Expand content to cover the whole carousel area echo '<div class="carousel-full-content">'; echo '<p>' . $content . '</p>'; echo '</div>'; } else { // Handle default case (image-content layout) if ($image) { echo '<div class="carousel-left">'; echo '<img src="' . $image . '" alt="Carousel Image">'; echo '</div>'; } echo '<div class="carousel-right">'; echo '<p>' . $content . '</p>'; echo '</div>'; } // End carousel item container echo '</div>'; } // Begin carousel structure echo '<div class="carousel-container">'; echo '<div class="carousel-items-wrapper">'; // Loop through each carousel and render foreach ($carousels as $carousel) { render_carousel_item($carousel, $default_case); } echo '</div>'; // Add navigation buttons echo '<button class="carousel-control prev">←</button>'; echo '<button class="carousel-control next">→</button>'; echo '</div>'; // End carousel-container ?> <style> .carousel-container { position: relative; width: 100%; overflow: hidden; } .carousel-items-wrapper { display: flex; transition: transform 0.5s ease-in-out; } .carousel-item { display: none; justify-content: space-between; width: 100%; } .carousel-left { width: 40%; } .carousel-left img { width: 100%; height: auto; } .carousel-right, .carousel-full-content { width: 100%; padding: 20px; background-color: #f0f0f0; } .carousel-right { width: 60%; } .carousel-full-content { width: 100%; } /* Navigation buttons */ .carousel-control { position: absolute; top: 50%; transform: translateY(-50%); background-color: rgba(0, 0, 0, 0.5); color: white; border: none; padding: 10px; cursor: pointer; z-index: 2; } .carousel-control.prev { left: 10px; } .carousel-control.next { right: 10px; } </style> <script> // Basic JavaScript to handle carousel navigation document.addEventListener('DOMContentLoaded', function() { const items = document.querySelectorAll('.carousel-item'); const nextButton = document.querySelector('.carousel-control.next'); const prevButton = document.querySelector('.carousel-control.prev'); let currentIndex = 0; function updateCarousel() { items.forEach((item, index) => { item.style.display = index === currentIndex ? 'flex' : 'none'; }); } nextButton.addEventListener('click', function() { currentIndex = (currentIndex + 1) % items.length; // Move to next item updateCarousel(); }); prevButton.addEventListener('click', function() { currentIndex = (currentIndex - 1 + items.length) % items.length; // Move to previous item updateCarousel(); }); // Initialize carousel updateCarousel(); }); </script>
Editor is loading...
Leave a Comment