Behseini
Behseini

Reputation: 6330

How to reset div to be in center after changing its position

I am working on the below code. Why am I not able to reset the .container to be center on

$("#back").on("click", function(){
      $(".container").animate({
              'margin-left': 'auto',
              'margin-right': 'auto',
              'margin':'0 auto'
        }, 550);
});

$("#move").on("click", function() {
  $(".container").animate({
    'margin-left': '2.1%'
  }, 550);
});

$("#back").on("click", function() {
  $(".container").animate({
    'margin-left': 'auto',
    'margin-right': 'auto',
    'margin': '0 auto'
  }, 550);
});
.container {
  height: 100px;
  background: khaki;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

<button type="button" class="btn btn-primary" id="move">Move Left</button>
<button type="button" class="btn btn-secondary" id="back">Get Back</button>
<div class="container"></div>

Upvotes: 0

Views: 71

Answers (1)

vrintle
vrintle

Reputation: 5586

You can make the JavaScript remember the margin-left value, when the document gets ready to be spawned!

var margin;

$(document).ready(function() {
  $('.container').css('margin-left', 'auto'); // first, align it in the center
  margin = $('.container').css('margin-left'); // and then, store the value
  // console.log(margin);
});

$("#move").on("click", function() {
  $(".container").animate({
    'margin-left': '2.1%'
  }, 550);
});

$("#back").on("click", function() {
  $(".container").animate({
    'margin-left': margin, // use it anywhere ;)
    'margin-right': 'auto',
    'margin': '0 auto'
  }, 550);
});
.container {
  height: 100px;
  background: khaki;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<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://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

<button type="button" class="btn btn-primary" id="move">Move Left</button>
<button type="button" class="btn btn-secondary" id="back">Get Back</button>
<div class="container"></div>

Upvotes: 1

Related Questions