建立水平时间线 - 项目错位
Building a horizontal timeline - items are misaligning
从这个 Plnkr 中可以看出,我正在尝试构建一个简单的水平时间轴。当其中一个元素文本跨越多行或根本不包含任何文本时,就会出现问题(请参阅 plnkr 中的第二个时间线)。在那种情况下,时间线看起来就坏了。
如何调整此时间线 css 以便无论文本元素的长度如何,该线始终保持笔直?
我现在的html
<link href='https://fonts.googleapis.com/css?family=Titillium+Web:400,200,300,600,700' rel='stylesheet' type='text/css'>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<button id="toggleButton">Toggle</button>
<ul class="timeline" id="timeline">
<li class="li complete">
<div class="timestamp">
<span class="author">Abhi Sharma</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Shift Created </h4>
</div>
</li>
<li class="li complete">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4></h4>
</div>
</li>
<li class="li">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">TBD<span>
</div>
<div class="status">
<h4> Shift Completed</h4>
</div>
</li>
</ul>
我的css
.timeline
list-style-type: none
display: flex
align-items: center
justify-content: center
.li
transition: all 200ms ease-in
.timestamp
margin-bottom: 20px
padding: 0px 40px
display: flex
flex-direction: column
align-items: center
font-weight: 100
.status
padding: 0px 40px
display: flex
justify-content: center
border-top: 2px solid #D6DCE0
position: relative
transition: all 200ms ease-in
h4
font-weight: 600
&:before
content: ''
width: 25px
height: 25px
background-color: white
border-radius: 25px
border: 1px solid #ddd
position: absolute
top: -15px
left: 42%
transition: all 200ms ease-in
.li.complete
.status
border-top: 2px solid #66DC71
&:before
background-color: #66DC71
border: none
transition: all 200ms ease-in
h4
color: #66DC71
/// Layout stuff
html,body
font-family: 'Titillium Web', sans serif
color: #758D96
button
position: absolute
width: 100px
min-width: 100px
padding: 20px
margin: 20px
font-family: 'Titillium Web', sans serif
border: none
color: white
font-size: 16px
text-align: center
#toggleButton
position: absolute
left: 50px
top: 20px
background-color: #75C7F6
删除对齐项:从 .timeline 居中。
同时添加
.author {
white-space: nowrap;
}
var completes = document.querySelectorAll(".complete");
var toggleButton = document.getElementById("toggleButton");
function toggleComplete() {
var lastComplete = completes[completes.length - 1];
lastComplete.classList.toggle('complete');
}
toggleButton.onclick = toggleComplete;
.timeline {
list-style-type: none;
display: flex;
justify-content: center;
}
.li {
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.timestamp {
margin-bottom: 20px;
padding: 0px 40px;
display: flex;
flex-direction: column;
align-items: center;
font-weight: 100;
}
.status {
padding: 0px 40px;
display: flex;
justify-content: center;
border-top: 2px solid #D6DCE0;
position: relative;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.status h4 {
font-weight: 600;
}
.status:before {
content: "";
width: 25px;
height: 25px;
background-color: white;
border-radius: 25px;
border: 1px solid #ddd;
position: absolute;
top: -15px;
left: 42%;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.li.complete .status {
border-top: 2px solid #66DC71;
}
.li.complete .status:before {
background-color: #66DC71;
border: none;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.li.complete .status h4 {
color: #66DC71;
}
@media (min-device-width: 320px) and (max-device-width: 700px) {
.timeline {
list-style-type: none;
display: block;
}
.li {
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
display: flex;
width: inherit;
}
.timestamp {
width: 100px;
}
.status:before {
left: -8%;
top: 30%;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
}
html,
body {
font-family: "Titillium Web", sans serif;
color: #758D96;
}
button {
position: absolute;
width: 100px;
min-width: 100px;
padding: 20px;
margin: 20px;
font-family: "Titillium Web", sans serif;
border: none;
color: white;
font-size: 16px;
text-align: center;
}
#toggleButton {
position: absolute;
left: 50px;
top: 20px;
background-color: #75C7F6;
}
.author {
white-space: nowrap;
}
<link href='https://fonts.googleapis.com/css?family=Titillium+Web:400,200,300,600,700' rel='stylesheet' type='text/css'>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<button id="toggleButton">Toggle</button>
<ul class="timeline" id="timeline">
<li class="li complete">
<div class="timestamp">
<span class="author">Abhi Sharma</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Shift Created </h4>
</div>
</li>
<li class="li complete">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Email Sent </h4>
</div>
</li>
<li class="li">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">TBD<span>
</div>
<div class="status">
<h4> Shift Completed </h4>
</div>
</li>
</ul>
<ul class="timeline" id="timeline">
<li class="li complete">
<div class="timestamp">
<span class="author">Abhi Sharma</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Shift Created </h4>
</div>
</li>
<li class="li complete">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4></h4>
</div>
</li>
<li class="li">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">TBD<span>
</div>
<div class="status">
<h4> Shift Completed</h4>
</div>
</li>
</ul>
从这个 Plnkr 中可以看出,我正在尝试构建一个简单的水平时间轴。当其中一个元素文本跨越多行或根本不包含任何文本时,就会出现问题(请参阅 plnkr 中的第二个时间线)。在那种情况下,时间线看起来就坏了。
如何调整此时间线 css 以便无论文本元素的长度如何,该线始终保持笔直?
我现在的html
<link href='https://fonts.googleapis.com/css?family=Titillium+Web:400,200,300,600,700' rel='stylesheet' type='text/css'>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<button id="toggleButton">Toggle</button>
<ul class="timeline" id="timeline">
<li class="li complete">
<div class="timestamp">
<span class="author">Abhi Sharma</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Shift Created </h4>
</div>
</li>
<li class="li complete">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4></h4>
</div>
</li>
<li class="li">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">TBD<span>
</div>
<div class="status">
<h4> Shift Completed</h4>
</div>
</li>
</ul>
我的css
.timeline
list-style-type: none
display: flex
align-items: center
justify-content: center
.li
transition: all 200ms ease-in
.timestamp
margin-bottom: 20px
padding: 0px 40px
display: flex
flex-direction: column
align-items: center
font-weight: 100
.status
padding: 0px 40px
display: flex
justify-content: center
border-top: 2px solid #D6DCE0
position: relative
transition: all 200ms ease-in
h4
font-weight: 600
&:before
content: ''
width: 25px
height: 25px
background-color: white
border-radius: 25px
border: 1px solid #ddd
position: absolute
top: -15px
left: 42%
transition: all 200ms ease-in
.li.complete
.status
border-top: 2px solid #66DC71
&:before
background-color: #66DC71
border: none
transition: all 200ms ease-in
h4
color: #66DC71
/// Layout stuff
html,body
font-family: 'Titillium Web', sans serif
color: #758D96
button
position: absolute
width: 100px
min-width: 100px
padding: 20px
margin: 20px
font-family: 'Titillium Web', sans serif
border: none
color: white
font-size: 16px
text-align: center
#toggleButton
position: absolute
left: 50px
top: 20px
background-color: #75C7F6
删除对齐项:从 .timeline 居中。
同时添加
.author {
white-space: nowrap;
}
var completes = document.querySelectorAll(".complete");
var toggleButton = document.getElementById("toggleButton");
function toggleComplete() {
var lastComplete = completes[completes.length - 1];
lastComplete.classList.toggle('complete');
}
toggleButton.onclick = toggleComplete;
.timeline {
list-style-type: none;
display: flex;
justify-content: center;
}
.li {
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.timestamp {
margin-bottom: 20px;
padding: 0px 40px;
display: flex;
flex-direction: column;
align-items: center;
font-weight: 100;
}
.status {
padding: 0px 40px;
display: flex;
justify-content: center;
border-top: 2px solid #D6DCE0;
position: relative;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.status h4 {
font-weight: 600;
}
.status:before {
content: "";
width: 25px;
height: 25px;
background-color: white;
border-radius: 25px;
border: 1px solid #ddd;
position: absolute;
top: -15px;
left: 42%;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.li.complete .status {
border-top: 2px solid #66DC71;
}
.li.complete .status:before {
background-color: #66DC71;
border: none;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
.li.complete .status h4 {
color: #66DC71;
}
@media (min-device-width: 320px) and (max-device-width: 700px) {
.timeline {
list-style-type: none;
display: block;
}
.li {
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
display: flex;
width: inherit;
}
.timestamp {
width: 100px;
}
.status:before {
left: -8%;
top: 30%;
transition: all 200ms ease-in;
-webkit-transition: all 200ms ease-in;
-moz-transition: all 200ms ease-in;
-ms-transition: all 200ms ease-in;
-o-transition: all 200ms ease-in;
}
}
html,
body {
font-family: "Titillium Web", sans serif;
color: #758D96;
}
button {
position: absolute;
width: 100px;
min-width: 100px;
padding: 20px;
margin: 20px;
font-family: "Titillium Web", sans serif;
border: none;
color: white;
font-size: 16px;
text-align: center;
}
#toggleButton {
position: absolute;
left: 50px;
top: 20px;
background-color: #75C7F6;
}
.author {
white-space: nowrap;
}
<link href='https://fonts.googleapis.com/css?family=Titillium+Web:400,200,300,600,700' rel='stylesheet' type='text/css'>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
<button id="toggleButton">Toggle</button>
<ul class="timeline" id="timeline">
<li class="li complete">
<div class="timestamp">
<span class="author">Abhi Sharma</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Shift Created </h4>
</div>
</li>
<li class="li complete">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Email Sent </h4>
</div>
</li>
<li class="li">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">TBD<span>
</div>
<div class="status">
<h4> Shift Completed </h4>
</div>
</li>
</ul>
<ul class="timeline" id="timeline">
<li class="li complete">
<div class="timestamp">
<span class="author">Abhi Sharma</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4> Shift Created </h4>
</div>
</li>
<li class="li complete">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">11/15/2014<span>
</div>
<div class="status">
<h4></h4>
</div>
</li>
<li class="li">
<div class="timestamp">
<span class="author">PAM Admin</span>
<span class="date">TBD<span>
</div>
<div class="status">
<h4> Shift Completed</h4>
</div>
</li>
</ul>