
When building websites, we often need to display list-based data like "Date: Jan 1st," "Location: NY Hall," or product specifications.
Trying to create these using a standard Rich Text editor often leads to messy indentation, and using HTML Tables (<table>) causes significant layout issues on mobile devices.
This article introduces a Definition List Module that is structurally beautiful, SEO-friendly, and fully responsive. It automatically switches from a side-by-side layout on desktop to a stacked layout on mobile.


The primary purpose of this module is to cleanly organize and display "Label & Content" pairs.
Key Benefits:
<dl>, <dt>, and <dd> tags. This helps search engines (SEO) understand the structure of your content better than using generic <div> tags.This design is highly versatile and perfect for the following scenarios:
Once you implement this code in the Design Manager, here is how marketers or content editors can use it in the Page Editor:
In the module settings panel, you will see the following fields:
Switch to the "Styles" tab (or group) to customize the design without code:
Create a new module in the HubSpot Design Manager and paste the following code into the respective files (fields.json, module.html, module.css).
This defines the module interface. It includes a repeater group for the content items and a separate group for style settings.
[
{
"allow_new_line": false,
"display_width": null,
"id": "6ef51c75-6d87-4d6f-bc68-1beedff13aac",
"label": "title",
"locked": false,
"name": "title",
"required": false,
"type": "text"
},
{
"children": [
{
"allow_new_line": false,
"display_width": null,
"id": "440c75fa-45a0-401b-b719-4fed4bf08a97",
"label": "row_title",
"locked": false,
"name": "row_title",
"required": false,
"type": "text"
},
{
"display_width": null,
"id": "1e3b082c-a362-5dbc-a2b2-6f5b4dde9f52",
"label": "content",
"locked": false,
"name": "content",
"required": false,
"type": "richtext"
}
],
"default": [],
"display_width": null,
"expanded": false,
"group_occurrence_meta": null,
"id": "0fec1fe5-d3c2-131e-595b-989d357cf578",
"label": "items",
"locked": false,
"name": "items",
"occurrence": {},
"required": false,
"tab": "CONTENT",
"type": "group"
},
{
"children": [
{
"default": {
"color": null,
"opacity": null
},
"display_width": null,
"id": "764c03b3-19ad-3234-2a17-9521b1d8b7a3",
"label": "title_color",
"locked": false,
"name": "title_color",
"required": false,
"type": "color"
},
{
"display": "text",
"display_width": null,
"id": "360fd10e-2290-cf85-3c03-fc4797ff6b22",
"label": "title_size",
"locked": false,
"name": "title_size",
"required": false,
"step": 1,
"type": "number"
},
{
"default": {
"color": null,
"opacity": null
},
"display_width": null,
"id": "affa2a09-3769-cf50-8255-910426c8a58e",
"label": "label_color",
"locked": false,
"name": "label_color",
"required": false,
"type": "color"
},
{
"default": {
"color": null,
"opacity": null
},
"display_width": null,
"id": "55c972d5-db0a-1b5d-5d09-f06365a575c8",
"label": "text_color",
"locked": false,
"name": "text_color",
"required": false,
"type": "color"
},
{
"display": "text",
"display_width": null,
"id": "42368473-da19-6609-db94-dbf157f38a84",
"label": "text_size",
"locked": false,
"name": "text_size",
"required": false,
"step": 1,
"type": "number"
},
{
"default": {
"color": null,
"opacity": null
},
"display_width": null,
"id": "35e4dc65-e6ad-4a9a-c491-bddf2339ff38",
"label": "bg_color",
"locked": false,
"name": "bg_color",
"required": false,
"type": "color"
},
{
"default": {
"color": null,
"opacity": null
},
"display_width": null,
"id": "f4b21074-995c-6aee-f577-04dc5055b2cc",
"label": "border_color",
"locked": false,
"name": "border_color",
"required": false,
"type": "color"
},
{
"display": "text",
"display_width": null,
"id": "107200a3-53b1-539c-ead1-5e6efa863794",
"label": "border_size",
"locked": false,
"name": "border_size",
"required": false,
"step": 1,
"type": "number"
}
],
"default": {
"title_color": {
"color": null,
"opacity": null
},
"label_color": {
"color": null,
"opacity": null
},
"text_color": {
"color": null,
"opacity": null
},
"bg_color": {
"color": null,
"opacity": null
},
"border_color": {
"color": null,
"opacity": null
}
},
"display_width": null,
"expanded": false,
"group_occurrence_meta": null,
"id": "04d537c8-1df0-59fe-bb36-052c050d4360",
"label": "styles",
"locked": false,
"name": "styles",
"required": false,
"tab": "CONTENT",
"type": "group"
}
]
{# Assign unique module ID #}
<div id="seminar-{{ module.id }}" class="seminar-module">
{# Title Area #}
{% if module.title %}
<h2 class="seminar-module__title">{{ module.title }}</h2>
{% endif %}
{# List Area #}
<div class="seminar-module__container">
{% for item in module.items %}
<dl class="seminar-module__row">
<dt class="seminar-module__label">{{ item.row_title }}</dt>
<dd class="seminar-module__content">{{ item.content }}</dd>
</dl>
{% endfor %}
</div>
</div>
{# CSS Variables Definition #}
{% require_css %}
<style>
#seminar-{{ module.id }} {
--title-color: {{ module.styles.title_color.css || '#003366' }};
--label-color: {{ module.styles.label_color.css || '#003366' }};
--text-color: {{ module.styles.text_color.css || '#333333' }};
--bg-color: {{ module.styles.bg_color.css || '#f8f8f8' }};
--border-color: {{ module.styles.border_color.css || '#cccccc' }};
--border-size: {{ module.styles.border_size || 1 }}px;
--title-size: {{ module.styles.title_size || 28 }}px;
--text-size: {{ module.styles.text_size || 16 }}px;
}
</style>
{% end_require_css %}
.seminar-module {
width: 100%;
max-width: 960px;
margin: 0 auto;
padding: 20px 0;
box-sizing: border-box;
}
/* Main Title */
.seminar-module__title {
color: var(--title-color);
font-size: var(--title-size);
font-weight: bold;
margin-bottom: 20px;
line-height: 1.4;
}
/* List Container */
.seminar-module__container {
background-color: var(--bg-color);
padding: 30px;
border-radius: 4px;
box-sizing: border-box;
}
/* Individual Row Settings */
.seminar-module__row {
display: flex;
flex-wrap: nowrap; /* Do not wrap on desktop */
align-items: baseline; /* Align text baselines */
border-bottom: var(--border-size) solid var(--border-color);
padding: 20px 0;
margin: 0;
box-sizing: border-box;
}
/* Remove border from the last item */
.seminar-module__row:last-child {
border-bottom: none;
padding-bottom: 0;
}
.seminar-module__row:first-child {
padding-top: 0;
}
/* Left Side: Label */
.seminar-module__label {
/* Width Settings */
width: 20%;
min-width: 120px; /* Minimum width assurance */
/* Style */
color: var(--label-color);
font-weight: bold;
font-size: var(--text-size);
/* Reset and Positioning */
margin: 0;
padding-right: 20px;
box-sizing: border-box;
flex-shrink: 0; /* Prevent shrinking */
}
/* Right Side: Content */
.seminar-module__content {
/* Width Settings */
width: 80%;
flex-grow: 1; /* Fill remaining space */
/* Style */
color: var(--text-color);
font-size: var(--text-size);
line-height: 1.8;
/* Reset */
margin: 0;
box-sizing: border-box;
}
/* Link styling inside rich text */
.seminar-module__content a {
color: #0000EE;
text-decoration: underline;
}
/* --- Mobile Responsiveness (Stack vertically) --- */
@media (max-width: 767px) {
.seminar-module__container {
padding: 20px;
}
.seminar-module__row {
display: block; /* Disable flexbox to stack */
}
.seminar-module__label {
width: 100%;
margin-bottom: 8px;
padding-right: 0;
}
.seminar-module__content {
width: 100%;
}
}No, you do not. As mentioned in the "Styles" section of the article, this module includes built-in style settings. You can intuitively change text colors, background colors, font sizes, border colors, and more using color pickers and numeric inputs directly within the HubSpot page editor.
It automatically switches to a "vertical" (stacked) layout. This module is fully responsive; while it displays the "Item Name" and "Content" side-by-side on wide screens like PCs, the layout changes to stack vertically on narrow screens like smartphones to prioritize readability.
There is no specific limit. Since the "Items" field is configured as a repeating group (repeater), you can add, remove, and reorder as many rows as needed simply by clicking the "Add" button in the page editor.
We can customize this sample to match your specific business requirements.
Book Free ConsultationPut it on Trello!Need a fix for HubSpot, CMS, or GAS? Post it on Trello.
Development Requests Here