Столкнулся с такой проблемой, пока добавляю ширину в px все порядке, а в процентах выходит какая то ерунда.
Должно каждый этап добавляться 25% к ширине progress-bar
https://codepen.io/s0nly/pen/GMxPrX
function stepByStepForm() {
var nextStepBtn = $('.next-btn'),
prevStepBtn = $('.prev-btn'),
step = $('.step'),
stepField = $('.step__field');
nextStepBtn.on('click', function (e) {
var progressBarValue = $('.progress-bar').width(),
progressBarStep = parseInt(progressBarValue += 100 / step.length);
e.preventDefault();
if($(this).parent().find(stepField).val().length <= 0){
alert('Не заполнены поля')
} else{
$('.progress-bar').width(progressBarStep + '%');
step.fadeOut(0);
$(this).parent().next(step).show();
}
});
prevStepBtn.on('click', function (e) {
e.preventDefault();
step.fadeOut(0);
$(this).parent().prev(step).show();
});
}
stepByStepForm();
Вот так вам было нужно?
Ваша ошибка была здесь progressBarStep = parseInt(progressBarValue += 100 / step.length);
.
progressBarValue
это значение в пикселях, и не важно в стиле вы как добавили свойство для ширины у блока. у вас пиксели прибавлялись к процентам, и получилась ошибка.
var stepp = 0;
function stepByStepForm() {
var nextStepBtn = $('.next-btn'),
prevStepBtn = $('.prev-btn'),
step = $('.step'),
stepField = $('.step__field');
nextStepBtn.on('click', function(e) {
stepp = stepp + 1;
var percent = parseInt(100/step.length);
console.log(percent);
var progressBarStep = stepp * percent;
e.preventDefault();
if ($(this).parent().find(stepField).val().length <= 0) {
alert('Не заполнены поля')
} else {
$('.progress-bar').width(progressBarStep + '%');
step.fadeOut(0);
$(this).parent().next(step).show();
}
});
prevStepBtn.on('click', function(e) {
stepp--;
var progressBarStep = stepp * 25;
$('.progress-bar').width(progressBarStep + '%');
e.preventDefault();
step.fadeOut(0);
$(this).parent().prev(step).show();
});
}
stepByStepForm();
.progress-bar{
height: 20px;
width: 0%;
background: green;
transition: .5s width;
}
.step.first{
display: block;
}
.step{
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form">
<form action="">
<div class="progress-bar"></div>
<div class="step first">
<label>
<input type="text" placeholder="1" class="step__field">
</label>
<a href="" class="next-btn">Далее</a>
</div>
<div class="step">
<label>
<input type="text" placeholder="2" class="step__field">
</label>
<a href="" class="prev-btn">Назад</a>
<a href="" class="next-btn">Далее</a>
</div>
<div class="step">
<label>
<input type="text" placeholder="3" class="step__field">
</label>
<a href="" class="prev-btn">Назад</a>
<a href="" class="next-btn">Далее</a>
</div>
<div class="step">
<label>
<input type="text" placeholder="3" class="step__field">
</label>
<a href="" class="prev-btn">Назад</a>
<a href="" class="next-btn">Далее</a>
</div>
<div class="step">
end
</div>
</form>
</div>
Вот так уже определяются проценты по количеству шагов.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте, есть блок с width 100% (адаптивная верстка), так вот в нём есть 4 блока, как можно сделать чтобы 3й и 4й были на всю длину и переносились...
Насколько мне известно, каждое подключение файлов css или js отбирает память у компьютераА как много он отбирает? К примеру, нашел сайт в сети...