

β Back to Sections
Text Marquee
A smooth, edge-to-edge scrolling marquee section perfect for highlighting key messages, announcements, or brand statements. Creates an eye-catching horizontal scroll effect that draws attention to important information without taking up much vertical space.
Key Features:
- Seamless infinite scroll animation with customizable speed (100-600 seconds)
- Support for both custom SVG icons and uploaded images with color controls
- Rich text formatting for dynamic content styling
- Fully responsive typography that scales beautifully across all devices
- Edge-to-edge display with no horizontal padding for maximum impact
- Flexible color options: inherit your theme's styling or apply custom brand colors
- Optional linking capability to make the entire marquee clickable
- Reversible scroll direction for varied visual effects
Perfect for: Sale announcements, shipping notifications, brand messaging, event promotions, featured products, or any repeating message that needs continuous visibility across your site.
{%- style -%}
.section-{{ section.id }} {
{% if section.settings.use_custom_colors %}
background-color: {{ section.settings.background_color }};
color: {{ section.settings.text_color }};
{% else %}
color: rgb(var(--color-foreground));
{% endif %}
border-top: {{ section.settings.top_border_thickness }}px solid {{ section.settings.border_color }};
border-bottom: {{ section.settings.bottom_border_thickness }}px solid {{ section.settings.border_color }};
padding: {{ section.settings.desktop_padding }}px 0;
}
@media screen and (max-width: 991px) {
.section-{{ section.id }} {
padding: {{ section.settings.tablet_padding }}px 0;
}
}
@media screen and (max-width: 767px) {
.section-{{ section.id }} {
padding: {{ section.settings.mobile_padding }}px 0;
}
}
.section-{{ section.id }} .bc-marquee {
align-items: center;
display: flex;
overflow: hidden;
text-decoration: none;
gap: {{ section.settings.element_spacing }}px;
color: inherit;
}
.section-{{ section.id }} .bc-marquee:hover,
.section-{{ section.id }} .bc-marquee:focus,
.section-{{ section.id }} .bc-marquee:visited {
color: inherit;
text-decoration: none;
}
.section-{{ section.id }} .bc-marquee-content {
min-width: 100%;
flex: none;
justify-content: space-around;
align-items: center;
display: flex;
gap: {{ section.settings.element_spacing }}px;
}
.section-{{ section.id }} .bc-marquee-content.bc-marquee-scroll {
animation: scroll {{ section.settings.speed }}s linear infinite;
{% if section.settings.reverse_direction %}
animation-direction: reverse;
{% endif %}
}
.section-{{ section.id }} .bc-icon {
width: {{ section.settings.icon_size }}px;
height: {{ section.settings.icon_size }}px;
color: {{ section.settings.icon_color }};
flex-shrink: 0;
}
.section-{{ section.id }} .bc-icon svg {
width: 100%;
height: 100%;
display: block;
}
.section-{{ section.id }} .bc-icon img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
opacity: {{ section.settings.icon_opacity }}%;
}
.section-{{ section.id }} .bc-text * {
font-size: {{ section.settings.text_size }}rem;
font-size: clamp({{ section.settings.text_size | times: section.settings.text_mobile_scale_ratio }}rem, 4vw, {{ section.settings.text_size }}rem) !important;
line-height: {{ section.settings.text_line_height }};
max-width: {{ section.settings.text_max_width }}ch;
margin: 0;
}
@keyframes scroll {
from {
transform: translateX(0);
}
to {
transform: translateX(calc(-100% - {{ section.settings.element_spacing }}px));
}
}
{%- endstyle -%}
<div class="section-{{ section.id }}{% unless section.settings.use_custom_colors %} color-{{ section.settings.color_scheme }}{% endunless %}">
{% comment %} Designed and Developed by Bungalow Creative. Get sections like these at The Section Studio https://bungalowcreative.co/pages/the-section-studio {% endcomment %}
<a href="{{ section.settings.link | default: '#' }}" class="bc-marquee">
<div class="bc-marquee-content bc-marquee-scroll">
{% for i in (1..50) %}
{% if section.settings.icon_image != blank or section.settings.icon_svg != blank %}
<div class="bc-icon">
{% if section.settings.icon_image != blank %}
<img
src="{{ section.settings.icon_image | img_url: 'original' }}"
alt="{{ section.settings.icon_image_alt | default: 'Icon' }}"
loading="lazy"
>
{% else %}
{{ section.settings.icon_svg }}
{% endif %}
</div>
{% endif %}
<div class="bc-text">{{ section.settings.text | default: '<p>Your text goes here</p>' }}</div>
{% endfor %}
</div>
</a>
</div>
{% schema %}
{
"name": "BC Marquee",
"settings": [
{
"type": "header",
"content": "Colors"
},
{
"type": "color_scheme",
"id": "color_scheme",
"label": "Color Scheme",
"default": "scheme-1"
},
{
"type": "checkbox",
"id": "use_custom_colors",
"label": "Use custom colors instead of a Dawn color scheme",
"default": false
},
{
"type": "color",
"id": "background_color",
"label": "Background Color",
"default": "#ffffff"
},
{
"type": "color",
"id": "text_color",
"label": "Text Color",
"default": "#000000"
},
{
"type": "color",
"id": "border_color",
"label": "Border Color",
"default": "#000000"
},
{
"type": "color",
"id": "icon_color",
"label": "Icon Color",
"default": "#000000"
},
{
"type": "header",
"content": "Section Settings"
},
{
"type": "range",
"id": "desktop_padding",
"label": "Desktop Vertical Padding",
"min": 0,
"max": 150,
"step": 5,
"default": 15,
"unit": "px"
},
{
"type": "range",
"id": "tablet_padding",
"label": "Tablet Vertical Padding",
"min": 0,
"max": 150,
"step": 5,
"default": 15,
"unit": "px"
},
{
"type": "range",
"id": "mobile_padding",
"label": "Mobile Vertical Padding",
"min": 0,
"max": 150,
"step": 5,
"default": 15,
"unit": "px"
},
{
"type": "range",
"id": "top_border_thickness",
"label": "Top Border Thickness",
"min": 0,
"max": 20,
"step": 1,
"default": 0,
"unit": "px"
},
{
"type": "range",
"id": "bottom_border_thickness",
"label": "Bottom Border Thickness",
"min": 0,
"max": 20,
"step": 1,
"default": 0,
"unit": "px"
},
{
"type": "range",
"id": "element_spacing",
"label": "Spacing Between Elements",
"min": 10,
"max": 100,
"step": 5,
"default": 30,
"unit": "px"
},
{
"type": "range",
"id": "speed",
"label": "Scroll Speed",
"min": 100,
"max": 700,
"step": 25,
"default": 500,
"unit": "s"
},
{
"type": "checkbox",
"id": "reverse_direction",
"label": "Reverse scroll direction",
"default": false
},
{
"type": "header",
"content": "Text"
},
{
"type": "richtext",
"id": "text",
"label": "Text Content",
"default": "<p>Your text goes here</p>"
},
{
"type": "range",
"id": "text_size",
"label": "Text Font Size",
"min": 0.5,
"max": 8,
"step": 0.1,
"default": 1.4,
"unit": "rem",
"info": "Font size in rem units (good for accessibility)"
},
{
"type": "range",
"id": "text_line_height",
"label": "Text Line Height",
"min": 1,
"max": 2,
"step": 0.1,
"default": 1.2
},
{
"type": "range",
"id": "text_max_width",
"label": "Text Max Width",
"min": 10,
"max": 100,
"step": 1,
"default": 50,
"unit": "ch"
},
{
"type": "range",
"id": "text_mobile_scale_ratio",
"label": "Text Mobile Scale Ratio",
"min": 0.5,
"max": 1,
"step": 0.1,
"default": 1,
"unit": "Γ",
"info": "Controls how much text shrinks on smaller screens"
},
{
"type": "header",
"content": "Media"
},
{
"type": "image_picker",
"id": "icon_image",
"label": "Icon Image (Optional)",
"info": "Upload an image to use as the icon. This takes precedence over SVG code if both are provided."
},
{
"type": "text",
"id": "icon_image_alt",
"label": "Icon Image Alt Text",
"placeholder": "e.g. Shipping icon"
},
{
"type": "textarea",
"id": "icon_svg",
"label": "SVG Icon Code",
"info": "Paste the inline SVG code here. You can copy icons directly from https://lucide.dev/icons using the 'Copy SVG' button. Make sure the SVG uses 'stroke=\"currentColor\"' or 'fill=\"currentColor\"' so the color setting works."
},
{
"type": "range",
"id": "icon_size",
"label": "Icon Size",
"min": 16,
"max": 200,
"step": 4,
"default": 40,
"unit": "px"
},
{
"type": "range",
"id": "icon_opacity",
"label": "Icon Opacity",
"min": 10,
"max": 100,
"step": 5,
"unit": "%",
"default": 100
},
{
"type": "header",
"content": "Advanced Options"
},
{
"type": "url",
"id": "link",
"label": "Marquee Link",
"info": "Optional link for the entire marquee section"
}
],
"presets": [
{
"name": "BC Marquee"
}
]
}
{% endschema %}