Horizontal in React Card component
7 Oct 202513 minutes to read
By default, all card elements are aligned vertically in a stacked layout following the natural DOM flow. The horizontal layout provides an alternative arrangement where card elements are positioned side-by-side, creating a more compact and visually engaging presentation for content that benefits from lateral organization.
To achieve horizontal alignment, add the e-card-horizontal
class to the root card element. This transforms the default vertical layout into a horizontal arrangement where child elements flow from left to right.
Stacked cards
- An horizontally aligned card can push a specific column to align vertical using
e-card-stacked
class.
This will align the stacked section vertically aligned differentiating from horizontal layout.
Class | Description |
---|---|
e-card-horizontal |
Aligns card elements horizontally in a side-by-side layout. |
e-card-stacked |
Forces vertical alignment for specific sections within a horizontal layout. |
<div className="e-card e-card-horizontal">
<img src="code1.png" alt="Sample"> --> Aligned horizontally
<div className="e-card-stacked"> --> Horizontal container
// Inside this element, all content flows vertically
</div>
</div>
[Class-component]
import * as React from "react";
import * as ReactDOM from "react-dom";
export default class ReactApp extends React.Component {
render() {
return (<div style={{ margin: `50px`, display: `flex`, flexDirection: `row`, justifyContent: `center` }}>
<div className="e-card e-card-horizontal" style={{ width: `400px` }}>
<img src="./Code.png" alt="Sample" style={{ height: `180px` }}/>
<div className="e-card-stacked">
<div className="e-card-header">
<div className="e-card-header-caption">
<div className="e-card-header-title">Philips Trimmer</div>
</div>
</div>
<div className="e-card-content">
Powered by the innovative DuraPower Technology which optimizes power consumption, Philips trimmers are designed to last longer
than 4 ordinary trimmers.
</div>
</div>
</div>
</div>);
}
}
ReactDOM.render(<ReactApp />, document.getElementById("element"));
import * as React from "react";
import * as ReactDOM from "react-dom";
export default class ReactApp extends React.Component<{}, {}> {
public render() {
return (
<div style={{ margin: `50px`, display: `flex`, flexDirection: `row`, justifyContent: `center` }}>
<div className="e-card e-card-horizontal" style={{ width: `400px` }}>
<img src="./Code.png" alt="Sample" style={{ height: `180px` }}/>
<div className="e-card-stacked">
<div className="e-card-header">
<div className="e-card-header-caption">
<div className="e-card-header-title">Philips Trimmer</div>
</div>
</div>
<div className="e-card-content">
Powered by the innovative DuraPower Technology which optimizes power consumption, Philips trimmers are designed to last longer
than 4 ordinary trimmers.
</div>
</div>
</div>
</div>
);
}
}
ReactDOM.render(<ReactApp />, document.getElementById("element"));
<!DOCTYPE html>
<html lang="en">
<head>
<title>Syncfusion React Card Sample</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Essential JS 2 for React Components" />
<meta name="author" content="Syncfusion" />
<link href="https://cdn.syncfusion.com/ej2/31.1.17/ej2-layouts/styles/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='element'>
<div id='loader'>Loading....</div>
</div>
</body>
</html>
[Functional-component]
import * as React from "react";
import * as ReactDOM from "react-dom";
function ReactApp() {
return (<div style={{ margin: `50px`, display: `flex`, flexDirection: `row`, justifyContent: `center` }}>
<div className="e-card e-card-horizontal" style={{ width: `400px` }}>
<img src="./Code.png" alt="Sample" style={{ height: `180px` }}/>
<div className="e-card-stacked">
<div className="e-card-header">
<div className="e-card-header-caption">
<div className="e-card-header-title">Philips Trimmer</div>
</div>
</div>
<div className="e-card-content">
Powered by the innovative DuraPower Technology which optimizes power consumption, Philips trimmers are designed to last longer
than 4 ordinary trimmers.
</div>
</div>
</div>
</div>);
}
ReactDOM.render(<ReactApp />, document.getElementById("element"));
import * as React from "react";
import * as ReactDOM from "react-dom";
function ReactApp (){
return (
<div style={{ margin: `50px`, display: `flex`, flexDirection: `row`, justifyContent: `center` }}>
<div className="e-card e-card-horizontal" style={{ width: `400px` }}>
<img src="./Code.png" alt="Sample" style={{ height: `180px` }}/>
<div className="e-card-stacked">
<div className="e-card-header">
<div className="e-card-header-caption">
<div className="e-card-header-title">Philips Trimmer</div>
</div>
</div>
<div className="e-card-content">
Powered by the innovative DuraPower Technology which optimizes power consumption, Philips trimmers are designed to last longer
than 4 ordinary trimmers.
</div>
</div>
</div>
</div>
);
}
ReactDOM.render(<ReactApp />, document.getElementById("element"));
<!DOCTYPE html>
<html lang="en">
<head>
<title>Syncfusion React Card Sample</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Essential JS 2 for React Components" />
<meta name="author" content="Syncfusion" />
<link href="https://cdn.syncfusion.com/ej2/31.1.17/ej2-layouts/styles/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='element'>
<div id='loader'>Loading....</div>
</div>
</body>
</html>