Velo Tutorial: Expand Text with a Read More Link
Visit the Velo by Wix website to onboard and continue learning.
This tutorial describes how to use Velo to let site visitors expand and collapse text with "Read More" and "Read Less" buttons.

Overview
To create Read More / Read Less functionality, we use a multi-state box. Multi-state boxes are great for switching between several views. They contain multiple states with different content, and display one state at a time.
One state in our multi-state box will contain the shorter (collapsed) content and one state will contain the longer (expanded) content. We'll use code to enable site visitors to switch between the 2 states by clicking "Read More" and "Read Less" buttons.
Step 1: Add a Multi-State Box
Add a multi-state box to your page as follows:
- Make sure Velo Dev Mode is enabled.
- Click Add
on the left side of the Editor.
- Click Interactive.
- Drag a multi-state box element on to your page.
You can choose one of the pre-designed multi-state boxes and customize it, or you can add a blank multi-state box and design it from scratch. Note that you can't remove the border from a blank multi-state box.
To remove a border from a multi-state box and blend it in with your page background
Step 2: Rename Your Multi-State Box and State
When you click your multi-state box, you can see the ID (name) of both the multi-state box and the current state. The default ID for our multi-state box is statebox1
and it has a single state, State1
.

You can rename both your multi-state box and your state in the Properties & Events panel. Just click each ID and enter a new name. It's a good idea to give your IDs meaningful names, since you'll be using them in code.

We renamed our multi-state box to readMoreStatebox
and our state to collapsedState
, since this state will have the collapsed version of the text.

Step 3: Add Content to Your Collapsed (Short) State
Now you can add your page content to your state: images, videos, text, or other elements. Make sure the elements fit within the borders of your multi-state box so they'll be attached to the state.
Since this is the collapsed state, add the short version of your text.
Step 4: Add a "Read More" Button
When you're finished setting up your state, do the following:
- Add a transparent button (with no background or border) to your state from the Add panel.
- Change the button text to Read More and match the font type and size to the rest of your text.
- Rename the button ID to
readMoreButton
in the Properties & Events panel. - Append the button to the end of the collapsed text.
Step 5: Duplicate Your State
Now you can duplicate your collapsed state and then adjust it to create the expanded state:
- Click your multi-state box and click Manage States.
- Click Duplicate State. Now you're in the second state of your multi-state box.
Note
You can switch between your states in the Editor by clicking the multi-state box, clicking the dropdown with the state ID (name) and selecting the state you want to edit.
Step 6: Set Up Your Expanded (Long) State
- Rename the state ID to
expandedState
in the Properties & Events panel. - Add the longer text to this state. You can resize the multi-state box if you need by dragging its handles at the edge of the box.
- Change the Read More button text to Read Less.
- Rename the button ID to
readLessButton
in the Properties & Events panel. - Move the button to the end of the longer text.
Step 7: Add Code
Now we need to write code to define when to switch between the collapsed state and expanded state. We use the MultiStateBox API to define when to switch states.
- Open the code panel by clicking the tab at bottom of your Editor with the label <my page name>.
You'll see theonReady()
function (lines 1 & 9 below) in your code panel. Code inside theonReady()
function runs when your page loads. - Add the code in lines 2-8 below to your
onReady()
function so that the code on your page looks like this:
1$w.onReady(function () {
2 $w("#readMoreButton").onClick(() => {
3 $w("#readMoreStatebox").changeState("expandedState");
4 });
5
6 $w("#readLessButton").onClick(() => {
7 $w("#readMoreStatebox").changeState("collapsedState");
8 });
9});
Understanding the Code
- Line 2: When the Read More button is clicked, do the following:
- Line 3: Change the current state of the
readMoreStatebox
multi-state box to theexpandedState
. - Line 6: When the Read Less button is clicked, do the following:
- Line 7: Change the current state of the
readMoreStatebox
multi-state box to thecollapsedState
.
Preview your site to make sure everything is working as expected. Then go ahead and publish.
Did this help?
|