I want this progress bar to animate only from left to right, starting from text. After animation ends from right to left, it starts animating from right to left, from some point. Note, I need to use the flexbox and width for text.
.table-bars .bar-box .text {
height: 100%;
margin: 0 30px 0 200px;
width: 200px;
text-align:right;
}
.bar-box {
margin-bottom:20px;
}
.table-bars div .progress {
background-color: #0071b9;
border-radius: 20px;
border-right: 13px solid rgb(0, 173, 239);
-webkit-animation: progressBar 2s ease-in-out;
-webkit-animation-fill-mode:both;
-moz-animation: progressBar 2s ease-in-out;
-moz-animation-fill-mode:both;
height: 20px;
}
#-webkit-keyframes progressBar {
0% { width: 0; }
100% { width: 100%; }
}
#-moz-keyframes progressBar {
0% { width: 0; }
100% { width: 100%; }
}
.bar-box {
display: flex;
}
<div class="table-bars">
<div class="bar-box">
<div class="text"><span>TEXT</span></div>
<div class="progress"></div>
</div>
<div class="bar-box">
<div class="text"><span>Another TEXT</span></div>
<div class="progress"></div>
</div>
</div>
You need to either add flex-shrink:0 to avoid the shriking of the text because you are setting width:100%
.table-bars .bar-box .text {
height: 100%;
margin: 0 30px 0 200px;
width: 200px;
text-align: right;
flex-shrink:0;
}
.bar-box {
margin-bottom: 20px;
}
.table-bars div .progress {
background-color: #0071b9;
border-radius: 20px;
border-right: 13px solid rgb(0, 173, 239);
animation: progressBar 2s ease-in-out;
animation-fill-mode: both;
height: 20px;
}
#keyframes progressBar {
0% {
width: 0;
}
100% {
width: 100%;
}
}
.bar-box {
display: flex;
}
<div class="table-bars">
<div class="bar-box">
<div class="text"><span>TEXT</span></div>
<div class="progress"></div>
</div>
<div class="bar-box">
<div class="text"><span>Another TEXT</span></div>
<div class="progress"></div>
</div>
</div>
Or animate the flex-grow instead of width:
.table-bars .bar-box .text {
height: 100%;
margin: 0 30px 0 200px;
width: 200px;
text-align: right;
flex-shrink:0;
}
.bar-box {
margin-bottom: 20px;
}
.table-bars div .progress {
background-color: #0071b9;
border-radius: 20px;
border-right: 13px solid rgb(0, 173, 239);
animation: progressBar 2s ease-in-out;
animation-fill-mode: both;
height: 20px;
}
#keyframes progressBar {
0% {
flex-grow: 0;
}
100% {
flex-grow: 1;
}
}
.bar-box {
display: flex;
}
<div class="table-bars">
<div class="bar-box">
<div class="text"><span>TEXT</span></div>
<div class="progress"></div>
</div>
<div class="bar-box">
<div class="text"><span>Another TEXT</span></div>
<div class="progress"></div>
</div>
</div>
Related: Why is a flex item limited to parent size?
Related
I'm trying to make an animated border for a div. I unhid the overflow of its formatting element so that I could see what the issue was. I'd like to make the center of rotation the center of the larger div.
I know I can make the center of rotation higher by setting the width and height of the before psuedoelement to that of its container, but I want to make it taller because if I set the width and height to its formatting element, it's too small and doesn't cover the edges.
I've tried using CSS positioning, but it isn't working and I have no idea why.
<div class="center">
<div class="wrapper">
<div class="directory module">
<div id="header" class="small_wrapper center">
<div class="module">
<p style="font-size: 22px">Placeholder</p>
</div>
</div>
<div class="directory_bar small_wrapper center"><div class="module">About Me</div></div>
<div class="directory_bar small_wrapper center"><div class="module">PC Builds</div></div>
<div class="directory_bar small_wrapper center"><div class="module">Original Characters</div></div>
<div class="directory_bar small_wrapper center"><div class="module">Games & Loadouts</div></div>
<div class="directory_bar small_wrapper center"><div class="module">Socials</div></div>
</div>
</div>
</div>
#charset "utf-8";
#keyframes rotate {
0% {
transform: rotate(0);
}
50% {
transform: rotate(180deg);
}
100% {
transform: rotate(360deg);
}
}
html {
font-size: 3.0vh;
}
body {
background-color: #2C2C2C;
font-family: Urbanist, sans serif;
color: white;
}
p {
margin: 0;
}
.left, .right, .center {
position: relative;
}
.center {
margin-left: auto;
margin-right: auto;
}
.module {
background-color:#2C2C2C;
text-align: center;
padding: 10px;
border-radius: 18px;
z-index: 1000;
position: relative;
}
.wrapper, .small_wrapper {
position: relative;
width: fit-content;
height: fit-content;
background: blue;
z-index: 1000;
}
.wrapper {
border-radius: 20px;
padding: 4px;
}
.wrapper::before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: linear-gradient(to right, rgb(255, 0, 0), rgb(145,
255, 0), rgb(189, 1, 180));
animation: rotate;
animation-duration: 3s;
animation-iteration-count: infinite;
animation-timing-function: linear;
content: '';
border-radius: 20px;
height: 1000px;
}
.small_wrapper {
padding: 3px;
}
.directory_bar {
margin-top: 5vh;
}
.directory {
padding: 5vh;
}
.center > .wrapper {
margin-left: 100px;
}
.directory_bar, #header {
border-radius: 8px;
}
.directory_bar > .module, #header > .module {
border-radius: 7px;
}
I tried to create my bootstrap 4 web site to Placeholder Loading Card , i added sample image but i have some issue,
place holder not working in when the web site loading , is it always animate
anyone know how to do that correctly like this image
that is my code part
body {
padding: 20px;
}
.container {
display: flex;
border: 1px solid #eaecef;
height: 200px;
padding: 1%;
background-color: white;
box-shadow: 2px 5px 5px 1px lightgrey;
}
.img-container {
width: 15%;
padding: 20px;
}
.img {
border: 1px solid white;
width: 100%;
height: 100%;
background-color: #babbbc;
}
.content {
border: 1px solid white;
flex-grow: 1;
display: flex;
flex-direction: column;
padding: 20px;
justify-content: space-between;
}
.stripe {
border: 1px solid white;
height: 20%;
background-color: #babbbc;
}
.small-stripe {
width: 40%;
}
.medium-stripe {
width: 70%;
}
.long-stripe {
width: 100%;
}
.container.loading .img, .container.loading .stripe {
animation: hintloading 2s ease-in-out 0s infinite reverse;
-webkit-animation: hintloading 2s ease-in-out 0s infinite reverse;
}
#keyframes hintloading
{
0% {
opacity: 0.5;
}
50% {
opacity: 1;
}
100% {
opacity: 0.5;
}
}
#-webkit-keyframes hintloading
{
0% {
opacity: 0.5;
}
50% {
opacity: 1;
}
100% {
opacity: 0.5;
}
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<div class='container loading'>
<div class='img-container'>
<div class='img'>
<img src="https://image.freepik.com/free-photo/group-of-diverse-people-having-a-business-meeting_53876-25060.jpg">
</div>
</div>
<div class='content'>
<div class='stripe small-stripe'>wewe
</div>
<div class='stripe medium-stripe'>ewe
</div>
<div class='stripe long-stripe'>wewe
</div>
</div>
</div>
you need to disable the content placeHolder animation after page end load :
$(document).ready(function(){
$(".container.loading .img, .container.loading .stripe").css("animation", "none");
$(".container.loading .img, .container.loading .stripe").css("-webkit-animation", "none");
})
body {
padding: 20px;
}
.container {
display: flex;
border: 1px solid #eaecef;
height: 200px;
padding: 1%;
background-color: white;
box-shadow: 2px 5px 5px 1px lightgrey;
}
.img-container {
width: 15%;
padding: 20px;
}
.img {
border: 1px solid white;
width: 100%;
height: 100%;
background-color: #babbbc;
}
.content {
border: 1px solid white;
flex-grow: 1;
display: flex;
flex-direction: column;
padding: 20px;
justify-content: space-between;
}
.stripe {
border: 1px solid white;
height: 20%;
background-color: #babbbc;
}
.small-stripe {
width: 40%;
}
.medium-stripe {
width: 70%;
}
.long-stripe {
width: 100%;
}
.container.loading .img, .container.loading .stripe {
animation: hintloading 2s ease-in-out 0s infinite reverse;
-webkit-animation: hintloading 2s ease-in-out 0s infinite reverse;
}
#keyframes hintloading
{
0% {
opacity: 0.5;
}
50% {
opacity: 1;
}
100% {
opacity: 0.5;
}
}
#-webkit-keyframes hintloading
{
0% {
opacity: 0.5;
}
50% {
opacity: 1;
}
100% {
opacity: 0.5;
}
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<div class='container loading'>
<div class='img-container'>
<div class='img'>
<img src="https://image.freepik.com/free-photo/group-of-diverse-people-having-a-business-meeting_53876-25060.jpg">
</div>
</div>
<div class='content'>
<div class='stripe small-stripe'>wewe
</div>
<div class='stripe medium-stripe'>ewe
</div>
<div class='stripe long-stripe'>wewe
</div>
</div>
</div>
To see the effect of Content PlaceHolder i do this example where the data will be loaded after 3 seconds :
loadData = function(){
setTimeout(function(){
$(".content div").html("wewe");
$(".img img").attr('src', 'https://image.freepik.com/free-photo/group-of-diverse-people-having-a-business-meeting_53876-25060.jpg');
$(".container.loading .img, .container.loading .stripe").css("animation", "none");
$(".container.loading .img, .container.loading .stripe").css("-webkit-animation", "none");
}, 3000);
}
loadData();
body {
padding: 20px;
}
.container {
display: flex;
border: 1px solid #eaecef;
height: 200px;
padding: 1%;
background-color: white;
box-shadow: 2px 5px 5px 1px lightgrey;
}
.img-container {
width: 15%;
padding: 20px;
}
.img {
border: 1px solid white;
width: 100%;
height: 100%;
background-color: #babbbc;
}
.content {
border: 1px solid white;
flex-grow: 1;
display: flex;
flex-direction: column;
padding: 20px;
justify-content: space-between;
}
.stripe {
border: 1px solid white;
height: 20%;
background-color: #babbbc;
}
.small-stripe {
width: 40%;
}
.medium-stripe {
width: 70%;
}
.long-stripe {
width: 100%;
}
.container.loading .img, .container.loading .stripe {
animation: hintloading 2s ease-in-out 0s infinite reverse;
-webkit-animation: hintloading 2s ease-in-out 0s infinite reverse;
}
#keyframes hintloading
{
0% {
opacity: 0.5;
}
50% {
opacity: 1;
}
100% {
opacity: 0.5;
}
}
#-webkit-keyframes hintloading
{
0% {
opacity: 0.5;
}
50% {
opacity: 1;
}
100% {
opacity: 0.5;
}
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<div class='container loading'>
<div class='img-container'>
<div class='img'>
<img>
</div>
</div>
<div class='content'>
<div class='stripe small-stripe'>
</div>
<div class='stripe medium-stripe'>
</div>
<div class='stripe long-stripe'>
</div>
</div>
</div>
i need to animate the border bottom of the div using keyframe animation without using :before or :after or modifying the current html structure
div{
padding:3px 6px;
display:inline-block;
position:relative;
border-bottom: 2px solid black;
}
<div><h1>Lorem Ipsum</h1></div>
You can simulate it like below. Hope that helps.
.container {
padding: 3px 6px;
display: inline-flex;
flex-direction: column;
}
.underline {
height: 2px;
max-width: 0%;
background-color: black;
animation: drawBorder 2s ease forwards;
}
#keyframes drawBorder {
from {
max-width: 0%;
}
to {
max-width: 100%;
}
}
<div class="container">
<h1>Lorem Ipsum</h1>
<div class="underline"></div>
</div>
Use gradient:
div.box {
padding: 3px 6px;
display: inline-block;
position: relative;
background: linear-gradient(#000, #000) bottom/0% 2px no-repeat;
transition:1s all;
}
div.box:hover {
background-size: 100% 2px;
}
<div class="box">
<h1>Lorem Ipsum</h1>
</div>
I've been coding a very simple "Traffic Light" program and have run into a problem where it doesn't run after the first #keyframes section completes correctly. From my own research online I'm guessing that I would need a transition(?) so that when the first #keyframes is complete, the next one would be run. However my inexperience with this I'm not sure if its whats required here. Essentially is there a "trigger" I'm missing or is it just something obvious I've left out?
Please excuse the rough code. Its does work as I described above
body {
background-color: #4d4d00
}
.container {
display: flex;
justify-content: center;
align-items: center;
}
#red {
position: absolute;
left: 50px;
text-align: center;
padding: 30px;
background-color: #e60000;
margin: 10px auto;
width: 50px;
height: 50px;
border-radius: 200px;
animation: red 4s 1s 3 linear;
}
#amber {
position: absolute;
left: 1px;
text-align: center;
padding: 30px;
background-color: #ff3300;
margin: 10px auto;
width: 50px;
height: 50px;
border-radius: 200px;
animation: amber 4s 1s 3 linear;
}
#green {
position: absolute;
left: 1px;
text-align: center;
padding: 30px;
background-color: #009933;
margin: 10px auto;
width: 50px;
height: 50px;
border-radius: 200px;
animation: green 4s 1s 3 linear;
}
#keyframes red {
from {
background-color: #e60000;
}
to {
background-color: #000000;
}
#keyframes amber {
from {
background-color: #ff3300;
}
to {
background-color: #000000;
}
#keyframes green {
from {
background-color: #009933;
}
to {
background-color: #000000;
}
}
<div class="container">
<div class="row">
<div id="red">
<br>
<br>
<div id="amber">
<br>
<br>
</div>
</div>
</div>
</div>
you may use animation-delay.
here is a short/minimal code example.
.red {
background: red;
}
.orange {
background: orange
}
.green {
background: lime;
}
/* layout */
div {
display: flex;
height: 150px;
width: 50px;
flex-direction: column;
border-radius: 1em;
background: #555;
margin: 1em;
}
b {
flex: 1;
margin: 5px;
border-radius: 50%;
animation: fade 9s steps(2, end) infinite;
box-shadow: 0 0 5px white
}
/* animation */
#keyframes fade {
66%,
100% {
background: gray;
box-shadow: 0 0
}
}
.red {
animation-delay: -12s
}
.orange {
animation-delay: -6s;
}
<div class=trafficLights>
<b class=red></b>
<b class=orange></b>
<b class=green></b>
</div>
here is a codepen to play with : https://codepen.io/gc-nomade/pen/YVWeQq
You have two way to do this
1) is use animation-delay and set an higher delay to elements you would like to animate after.
animation-delay: 1s;
-webkit-animation-delay:1s;
2) trigger an element.addClass("animatedClass"); with the end of a css animation using animationonend jquery function.
$(".animatedElement").one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(event) {
$(".animatedElement").addClass("newAnimatedClass");
});
I am building an on-boarding screen.
It has few cards, you can switch between them using the next and back buttons.
I've been trying to make the next and back buttons work using only :target
So, I've given each card an ID and each button a href="#id".
As far as I can tell, everything is set up for it to work, but it is not working.
/*////////////////////////////////////////////////////////////////////////////*/
/*onboarding canvas*/
/*////////////////////////////////////////////////////////////////////////////*/
#onboarding-canvas {
position: fixed;
top: 0; left: 0;
right: 0; bottom: 0;
width: 100%;
height: 100%;
z-index: 10000000;
overflow-y: overlay;
}
/*==========================================================================*/
/*onboarding intro*/
#onboarding-canvas .onboarding-intro {
color: #fff;
background-color: #4E42C3;
display: table;
vertical-align: middle;
position: fixed;
left: 0; right: 0;
bottom: 0; top: 0;
width: 100%;
height: 100%;
pointer-events: none;
animation-name: onboardingIntro;
animation-fill-mode: forwards;
animation-duration: 1s;
animation-delay: 13s;
}
#keyframes onboardingIntro {
0% {
}
100% {
background-color: transparent;
}
}
#-webkit-keyframes onboardingIntro {
0% {
}
100% {
background-color: transparent;
}
}
#onboarding-canvas .onboarding-intro-stages {
display: table-cell;
vertical-align: middle;
position: relative;
margin: 0 auto;
}
#onboarding-canvas .onboarding-intro-stage {
position: absolute;
margin-top: -40px;
left: 0; right: 0;
opacity: 0;
}
#onboarding-canvas .onboarding-intro-stage p {
font-size: 1.7em;
}
/*onboarding intro animation*/
#onboarding-canvas .onboarding-intro .stage1 {
animation-name: onboardingIntroStage1;
animation-duration: 4s;
animation-delay: 1s;
}
#onboarding-canvas .onboarding-intro .icon-hand-wave {
width: 100%;
font-size: 2em;
margin-bottom: 50px;
}
#keyframes onboardingIntroStage1 {
0% {
}
20% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
opacity: 0;
}
}
#-webkit-keyframes onboardingIntroStage1 {
0% {
}
20% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
opacity: 0;
}
}
#onboarding-canvas .onboarding-intro .stage2 {
animation-name: onboardingIntroStage2;
animation-duration: 4s;
animation-delay: 5s;
}
#keyframes onboardingIntroStage2 {
0% {
}
20% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
opacity: 0;
}
}
#-webkit-keyframes onboardingIntroStage2 {
0% {
}
20% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
opacity: 0;
}
}
#onboarding-canvas .onboarding-intro .stage3 {
animation-name: onboardingIntroStage2;
animation-duration: 4s;
animation-delay: 9s;
}
#keyframes onboardingIntroStage3 {
0% {
}
20% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
opacity: 0;
}
}
#-webkit-keyframes onboardingIntroStage3 {
0% {
}
20% {
opacity: 1;
}
90% {
opacity: 1;
}
100% {
opacity: 0;
}
}
/*onboarding fireworks*/
#onboarding-canvas .onboarding-intro .fireworks {
pointer-events: none;
animation-name: onboarding-intro-fireworks;
animation-fill-mode: forwards;
animation-duration: 1s;
animation-delay: 5s;
}
#keyframes onboarding-intro-fireworks {
0% {
}
100% {
opacity: 0;
}
}
#-webkit-keyframes onboarding-intro-fireworks {
0% {
}
100% {
opacity: 0;
}
}
/*==========================================================================*/
/*onboarding card*/
#onboarding-canvas .onboarding-cards {
background-color: rgba(39,47,65,0.95);
padding: 20px 20px 90px 20px;
width: 100%;
height: 100vh;
display: table;
overflow-y: scroll;
-webkit-transition: all .25s ease;
transition: all .25s ease;
}
/*onboarding card wrapper*/
#onboarding-canvas .onboarding-card-wrapper {
display: table-cell;
vertical-align: middle;
margin: 0 auto;
display: none;
}
#onboarding-canvas > div > div:target {
display: table-cell;
}
#onboarding-canvas > div > div:first-of-type {
display: table-cell;
}
/*onboarding card content*/
#onboarding-canvas .onboarding-card {
background-color: #fff;
border-radius: 5px;
text-align: left;
width: 100%;
max-width: 500px;
margin: 0 auto;
position: relative;
-webkit-box-shadow: 0px 0px 50px 0px rgba(39,47,65,0.2);
-moz-box-shadow: 0px 0px 50px 0px rgba(39,47,65,0.2);
box-shadow: 0px 0px 50px 0px rgba(39,47,65,0.2);
}
/*card image*/
#onboarding-canvas .onboarding-card-image {
}
#onboarding-canvas .onboarding-card-image img {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
/*card content*/
#onboarding-canvas .onboarding-card-content {
padding: 30px;
}
#onboarding-canvas .onboarding-card-content .card-title {
font-size: 1.16em;
position: relative;
top: -5px;
margin-bottom: -7px;
}
#onboarding-canvas .onboarding-card-content .card-title span {
color: #4E42C3;
font-weight: bold;
}
/*----------------------------------------------------------------------*/
/*card tips*/
#onboarding-canvas .onboarding-card-tips {
border-top: 1px solid #E6ECF0;
text-align: left;
padding: 30px;
}
#onboarding-canvas .onboarding-card-tips .label {
color: #48556B;
background-color: #fff;
border: 1px solid #E6ECF0;
margin-right: 6px;
}
#onboarding-canvas .onboarding-card-tips {
}
/*----------------------------------------------------------------------*/
/*card features*/
#onboarding-canvas .onboarding-card-features {
}
#onboarding-canvas .onboarding-card-features li {
margin-bottom: 15px;
}
#onboarding-canvas .onboarding-card-features li:last-of-type {
margin-bottom: 0;
}
#onboarding-canvas .onboarding-card-features li i {
color: #4E42C3;
font-size: 1.2em;
}
/*----------------------------------------------------------------------*/
/*card action buttons*/
#onboarding-canvas .onboarding-card-actions {
overflow: hidden;
padding-top: 20px;
width: 100%;
text-align: center;
position: absolute;
left: 0; right: 0;
margin: 0 auto;
}
#onboarding-canvas .onboarding-card-actions .button {
color: #fff;
background-color: transparent;
border: 2px solid #fff;
display: inline-block;
margin: 0 7px;
}
#onboarding-canvas .onboarding-card-actions .button:hover {
background-color: #fff;
color: #272F41;
}
#onboarding-canvas .onboarding-card-actions .next-button {
font-weight: bold;
}
#onboarding-canvas .onboarding-card-actions .back-button {
border: 2px solid transparent;
}
/*------------------------------------------------------------------------*/
#onboarding-canvas .onboarding-card.card1 {
}
<div id="onboarding-canvas">
<div class="onboarding-cards">
<div class="onboarding-card-wrapper" id="onboardingCard1">
<div class="onboarding-card card1">
<div class="onboarding-card-image">
<img src="https://plutio.com/app/onboarding/onboarding-card-1.gif" />
</div>
<div class="onboarding-card-content">
<p class="card-title"><span>Create tasks</span> for whatever needs to get done. Plutio will help keep your tasks list organized so you can stay focused.</p>
</div>
<div class="onboarding-card-tips">
<p><span class="label">Good to know</span> Your tasks are automatically sorted into categories, there is a category for what's due today, tomorrow and next week.</p>
</div>
<div class="onboarding-card-actions">
<a class="button next-button next">Nice, what's next?</a>
</div>
</div>
</div>
<div class="onboarding-card-wrapper" id="onboardingCard2">
<div class="onboarding-card card2">
<div class="onboarding-card-image">
<img src="https://plutio.com/app/onboarding/onboarding-card-2.gif" />
</div>
<div class="onboarding-card-content">
<p class="card-title"><span>Manage your projects</span> in one place. Create and sort their tasks in milestones or progress stages, upload files and replace messy emails with focused discussions.</p>
</div>
<div class="onboarding-card-tips">
<p><span class="label">Good to know</span> You can customize the set of statuses every project moves through during their lifecycle.</p>
</div>
<div class="onboarding-card-actions">
<a class="button back-button back" href="#onboardingCard1">Back</a>
<a class="button next-button next" href="#onboardingCard3">Next</a>
</div>
</div>
</div>
<div class="onboarding-card-wrapper" id="onboardingCard3">
<div class="onboarding-card card3">
<div class="onboarding-card-image">
<img src="https://plutio.com/app/onboarding/onboarding-card-3.gif" />
</div>
<div class="onboarding-card-content">
<p class="card-title"><span>Collaborate with your clients and contributors</span>. Start private conversations or create group channels and get everyone involved.</p>
</div>
<div class="onboarding-card-tips">
<p><span class="label">Good to know</span> When you create a project, a dedicated channel with all the project contributors is automatically created.</p>
</div>
<div class="onboarding-card-actions">
<a class="button back-button back" href="#onboardingCard2">Back</a>
<a class="button next-button next" href="#onboardingCard4">Next</a>
</div>
</div>
</div>
<div class="onboarding-card-wrapper" id="onboardingCard4">
<div class="onboarding-card card4">
<div class="onboarding-card-image">
<img src="https://plutio.com/app/onboarding/onboarding-card-4.gif" />
</div>
<div class="onboarding-card-content">
<p class="card-title"><span>Manage your business contacts</span>. No more sifting through emails and business cards. Plutio brings your clients, contributors and contacts to one place.</p>
</div>
<div class="onboarding-card-tips">
<p><span class="label">Good to know</span> Your clients can only view projects and tasks that are assigned to them.</p>
</div>
<div class="onboarding-card-actions">
<a class="button back-button back" href="#onboardingCard3">Back</a>
<a class="button next-button next" href="#onboardingCard5">Next</a>
</div>
</div>
</div>
<div class="onboarding-card-wrapper" id="onboardingCard5">
<div class="onboarding-card card4">
<div class="onboarding-card-image">
<img src="https://plutio.com/app/onboarding/onboarding-card-5.gif" />
</div>
<div class="onboarding-card-content">
<p class="card-title"><span>{{ customer.first_name }}, say hi to Leo, your very own account manager!</span> Feel free to ask him anything. He can even help set up your account.</p>
</div>
<div class="onboarding-card-actions">
<a class="button back-button back" href="#onboardingCard4">Back</a>
<a class="button next-button complete" href="#onboardingCard6">This is amazing, let's get started!</a>
</div>
</div>
</div>
</div>
<!--
<div class="onboarding-intro">
<div class="onboarding-intro-stages">
<div class="onboarding-intro-stage stage1 content">
<p><i class="icon-hand-wave animation-set"></i> Welcome to Plutio, {{ customer.first_name }}.</p>
</div>
<div class="onboarding-intro-stage stage2 content">
<p>We're setting up your account, it won't take a minute...</p>
</div>
<div class="onboarding-intro-stage stage3 content">
<p>In the meantime, here's a quick introduction into Plutio...</p>
</div>
<div class="fireworks">
<div class="before"></div>
<div class="after"></div>
</div>
</div>
</div>
-->
</div>
You forgot the href in the first link.
<a class="button next-button next">Nice, what's next?</a>