ÿØÿà JFIF ` ` ÿþxØ
| Server IP : 109.234.164.53 / Your IP : 216.73.216.136 Web Server : Apache System : Linux cervelle.o2switch.net 4.18.0-553.32.1.lve.el8.x86_64 #1 SMP Thu Dec 19 13:14:03 UTC 2024 x86_64 User : computer3 ( 1098) PHP Version : 7.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/computer3/lachocolateriedevirginie.fr/business/business/ |
Upload File : |
<style>
.review-card{
flex:0 0 calc(33.333% - 20px);
margin-right:30px;
}
@media(max-width:1100px){
.review-card{
flex:0 0 calc(50% - 15px);
}
}
@media(max-width:768px){
.review-card{
flex:0 0 100%;
margin-right:0;
}
}
</style>
<div class="reviews-wrap">
<h2 style="text-align:center;font-size:48px; color:#aaa">Témoignages de nos clients</h2>
<div class="reviews-head">
<div class="reviews-head-left">
<div class="reviews-logo">
<!-- ton logo SVG conservé -->
<img width="150" src="gga.png" viewBox="0 0 150 40" >
</div>
</div>
<div class="reviews-note">Note : {$moyenne_g}/5</div>
</div>
<div class="reviews-slider" id="reviews-slider">
{foreach from=$avis_g item=item}
<article class="review-card">
<div class="review-top">
<div class="review-avatar">{$item.initial|escape}</div>
<div>
<div class="review-name">{$item.nom|escape}</div>
<div class="review-stars">
{section name=s start=0 loop=$item.note}★{/section}
</div>
</div>
<div class="review-badge">Google</div>
</div>
<p class="review-text">{$item.texte nofilter}</p>
<div class="review-date">{$item.date_relative}</div>
</article>
{/foreach}
</div>
<div class="reviews-dots" id="reviews-dots"></div>
<div class="reviews-nav">
<button type="button" id="reviews-prev" aria-label="Avis précédents">‹</button>
<button type="button" id="reviews-next" aria-label="Avis suivants">›</button>
</div>
</div>
{literal}
<script>
(function(){
var slider = document.getElementById('reviews-slider');
if (!slider) return;
var cards = slider.children;
var total = cards.length;
var prevBtn = document.getElementById('reviews-prev');
var nextBtn = document.getElementById('reviews-next');
var dotsWrap = document.getElementById('reviews-dots');
var index = 0;
function perView(){
if (window.innerWidth < 768) return 1;
if (window.innerWidth < 1100) return 2;
return 3;
}
// largeur réelle d'UNE carte + sa marge droite
function cardFullWidth(){
if (!cards.length) return 0;
var c = cards[0];
var style = window.getComputedStyle(c);
var w = c.offsetWidth;
var mr = parseFloat(style.marginRight || 0);
return w + mr;
}
function buildDots(){
if (!dotsWrap) return;
dotsWrap.innerHTML = '';
var pv = perView();
var pages = Math.ceil(total / pv);
for (var i=0; i<pages; i++){
var b = document.createElement('button');
(function(page){
b.addEventListener('click', function(){
index = page;
update();
});
})(i);
dotsWrap.appendChild(b);
}
}
function update(){
var pv = perView();
var pages = Math.ceil(total / pv);
if (index < 0) index = pages - 1;
if (index > pages - 1) index = 0;
var one = cardFullWidth();
// largeur d'une "page" = nombre de cartes visibles * (largeur carte + marge)
var pageWidth = one * pv;
// translate exacte
var offset = -(index * pageWidth);
slider.style.transform = 'translateX(' + offset + 'px)';
// dots
if (dotsWrap){
var btns = dotsWrap.querySelectorAll('button');
btns.forEach(function(btn, i){
btn.classList.toggle('is-active', i === index);
});
}
}
if (nextBtn) nextBtn.addEventListener('click', function(){ index++; update(); });
if (prevBtn) prevBtn.addEventListener('click', function(){ index--; update(); });
window.addEventListener('resize', function(){
buildDots();
update();
});
buildDots();
update();
})();
</script>
{/literal}