Рассмотрим один из вариантов стилизации вертикального таймлайна как показано на картинке. Он является адаптивным, на мобильных устройствах элементы выстраиваются в одну колонку.
HTML код:
<div class="timeline">
<div class="item">
<div class="icon">1</div>
<div class="content">
<h4>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h4>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae at rerum ut amet blanditiis. Deserunt quisquam veritatis amet natus sint. Ab facilis ex recusandae earum magnam sapiente dicta, modi deserunt?</p>
</div>
</div>
<div class="item">
<div class="icon">2</div>
<div class="content">
<h4>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h4>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae at rerum ut amet blanditiis. Deserunt quisquam veritatis amet natus sint. Ab facilis ex recusandae earum magnam sapiente dicta, modi deserunt?</p>
</div>
</div>
<div class="item">
<div class="icon">3</div>
<div class="content">
<h4>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h4>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae at rerum ut amet blanditiis. Deserunt quisquam veritatis amet natus sint. Ab facilis ex recusandae earum magnam sapiente dicta, modi deserunt?</p>
</div>
</div>
</div>
CSS код:
*{
font-family: Arial, Helvetica, sans-serif;
}
.timeline *,
.timeline *:before,
.timeline *:after {
box-sizing: border-box;
}
.timeline {
max-width: 1000px;
width: 96%;
margin: 30px auto;
position: relative;
padding: 0 10px;
}
.timeline:before {
content: "";
width: 3px;
height: 100%;
background: #737575;
left: 50%;
top: 0;
position: absolute;
}
.timeline:after {
content: "";
clear: both;
display: table;
width: 100%;
}
.timeline .item {
margin-bottom: 20px;
position: relative;
}
.timeline .item:after,
.timeline .item:before {
content: '';
display: block;
width: 100%;
clear: both;
}
.timeline .item .icon {
background: #737575;
color: #FFF;
text-align: center;
font-size: 24px;
line-height: 50px;
width: 50px;
height: 50px;
position: absolute;
top: 0;
left: 50%;
overflow: hidden;
margin-left: -23px;
border-radius: 50%;
}
.timeline .item .content {
width: 45%;
background: #fff;
padding: 20px;
box-shadow: 0 2px 5px rgba(0,0,0,0.2), 0 4px 10px rgba(0,0,0,0.2);
border-radius: 3px;
}
.timeline .item .content h4 {
padding: 15px;
background: #737575;
color: #fff;
margin: -20px -20px 0px -20px;
font-weight: 300;
border-radius: 3px 3px 0px 0px;
}
.timeline .item .content:before {
content: '';
position: absolute;
left: 45%;
top: 20px;
width: 0;
height: 0;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
border-left: 7px solid #737575;
}
.timeline .item:nth-child(even) .content {
float: right;
}
.timeline .item:nth-child(even) .content:before {
content: '';
right: 45%;
left: inherit;
border-left: 0;
border-right: 7px solid #737575;
}
@media screen and (max-width: 768px) {
.timeline {
margin: 30px;
padding: 0px;
width: 90%;
}
.timeline:before {
left: 0;
}
.timeline .item .content {
width: 90%;
float: right;
}
.timeline .item .content:before,
.timeline .item:nth-child(even) .content:before {
left: 10%;
margin-left: -6px;
border-left: 0;
border-right: 7px solid #737575;
}
.timeline .item .icon {
left: 0;
}
}
Получим следующий результат:
<style>
*{
font-family: Arial, Helvetica, sans-serif;
}
.timeline *,
.timeline *:before,
.timeline *:after {
box-sizing: border-box;
}
.timeline {
max-width: 1000px;
width: 96%;
margin: 30px auto;
position: relative;
padding: 0 10px;
}
.timeline:before {
content: "";
width: 3px;
height: 100%;
background: #737575;
left: 50%;
top: 0;
position: absolute;
}
.timeline:after {
content: "";
clear: both;
display: table;
width: 100%;
}
.timeline .item {
margin-bottom: 20px;
position: relative;
}
.timeline .item:after,
.timeline .item:before {
content: '';
display: block;
width: 100%;
clear: both;
}
.timeline .item .icon {
background: #737575;
color: #FFF;
text-align: center;
font-size: 24px;
line-height: 50px;
width: 50px;
height: 50px;
position: absolute;
top: 0;
left: 50%;
overflow: hidden;
margin-left: -23px;
border-radius: 50%;
}
.timeline .item .content {
width: 45%;
background: #fff;
padding: 20px;
box-shadow: 0 2px 5px rgba(0,0,0,0.2), 0 4px 10px rgba(0,0,0,0.2);
border-radius: 3px;
}
.timeline .item .content h4 {
padding: 15px;
background: #737575;
color: #fff;
margin: -20px -20px 0px -20px;
font-weight: 300;
border-radius: 3px 3px 0px 0px;
}
.timeline .item .content:before {
content: '';
position: absolute;
left: 45%;
top: 20px;
width: 0;
height: 0;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
border-left: 7px solid #737575;
}
.timeline .item:nth-child(even) .content {
float: right;
}
.timeline .item:nth-child(even) .content:before {
content: '';
right: 45%;
left: inherit;
border-left: 0;
border-right: 7px solid #737575;
}
@media screen and (max-width: 768px) {
.timeline {
margin: 30px;
padding: 0px;
width: 90%;
}
.timeline:before {
left: 0;
}
.timeline .item .content {
width: 90%;
float: right;
}
.timeline .item .content:before,
.timeline .item:nth-child(even) .content:before {
left: 10%;
margin-left: -6px;
border-left: 0;
border-right: 7px solid #737575;
}
.timeline .item .icon {
left: 0;
}
}
</style>
<div class="timeline">
<div class="item">
<div class="icon">1</div>
<div class="content">
<h4>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h4>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae at rerum ut amet blanditiis. Deserunt quisquam veritatis amet natus sint. Ab facilis ex recusandae earum magnam sapiente dicta, modi deserunt?</p>
</div>
</div>
<div class="item">
<div class="icon">2</div>
<div class="content">
<h4>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h4>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae at rerum ut amet blanditiis. Deserunt quisquam veritatis amet natus sint. Ab facilis ex recusandae earum magnam sapiente dicta, modi deserunt?</p>
</div>
</div>
<div class="item">
<div class="icon">3</div>
<div class="content">
<h4>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h4>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vitae at rerum ut amet blanditiis. Deserunt quisquam veritatis amet natus sint. Ab facilis ex recusandae earum magnam sapiente dicta, modi deserunt?</p>
</div>
</div>
</div>