This is a module for displaying logos of client companies, partners, etc., in a horizontally scrolling animation.Purpose of UseTo visually appeal to the service's credibility and authority (social proof) by displaying a list of client case studies or partner companies.
This is a module for displaying logos of client companies, partners, etc., in a horizontally scrolling animation.
Group field
and set it to Repeatable
(a repeater). Within the group, place an Image field
(for the logo image) and a URL field
(for the link).@keyframes
and transform: translateX()
to animate the entire list, achieving a smooth, library-free infinite scroll.{% set module_id = name ~ '_' ~ widget.id %}
<div class="logo-slider-wrapper" id="{{ module_id }}">
<div class="logo-slider-container">
<div class="logo-slider-track">
{% for logo in module.logos %}
{% if logo.image.src %}
<div class="logo-slider-item">
<img src="{{ logo.image.src }}"
alt="{{ logo.image.alt or 'Company Logo' }}"
loading="lazy">
</div>
{% endif %}
{% endfor %}
<!-- Duplicate for seamless loop -->
{% for logo in module.logos %}
{% if logo.image.src %}
<div class="logo-slider-item">
<img src="{{ logo.image.src }}"
alt="{{ logo.image.alt or 'Company Logo' }}"
loading="lazy">
</div>
{% endif %}
{% endfor %}
</div>
</div>
</div>
.logo-slider-wrapper {
width: 100%;
overflow: hidden;
background: #ffffff;
padding: 40px 0;
position: relative;
}
.logo-slider-container {
position: relative;
width: 100%;
max-width: 100%;
}
.logo-slider-track {
display: flex;
align-items: center;
white-space: nowrap;
animation: logoSlide 25s linear infinite;
will-change: transform;
}
.logo-slider-item {
flex: 0 0 auto;
display: inline-flex;
align-items: center;
justify-content: center;
width: 200px;
height: 100px;
margin-right: 60px;
padding: 15px;
}
.logo-slider-item img {
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
object-fit: contain;
filter: grayscale(100%);
opacity: 0.7;
transition: all 0.3s ease;
}
.logo-slider-item:hover img {
filter: grayscale(0%);
opacity: 1;
transform: scale(1.05);
}
/* HubSpot対応:0%を削除して100%のみ指定 */
@keyframes logoSlide {
100% {
transform: translateX(-50%);
}
}
/* ホバー時一時停止 */
.logo-slider-wrapper:hover .logo-slider-track {
animation-play-state: paused;
}
/* レスポンシブ */
@media (max-width: 768px) {
.logo-slider-track {
animation-duration: 30s;
}
.logo-slider-item {
width: 150px;
height: 75px;
margin-right: 40px;
padding: 10px;
}
.logo-slider-wrapper {
padding: 30px 0;
}
}
@media (max-width: 480px) {
.logo-slider-track {
animation-duration: 35s;
}
.logo-slider-item {
width: 120px;
height: 60px;
margin-right: 30px;
padding: 8px;
}
.logo-slider-wrapper {
padding: 20px 0;
}
}
/* アクセシビリティ対応 */
@media (prefers-reduced-motion: reduce) {
.logo-slider-track {
animation: none;
}
}
// JavaScript でのアニメーション(代替案)
document.addEventListener('DOMContentLoaded', function() {
var logoSliders = document.querySelectorAll('.logo-slider-wrapper');
logoSliders.forEach(function(slider) {
var track = slider.querySelector('.logo-slider-track');
if (!track) return;
var startTime = null;
var duration = 10000; // 25秒
function animate(timestamp) {
if (!startTime) startTime = timestamp;
var progress = (timestamp - startTime) % duration;
var percentage = (progress / duration) * 50; // 50%移動
track.style.transform = 'translateX(-' + percentage + '%)';
requestAnimationFrame(animate);
}
requestAnimationFrame(animate);
});
});
We can customize this sample to match your specific business requirements.
Book Free ConsultationThis is a module for displaying logos of client companies, partners, etc., in a horizontally scrolling animation.Purpose of UseTo visually appeal to the service's credibility and authority (social proof) by displaying a list of client case studies or partner companies.
This is a module for the top of the page (the "first view") that defines the first impression of a product or service.Purpose of UseTo be used when you want to simply place a powerful catchphrase and a call-to-action (CTA) over a background image in the first view. It is ideal for quickly setting up the common elements of a hero section.