JSFiddle - React, Tailwind, and code Playground
by Abdul Ahmad
HTML
<div class='page-section'>
<div class='page-width'>
<div class='page-section--empty-space'>
</div>
<h1 class='section-title'>
Panel Section
</h1>
<div class='panels'>
<div class='panel left'>
</div>
<div class='panel right'>
</div>
</div>
<div class='page-section--empty-space'>
</div>
</div>
</div>
<div class='page-section'>
<div class='page-width'>
<div class='page-section--empty-space'>
</div>
<h1 class='section-title'>
Carousel + buttons fit inside width
</h1>
<div class='carousel'>
<div class='button'>
</div>
<div class='panel content'>
</div>
<div class='button'>
</div>
</div>
<div class='page-section--empty-space'>
</div>
</div>
</div>
<div class='page-section'>
<div class='page-width'>
<div class='page-section--empty-space'>
</div>
<h1 class='section-title'>
Carousel content fit inside width - buttons outside
</h1>
<div class='carousel-v-2'>
<div class='button left'>
</div>
<div class='panel content'>
</div>
<div class='button right'>
</div>
</div>
<div class='page-section--empty-space'>
</div>
</div>
</div>
<div class='page-section'>
<div class='page-width'>
<div class='page-section--empty-space'>
</div>
<div class='page-section--empty-space'>
</div>
<h1 class='section-title'>
Meet the team
</h1>
</div>
<div class='horizontal-scroll'>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
<div class='card'>
</div>
...
SCSS
body {
font-family: Helvetica;
margin: 0;
}
.page-section {
box-sizing: border-box;
}
.page-section--empty-space {
height: 100px;
}
.page-width {
max-width: 1200px;
margin: 0 auto;
border-right: 1px dashed #ddd;
border-left: 1px dashed #ddd;
height: 100%;
&.carousel-container {
max-width: calc(1200px + 40px + 120px);
}
}
.section-title {
margin: 0;
margin-bottom: 40px;
}
.panels {
display: flex;
}
.panel {
border-radius: 10px;
border: 1px solid #ddd;
height: 300px;
}
.left {
width: 300px;
margin-right: 20px;
}
.right {
flex-grow: 1;
flex-shrink: 1;
}
.carousel {
display: flex;
align-items: center;
.button {
width: 40px;
height: 40px;
border-radius: 100%;
border: 1px solid #ddd;
}
.content {
flex-grow: 1;
height: 300px;
margin-right: 20px;
margin-left: 20px;
}
}
.carousel-v-2 {
display: block;
position: relative;
.content {
margin: 0;
}
.button {
width: 40px;
height: 40px;
border-radius: 100%;
border: 1px solid #ddd;
position: absolute;
top: calc(50% - 20px);
&.right {
left: -40px;
margin-left: -20px;
}
&.left {
right: -40px;
margin-right: -20px;
}
}
}
.horizontal-scroll {
overflow-x: auto;
white-space: nowrap;
border: 1px dashed #ddd;
width: 100%;
}
.card {
display: inline-block;
vertical-align: middle;
width: 200px;
height: 200px;
border-radius: 10px;
margin-left: 30px;
border: 1px solid #ddd;
&:last-child {
margin-right: 30px;
}
}