In Page AJAX
Portfolio In Page Ajax
In page ajax expands a portfolio item inline, loading its full details below the grid without a page reload. It uses data-loader on each item and a .portfolio-ajax-trigger link, together with an ajax wrapper placed after the grid.
Structure
Mark the grid with .portfolio-ajax in addition to the usual portfolio classes. Each <article> needs a unique id and a data-loader pointing at the HTML fragment to fetch.
<div id="portfolio" class="portfolio portfolio-ajax row grid-container gutter-20" data-layout="fitRows">
<article id="portfolio-item-1" data-loader="include/ajax/portfolio-ajax-image.php" class="portfolio-item col-lg-3 col-md-4 col-sm-6 col-12 pf-media pf-icons">
<div class="grid-inner">
<div class="portfolio-image">
<a href="portfolio-single.html">
<img src="images/portfolio/4/1.jpg" alt="Open Imagination">
</a>
<div class="bg-overlay">
<div class="bg-overlay-content dark" data-hover-animate="fadeIn">
<a href="images/portfolio/full/1.jpg" class="overlay-trigger-icon bg-light text-dark" data-lightbox="image" title="Image"><i class="uil uil-plus"></i></a>
<a href="portfolio-single.html" class="overlay-trigger-icon bg-light text-dark portfolio-ajax-trigger"><i class="bi-front"></i></a>
</div>
<div class="bg-overlay-bg dark" data-hover-animate="fadeIn"></div>
</div>
</div>
<div class="portfolio-desc">
<h3><a href="portfolio-single.html">Open Imagination</a></h3>
<span><a href="#">Media</a>, <a href="#">Icons</a></span>
</div>
</div>
</article>
</div>Ajax wrapper
Place the ajax wrapper and loader immediately after the grid. The fetched fragment is injected into #portfolio-ajax-container, and #portfolio-ajax-loader shows the spinner while loading.
<div id="portfolio-ajax-wrap">
<div id="portfolio-ajax-container"></div>
</div>
<div id="portfolio-ajax-loader">
<div class="css3-spinner">
<div class="css3-spinner-bounce1"></div>
<div class="css3-spinner-bounce2"></div>
<div class="css3-spinner-bounce3"></div>
</div>
</div>How it works
- Clicking a
.portfolio-ajax-triggerreads the parent.portfolio-itemid and itsdata-loaderURL. - The script fetches that URL and injects the returned HTML into
#portfolio-ajax-container, then opens the panel by adding.portfolio-ajax-openedto the wrapper. - The active item gets
.portfolio-active, and the body gets.portfolio-ajax-loadingduring the fetch. - Previous and next navigation is generated automatically from sibling items, using a
#portfolio-navigationblock with#prev-portfolio,#next-portfolio, and#close-portfolio.
Options
.portfolio-ajaxon the grid: enables the in page ajax behaviour.idon each<article>: unique identifier used to track the active item and build prev/next links.data-loaderon each<article>: URL of the HTML fragment to load for that item..portfolio-ajax-trigger: the clickable element that opens the item.#portfolio-ajax-wrap/#portfolio-ajax-container/#portfolio-ajax-loader: required output containers placed after the grid.
Tips
- Every ajax item needs both a unique
idand adata-loader, otherwise it cannot be opened. - Different items can point at different fragment types, for example an image loader, a video loader, or a slider loader.
- The container re initializes Canvas modules on the loaded fragment, so sliders and lightboxes inside the fetched HTML work automatically.
- Keep
#portfolio-ajax-wrapand#portfolio-ajax-loaderdirectly after the grid so the panel expands in the right place.
How to Use
- 1
Setting up AJAX Portfolio Wrapper:
<div id="portfolio-ajax-wrap"> <div id="portfolio-ajax-container"></div> </div> <div id="portfolio-ajax-loader"> <div class="css3-spinner"> <div class="css3-spinner-ball-scale-multiple"> <div></div> <div></div> <div></div> </div> </div> </div>Note: Place this code before the Portfolio Codes start.
- 2
Setting up AJAX Portfolio Items
<!-- Portfolio Item: Start --> <article id="portfolio-item-1" data-loader="include/ajax/portfolio-ajax-image.php" class="portfolio-item col-lg-3 col-md-4 col-sm-6 col-12 pf-media pf-icons"> <!-- Grid Inner: Start --> <div class="grid-inner"> <!-- Image: Start --> <div class="portfolio-image"> <a href="portfolio-single.html"> <img src="images/portfolio/4/1.jpg" alt="Open Imagination"> </a> <!-- Overlay: Start --> <div class="bg-overlay"> <div class="bg-overlay-content dark" data-hover-animate="fadeIn"> <a href="images/portfolio/full/1.jpg" class="overlay-trigger-icon bg-light text-dark" data-hover-animate="fadeInDownSmall" data-hover-animate-out="fadeOutUpSmall" data-hover-speed="350" data-lightbox="image" title="Image"><i class="icon-line-plus"></i></a> <a href="portfolio-single.html" class="overlay-trigger-icon bg-light text-dark portfolio-ajax-trigger" data-hover-animate="fadeInDownSmall" data-hover-animate-out="fadeOutUpSmall" data-hover-speed="350"><i class="icon-line-expand"></i></a> </div> <div class="bg-overlay-bg dark" data-hover-animate="fadeIn"></div> </div> <!-- Overlay: End --> </div> <!-- Image: End --> <!-- Description: Start --> <div class="portfolio-desc"> <h3><a href="portfolio-single.html">Open Imagination</a></h3> <span><a href="#">Media</a>, <a href="#">Icons</a></span> </div> <!-- Description: End --> </div> <!-- Grid Inner: End --> </article> <!-- Portfolio Item: End -->The codes for the AJAX Item Details can be found in the file:
PACKAGE/HTML/include/ajax
Was this page helpful?
