Create line after text with css
Categories:
Creating Stylish Lines After Text with CSS

Learn various CSS techniques to add decorative or functional lines immediately following text elements, enhancing visual hierarchy and design.
Adding a line after text is a common design requirement for visual separation, emphasis, or decorative purposes. While it might seem straightforward, CSS offers several flexible and powerful ways to achieve this, each with its own advantages depending on the specific design context. This article explores different CSS properties and pseudo-elements to create lines after text, from simple underlines to more complex decorative elements.
Using Borders for Simple Lines
The most direct way to add a line after text is by using CSS borders. This method is simple and effective for creating solid, dashed, or dotted lines. You can apply borders to block-level elements or use display: inline-block
for inline elements to control their width and positioning.
.text-with-border {
border-bottom: 1px solid black;
padding-bottom: 2px; /* Adjust spacing */
display: inline-block; /* Allows border to wrap content */
}
.block-text-with-border {
border-bottom: 1px solid #ccc;
padding-bottom: 5px;
margin-bottom: 10px;
}
CSS for adding a bottom border to text.
While borders are excellent for simple, direct lines, they are inherently tied to the element's box model. This means the line will extend the full width of the element if it's a block-level element, or the width of its content if it's inline-block
. For more control over the line's position and appearance relative to the text, pseudo-elements offer greater flexibility.
Leveraging Pseudo-elements (::after
)
Pseudo-elements like ::after
provide a powerful way to insert content (including lines) after an element without adding extra HTML. This method is highly versatile, allowing you to style the line independently of the text, control its width, height, color, and even animate it. It's particularly useful for creating decorative lines that aren't constrained by the text's bounding box.
.text-with-pseudo-line {
position: relative; /* Needed for absolute positioning of ::after */
display: inline-block; /* Or block, depending on desired behavior */
padding-bottom: 5px;
}
.text-with-pseudo-line::after {
content: '';
position: absolute;
left: 0;
bottom: 0;
width: 100%; /* Line spans full width of parent */
height: 2px;
background-color: blue;
}
Using ::after
to create a line under text.
position: absolute
for the ::after
pseudo-element, ensure its parent element has position: relative
to correctly anchor the line's position relative to the text.Advanced Line Styles with Gradients and Transforms
For more visually interesting lines, you can combine pseudo-elements with CSS gradients or transforms. This allows for effects like fading lines, dashed lines with custom patterns, or even angled lines. The ::after
pseudo-element acts as a canvas for these advanced styles.
.text-with-gradient-line {
position: relative;
display: inline-block;
padding-bottom: 10px;
}
.text-with-gradient-line::after {
content: '';
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 3px;
background: linear-gradient(to right, #ff7e5f, #feb47b);
}
.text-with-dashed-line {
position: relative;
display: inline-block;
padding-bottom: 8px;
}
.text-with-dashed-line::after {
content: '';
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 2px;
background: repeating-linear-gradient(to right, black 0 5px, transparent 5px 10px);
}
Examples of lines created with CSS gradients.
flowchart TD A[Start] --> B{Choose Line Style?} B -->|Simple Line| C[Use `border-bottom`] B -->|Customizable Line| D[Use `::after` Pseudo-element] C --> E[Set `display: inline-block` for inline text] D --> F[Set `position: relative` on parent] D --> G[Set `content: ''`, `position: absolute` on `::after`] G --> H{Advanced Styling?} H -->|Yes| I[Apply `background-image` (gradients) or `transform`] H -->|No| J[Set `width`, `height`, `background-color`] E --> K[End] I --> K[End] J --> K[End]
Decision flow for choosing a CSS line-after-text technique.
Practical Considerations and Best Practices
When implementing lines after text, consider the following:
- Semantic HTML: Avoid adding extra
<span>
or<div>
elements solely for styling. Pseudo-elements are generally preferred for purely decorative lines. - Responsiveness: Ensure your lines scale and position correctly across different screen sizes. Using percentages for
width
orleft
properties can help. - Spacing: Use
padding-bottom
on the text element orbottom
property on the::after
pseudo-element to control the vertical spacing between the text and the line. - Browser Compatibility: While modern CSS properties are widely supported, always test your implementation across target browsers, especially for advanced gradient or transform effects.