Используйте css calc () в jquery

как я могу это сделать?

$('#element').animate({ "width": "calc(100% - 278px)" }, 800);
$('#element').animate({ "width": "calc(100% - 78px)" }, 800);

Я могу это сделать, если это только % или только px, а не calc(), могу ли я использовать какой-либо другой вариант jQuery? или какой-то другой трюк JavaScript?

это изменение, которое нужно сделать, когда пользователь нажимает какой-то элемент, так что:

$("#otherElement").on("click", FunctionToToggle);

когда пользователь нажимает $("#otherElement") эффект переключения должен произойти.

3 ответов


может это поможет:

$('#element').animate({ "width": "-=278px" }, 800);

каждый раз, когда этот скрипт удалит 278px из элемента

изменить: Попробуйте это, он будет пересчитывать при изменении размера окна. Если я правильно вас понял, это должно помочь.

$(window).on("resize",function(){
   $('#element').css("width",$('#element').width()-275+"px");
});

опции CSS3 с

поскольку CSS3 имеет функцию animateion, вы также можете использовать это:

#element{
   -webkit-transition:all 500ms ease-out 0.5s;
   -moz-transition:all 500ms ease-out 0.5s;
   -o-transition:all 500ms ease-out 0.5s;
   transition:all 500ms ease-out 0.5s;
}

если вы хотите анимировать элемент. И вы могли бы сделать это:

 $('#element').css("width","calc(100% - 100px)");

в этом case CSS будет делать анимацию.

обратите внимание, что это не будет работать для старых браузеров


Я не уверен, что с помощью calc получится. Мой ответ проверяет ширину родителя, затем выполняет операцию над ним, а затем анимирует элемент.

elWidth = $('#element').parent().width(); // Get the parent size instead of using 100%
elWidth -= 20; // Perform any modifications you need here
$('#element').animate({width: elWidth}, 500); //Animate the element

http://jsfiddle.net/yKVz2/2/


Я нашел другую форму выполнения этого с помощью coment @jfriend00.

сначала я создаю правило CSS, но без перехода.

и в функции переключателя:

$('#element').animate({ width: "-=200px" }, 800, function () { $('#element').addClass('acoreonOpened');$('#element').removeAttr("style") });

.acoreonOpened-это где у меня есть правило CSS с calc (100% - 278px).

Итак, сначала я делаю анимацию с jquery, и когда она заканчивается, я удаляю стиль, который использует jquery (если нет, css не будет работать), и после того, как я поставил класс, так что это ведет себя, как ширина с %.