<section class="experience">
<h1 class="experience__heading">Experience Timeline</h1>
<ul class="timeline">
	<li class="timeline__item">
		<time class="timeline__time">2016/01/07</time>
		<h3 class="timeline__heading">Heading</h3>
		<p class="timeline__paragraph">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ullamcorper egestas mi, in feugiat eros sagittis at. Nullam non vestibulum dui</p>
	</li>
	<li class="timeline__item">
		<time class="timeline__time">2016/01/07</time>
		<h3 class="timeline__heading">Heading</h3>
		<p class="timeline__paragraph">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ullamcorper egestas mi, in feugiat eros sagittis at. Nullam non vestibulum dui</p>
	</li>
	<li class="timeline__item">
		<time class="timeline__time">2016/01/07</time>
		<h3 class="timeline__heading">Heading</h3>
		<p class="timeline__paragraph">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ullamcorper egestas mi, in feugiat eros sagittis at. Nullam non vestibulum dui</p>
	</li>
	<li class="timeline__item">
		<time class="timeline__time">2016/01/07</time>
		<h3 class="timeline__heading">Heading</h3>
		<p class="timeline__paragraph">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ullamcorper egestas mi, in feugiat eros sagittis at. Nullam non vestibulum dui</p>
	</li>
	<li class="timeline__item">
		<time class="timeline__time">2016/01/07</time>
		<h3 class="timeline__heading">Heading</h3>
		<p class="timeline__paragraph">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus ullamcorper egestas mi, in feugiat eros sagittis at. Nullam non vestibulum dui</p>
	</li>
</ul>
</section>

//Normalize Added

//Variable
$media-lg: 992px
$media-md: 768px
$media-sm: 576px

\:root
	--timelineWidth: calc(var(--timelineItemMaxWidth) * 2 + var(--timelineItemPadding) * 4 + var(--timelineNodeDistance) * 2)
	--timelineProgressWidth: 3px
	--timelineNodeSize: 25px
	--timelineNodeDistance: 2.5rem
	--timelineItemMaxWidth: 300px
	--timelineItemPadding: 1rem
	--timelineItemDistance: 3rem

*, *::before, *::after
	box-sizing: initial

html
	box-sizing: border-box

body
	background: skyblue

ul, ol
	list-style-type: none
	padding: 0
	margin: 0

h1,h2,h3,h4,h5,h6,p
	margin: 0

a
	text-decoration: none

.experience
	display: flex
	justify-content: center
	flex-direction: column
	align-items: center

.experience__heading
	padding: 8rem 0

.timeline
	position: relative
	padding: 4rem 0

	&::before
		content: ''
		position: absolute
		width: var(--timelineProgressWidth)
		height: 100%
		background: gray
		top: 0
		left: 0
		margin-left: calc(var(--timelineNodeDistance) * -1)
		transform: translate(-50%)
		z-index: -1

.timeline__item
	position: relative
	background: white
	padding: var(--timelineItemPadding)
	margin-bottom: var(--timelineItemDistance)
	max-width: var(--timelineItemMaxWidth)
	border-radius: 10px

	&::before
		content: ""
		position: absolute
		top: 0
		left: 0
		width: var(--timelineNodeSize)
		height: var(--timelineNodeSize)
		margin-left: calc(var(--timelineNodeDistance) * -1)
		transform: translate(-50%, -50%)
		background: orange
		border-radius: 50%

.timeline__time
	color: gray
	
.timeline__heading
	font-size: 2rem
	line-height: 1.7
	
.timeline__paragraph
	
@media (min-width: $media-md)
	.timeline
		width: var(--timelineWidth)
		display: flex
		align-items: center
		justify-content: center
		flex-direction: column
		
		&::before
			transform: none
			left: auto
			margin: 0
	
	.timeline__item
		left: 50%
		transform: translate(-50%)
	
		&:nth-child(even)
			left: -50%
			transform: translate(50%)
	
			&::before
				left: auto
				right: 0
				transform: none
				transform: translate(50%, -50%)
				margin-right: calc(var(--timelineNodeDistance) * -1)

View Compiled
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.