framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
218 lines (214 loc) • 4.72 kB
text/less
/* === Timeline === */
@import './timeline-vars.less';
.timeline {
box-sizing: border-box;
margin: var(--f7-timeline-margin-vertical) 0;
padding: 0 var(--f7-timeline-padding-horizontal);
padding-top: 0;
padding-bottom: 0;
padding-left: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-left));
padding-right: calc(var(--f7-timeline-padding-horizontal) + var(--f7-safe-area-right));
.block-strong & {
padding: 0;
margin: 0;
}
}
.timeline-item {
display: flex;
justify-content: flex-start;
position: relative;
overflow: hidden;
box-sizing: border-box;
position: relative;
padding: 2px 0px var(--f7-timeline-padding-horizontal);
&:last-child {
padding-bottom: 2px;
}
}
.timeline-item-date {
flex-shrink: 0;
width: 50px;
text-align: right;
box-sizing: border-box;
small {
font-size: 10px;
}
}
.timeline-item-content {
margin: 2px;
min-width: 0;
position: relative;
flex-shrink: 10;
.card,
&.card,
.list,
&.list,
.block,
&.block {
margin: 0;
width: 100%;
}
.card,
.list,
.block {
+ .card,
+ .list,
+ .block {
margin: var(--f7-timeline-inner-block-margin-vertical) 0 0;
}
}
p,
ul,
ol,
h1,
h2,
h3,
h4 {
&:first-child {
margin-top: 0;
}
&:last-child {
margin-bottom: 0;
}
}
}
.timeline-item-inner {
background: var(--f7-timeline-item-inner-bg-color);
box-sizing: border-box;
border-radius: var(--f7-timeline-item-inner-border-radius);
padding: 8px var(--f7-timeline-padding-horizontal);
+ .timeline-item-inner {
margin-top: var(--f7-timeline-inner-block-margin-vertical);
}
.block {
padding: 0;
color: inherit;
}
.block-strong {
.hairline-remove-top-bottom();
padding-left: 0;
padding-right: 0;
margin: 0;
}
.list {
ul {
.hairline-remove-top-bottom();
}
}
}
.timeline-item-divider {
width: 1px;
position: relative;
width: 10px;
height: 10px;
background: var(--f7-timeline-divider-color);
border-radius: 50%;
flex-shrink: 0;
margin: 3px var(--f7-timeline-divider-margin-horizontal) 0;
&:after,
&:before {
content: ' ';
width: 1px;
height: 100vh;
position: absolute;
left: 50%;
background: inherit;
transform: translate3d(-50%, 0, 0);
}
&:after {
top: 100%;
}
&:before {
bottom: 100%;
}
.timeline-item:last-child &:after {
display: none;
}
.timeline-item:first-child &:before {
display: none;
}
}
.timeline-item-time {
font-size: var(--f7-timeline-item-time-font-size);
margin-top: var(--f7-timeline-inner-block-margin-vertical);
color: var(--f7-timeline-item-time-text-color);
&:first-child,
&:last-child {
margin-top: 0;
}
.timeline-item-title + & {
margin-top: 0;
}
}
.timeline-item-title {
font-size: var(--f7-timeline-item-title-font-size);
font-weight: var(--f7-timeline-item-title-font-weight);
line-height: var(--f7-timeline-item-title-line-height);
}
.timeline-item-subtitle {
font-size: var(--f7-timeline-item-subtitle-font-size);
font-weight: var(--f7-timeline-item-subtitle-font-weight);
line-height: var(--f7-timeline-item-subtitle-line-height);
}
.timeline-item-text {
color: var(--f7-timeline-item-text-color);
font-size: var(--f7-timeline-item-text-font-size);
font-weight: var(--f7-timeline-item-text-font-weight);
line-height: var(--f7-timeline-item-text-line-height);
}
.timelineItemLeft() {
flex-direction: row-reverse;
.ltr({
margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);
margin-left: 0;
.timeline-item-date {
text-align: left;
}
});
.rtl({
margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);
margin-right: 0;
.timeline-item-date {
text-align: right;
}
});
}
.timelineItemRight() {
.ltr({
margin-left: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);
margin-right: 0;
.timeline-item-date {
text-align: right;
}
});
.rtl({
margin-right: calc(50% - (var(--f7-timeline-divider-margin-horizontal) * 2 + 10px) / 2 - 50px);
margin-left: 0;
.timeline-item-date {
text-align: left;
}
});
}
.timeline-sides {
.timeline-item-right,
.timeline-item {
.timelineItemRight();
}
.timeline-item-left,
.timeline-item:not(.timeline-item-right):nth-child(2n) {
.timelineItemLeft();
}
}
each(@breakpoints, {
@media (min-width:@value) {
.@{key}-sides {
.timeline-sides;
}
}
});
.if-ios-theme({
@import './timeline-ios.less';
});
.if-md-theme({
@import './timeline-md.less';
});