Переход с поля margin-left CSS не работает
Я пытаюсь сделать переход из центра влево и уменьшить высоту изображения.
Переход высоты работает нормально, но маржа просто телепортируется влево, а не анимация.
это мой код:
#logo_img {
height: 55px;
width: 55px;
background-color: red;
margin-left: auto;
margin-right: auto;
display: block;
transition: all 1s ease-in-out;
}
#logo_img.tiny {
height:45px;
margin-left: 0;
}
JS:
$('#logo_img').addClass('tiny');
рабочий пример: http://jsfiddle.net/v0w6s3ms/1/
любая помощь?
Ответы
Ответ 1
Вы не можете анимировать свойство auto
вместо этого попробовать что-то вроде этого
$(function() {
setTimeout(function() {
$('#logo_img').addClass('tiny');
}, 1000);
});
#logo_img {
height: 55px;
width: 55px;
background-color: red;
margin-left: calc(50% - 55px);
margin-right: auto;
display: block;
transition: all 1s ease-in-out;
}
#logo_img.tiny {
height: 45px;
margin-left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section id="logo_img"></section>
Ответ 2
Вы хотите перейти от "margin-left: auto" в "margin-left: 0". Авто не является определенным значением, поэтому его нельзя уменьшить до нуля. Установите margin-left: 50% вместо "auto".
Ответ 3
Попробуйте следующее:
#logo_img {
height: 55px;
width: 55px;
background-color: red;
margin-left: 50%; //Change the auto to 50%
margin-right: auto;
display: block;
transition: all 1s ease-in-out;
}
#logo_img.tiny {
height:45px;
margin-left: 0;
}
JSFIDDLE DEMO
Ответ 4
в 2019 году вы можете
/* replace */
margin-left: auto;
/* with */
margin-left: calc(100% - 55px);
подробности:
Также возможно сделать это с помощью CSS. используйте свойство Calc и вычтите ширину вашего элемента. Таким образом, маржа будет установлена специально, а не автоматически.
jQuery(document).ready(function( $ ) {
$('#logo_img').on('click', function() {
$(this).toggleClass('tiny');
}, );
}); //end ready
#logo_img {
height: 55px;
width: 55px;
background-color: red;
margin-left: Calc(100% - 55px);
margin-right: auto;
display: block;
transition: all 1s ease-in-out;
}
#logo_img.tiny {
height:45px;
margin-left: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<img id="logo_img" src="https://picsum.photos/100/200" alt="">