You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
460 lines
7.9 KiB
460 lines
7.9 KiB
3 years ago
|
/* ------------------------------------------------------------------------------
|
||
|
*
|
||
|
* # Timeline
|
||
|
*
|
||
|
* Styles for timeline in 3 layouts: left, right and centered
|
||
|
*
|
||
|
* Version: 1.1
|
||
|
* Latest update: Dec 11, 2015
|
||
|
*
|
||
|
* ---------------------------------------------------------------------------- */
|
||
|
|
||
|
|
||
|
// Base
|
||
|
// ------------------------------
|
||
|
|
||
|
.timeline {
|
||
|
position: relative;
|
||
|
height: 100%;
|
||
|
|
||
|
&:before,
|
||
|
&:after {
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 50%;
|
||
|
margin-left: -(@timeline-line-width);
|
||
|
background-color: @timeline-line-color;
|
||
|
height: (@timeline-line-width * 2);
|
||
|
width: (@timeline-line-width * 2);
|
||
|
border-radius: 50%;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
top: auto;
|
||
|
bottom: 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Container
|
||
|
// ------------------------------
|
||
|
|
||
|
.timeline-container {
|
||
|
position: relative;
|
||
|
padding-top: (@line-height-computed / 2);
|
||
|
margin-top: -(@line-height-computed / 2);
|
||
|
padding-bottom: 1px;
|
||
|
|
||
|
&:after {
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 50%;
|
||
|
margin-left: -(@timeline-line-width / 2);
|
||
|
background-color: @timeline-line-color;
|
||
|
height: 100%;
|
||
|
width: @timeline-line-width;
|
||
|
z-index: -1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Content
|
||
|
// ------------------------------
|
||
|
|
||
|
// Row
|
||
|
.timeline-row {
|
||
|
position: relative;
|
||
|
}
|
||
|
|
||
|
// Content
|
||
|
.timeline-content {
|
||
|
margin-bottom: @line-height-computed;
|
||
|
}
|
||
|
|
||
|
|
||
|
// Date
|
||
|
// ------------------------------
|
||
|
|
||
|
.timeline-date {
|
||
|
text-align: center;
|
||
|
background-color: @body-bg;
|
||
|
position: relative;
|
||
|
z-index: 1;
|
||
|
padding-top: @line-height-computed;
|
||
|
padding-bottom: @line-height-computed;
|
||
|
margin-bottom: @line-height-computed;
|
||
|
|
||
|
&:before,
|
||
|
&:after {
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 50%;
|
||
|
margin-left: -(@timeline-line-width);
|
||
|
background-color: @timeline-line-color;
|
||
|
height: (@timeline-line-width * 2);
|
||
|
width: (@timeline-line-width * 2);
|
||
|
border-radius: 50%;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
top: auto;
|
||
|
bottom: 0;
|
||
|
}
|
||
|
|
||
|
.panel & {
|
||
|
background-color: @panel-bg;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Time
|
||
|
// ------------------------------
|
||
|
|
||
|
.timeline-time {
|
||
|
text-align: center;
|
||
|
padding-top: @line-height-computed;
|
||
|
padding-bottom: @line-height-computed;
|
||
|
background-color: @body-bg;
|
||
|
position: relative;
|
||
|
margin-bottom: @line-height-computed;
|
||
|
|
||
|
&:before,
|
||
|
&:after {
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 50%;
|
||
|
margin-left: -(@timeline-line-width);
|
||
|
background-color: @timeline-line-color;
|
||
|
height: (@timeline-line-width * 2);
|
||
|
width: (@timeline-line-width * 2);
|
||
|
border-radius: 50%;
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
top: auto;
|
||
|
bottom: 0;
|
||
|
}
|
||
|
|
||
|
.panel & {
|
||
|
background-color: @panel-bg;
|
||
|
}
|
||
|
|
||
|
span {
|
||
|
display: block;
|
||
|
color: @text-muted;
|
||
|
font-size: @font-size-small;
|
||
|
|
||
|
&:before {
|
||
|
content: '•';
|
||
|
display: inline-block;
|
||
|
margin-right: 5px;
|
||
|
position: relative;
|
||
|
top: 1px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@media (min-width: @screen-md) {
|
||
|
&:before,
|
||
|
&:after {
|
||
|
content: none;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Icon and image
|
||
|
// ------------------------------
|
||
|
|
||
|
.timeline-icon {
|
||
|
width: @timeline-icon-size;
|
||
|
height: @timeline-icon-size;
|
||
|
border-radius: 50%;
|
||
|
margin: 0 auto @line-height-computed auto;
|
||
|
background-color: #fff;
|
||
|
border: @timeline-icon-border-width solid @body-bg;
|
||
|
|
||
|
.panel & {
|
||
|
border-color: @panel-bg;
|
||
|
}
|
||
|
|
||
|
// Icon
|
||
|
div {
|
||
|
border-radius: 50%;
|
||
|
height: 100%;
|
||
|
.box-shadow(0 0 0 2px @timeline-line-color inset);
|
||
|
|
||
|
&[class*=bg-] {
|
||
|
.box-shadow(none);
|
||
|
}
|
||
|
|
||
|
> i {
|
||
|
display: block;
|
||
|
line-height: (@timeline-icon-size - (@timeline-icon-border-width * 2));
|
||
|
top: 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Image
|
||
|
img {
|
||
|
width: (@timeline-icon-size - (@timeline-icon-border-width * 2));
|
||
|
height: (@timeline-icon-size - (@timeline-icon-border-width * 2));
|
||
|
border-radius: 50%;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
@media (min-width: @screen-md) {
|
||
|
|
||
|
// Positions
|
||
|
// ------------------------------
|
||
|
|
||
|
// Center layout
|
||
|
.timeline-center {
|
||
|
|
||
|
// Row
|
||
|
.timeline-row {
|
||
|
margin-right: 50%;
|
||
|
padding-right: (@timeline-icon-size - @timeline-icon-border-width);
|
||
|
}
|
||
|
|
||
|
// Even post
|
||
|
.post-even {
|
||
|
margin-right: 0;
|
||
|
padding-right: 0;
|
||
|
margin-left: 50%;
|
||
|
padding-left: (@timeline-icon-size - @timeline-icon-border-width);
|
||
|
}
|
||
|
|
||
|
// Full width post
|
||
|
.post-full {
|
||
|
margin: 0;
|
||
|
padding: 0;
|
||
|
|
||
|
.timeline-content {
|
||
|
position: relative;
|
||
|
|
||
|
&:before,
|
||
|
&:after {
|
||
|
content: '';
|
||
|
border-style: solid;
|
||
|
border-color: @body-bg;
|
||
|
display: block;
|
||
|
position: absolute;
|
||
|
left: 0;
|
||
|
right: 0;
|
||
|
}
|
||
|
|
||
|
&:before {
|
||
|
border-width: @timeline-icon-border-width 0 0 0;
|
||
|
top: -(@timeline-icon-border-width + 1);
|
||
|
}
|
||
|
|
||
|
&:after {
|
||
|
border-width: 0 0 @timeline-icon-border-width 0;
|
||
|
bottom: -(@timeline-icon-border-width + 1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Left layout
|
||
|
.timeline-left {
|
||
|
|
||
|
// Vertical line
|
||
|
.timeline-container:after,
|
||
|
&:before,
|
||
|
&:after,
|
||
|
.timeline-date:before,
|
||
|
.timeline-date:after {
|
||
|
left: (@timeline-icon-size / 2);
|
||
|
}
|
||
|
|
||
|
// Content padding
|
||
|
.timeline-row,
|
||
|
.timeline-date {
|
||
|
padding-left: (@timeline-icon-size + @line-height-computed);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Right layout
|
||
|
.timeline-right {
|
||
|
|
||
|
// Vertical line
|
||
|
.timeline-container:after,
|
||
|
&:before,
|
||
|
&:after,
|
||
|
.timeline-date:before,
|
||
|
.timeline-date:after {
|
||
|
left: auto;
|
||
|
right: (@timeline-icon-size / 2);
|
||
|
margin-left: 0;
|
||
|
margin-right: -(@timeline-line-width);
|
||
|
}
|
||
|
.timeline-container:after {
|
||
|
margin-right: -(@timeline-line-width / 2);
|
||
|
}
|
||
|
|
||
|
// Content padding
|
||
|
.timeline-row,
|
||
|
.timeline-date {
|
||
|
padding-right: (@timeline-icon-size + @line-height-computed);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Reduce date vertical spacing in both
|
||
|
.timeline-left .timeline-date,
|
||
|
.timeline-right .timeline-date {
|
||
|
padding-top: (@line-height-computed / 2);
|
||
|
padding-bottom: (@line-height-computed / 2);
|
||
|
}
|
||
|
|
||
|
|
||
|
// Icon
|
||
|
// ------------------------------
|
||
|
|
||
|
// Base
|
||
|
.timeline-icon {
|
||
|
position: absolute;
|
||
|
top: (@line-height-computed / 2);
|
||
|
|
||
|
&:after {
|
||
|
content: "";
|
||
|
position: absolute;
|
||
|
top: 50%;
|
||
|
margin-top: -(@timeline-line-width / 2);
|
||
|
height: @timeline-line-width;
|
||
|
width: ((@timeline-icon-size / 2) - (@timeline-icon-border-width * 2));
|
||
|
background-color: @timeline-line-color;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// In left layout
|
||
|
.timeline-left {
|
||
|
.timeline-icon {
|
||
|
left: 0;
|
||
|
|
||
|
&:after {
|
||
|
left: 100%;
|
||
|
margin-left: @timeline-icon-border-width;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// In right layout
|
||
|
.timeline-right {
|
||
|
.timeline-icon {
|
||
|
right: 0;
|
||
|
|
||
|
&:after {
|
||
|
right: 100%;
|
||
|
margin-right: @timeline-icon-border-width;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// In centered layout
|
||
|
.timeline-center {
|
||
|
|
||
|
// Row
|
||
|
.timeline-row {
|
||
|
&:not(.post-full) .timeline-icon {
|
||
|
left: 100%;
|
||
|
margin-left: -(@timeline-icon-size / 2);
|
||
|
}
|
||
|
|
||
|
&.post-even .timeline-icon {
|
||
|
left: auto;
|
||
|
right: 100%;
|
||
|
margin-left: 0;
|
||
|
margin-right: -(@timeline-icon-size / 2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Left horizontal line
|
||
|
.timeline-icon:after {
|
||
|
right: 100%;
|
||
|
margin-right: @timeline-icon-border-width;
|
||
|
}
|
||
|
|
||
|
// Right horizontal line
|
||
|
.post-even .timeline-icon:after {
|
||
|
left: 100%;
|
||
|
margin-left: @timeline-icon-border-width;
|
||
|
}
|
||
|
|
||
|
// Full width post
|
||
|
.post-full .timeline-icon {
|
||
|
position: static;
|
||
|
|
||
|
&:after {
|
||
|
content: none;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Time
|
||
|
// ------------------------------
|
||
|
|
||
|
.timeline-time {
|
||
|
padding: 0;
|
||
|
text-align: inherit;
|
||
|
background-color: transparent;
|
||
|
|
||
|
&:before {
|
||
|
content: none;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// In left and right layouts
|
||
|
.timeline-left,
|
||
|
.timeline-right {
|
||
|
.timeline-time {
|
||
|
padding-top: (@line-height-computed / 2);
|
||
|
margin-bottom: (@line-height-computed);
|
||
|
padding-left: (@line-height-computed / 2);
|
||
|
}
|
||
|
}
|
||
|
.timeline-right .timeline-time {
|
||
|
text-align: right;
|
||
|
padding-left: 0;
|
||
|
padding-right: (@line-height-computed / 2);
|
||
|
}
|
||
|
|
||
|
// In center layout
|
||
|
.timeline-center {
|
||
|
.timeline-time,
|
||
|
.post-full .timeline-time {
|
||
|
position: absolute;
|
||
|
left: 100%;
|
||
|
top: ((@line-height-computed / 2) + 5);
|
||
|
width: 100%;
|
||
|
padding-left: (@timeline-icon-size - @timeline-icon-border-width);
|
||
|
}
|
||
|
|
||
|
.post-even,
|
||
|
.post-full {
|
||
|
.timeline-time {
|
||
|
left: auto;
|
||
|
right: 100%;
|
||
|
padding-left: 0;
|
||
|
padding-right: (@timeline-icon-size - @timeline-icon-border-width);
|
||
|
text-align: right;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.post-full .timeline-time {
|
||
|
right: 50%;
|
||
|
top: ((@line-height-computed / 2) - 5);
|
||
|
}
|
||
|
}
|
||
|
}
|