Попробуйте ниже:
$("#tooltip").css("margin-top", function() {
return -1 * $(this).outerHeight() // <== Multiplies outerHeight() by -1 and returns the result
});
В этом случае, если $.css()
получает номер, он будет автоматически конвертировать в строку с 'рх'. Если он получает строку, он предполагает, что значение завершено и должно быть установлено как есть.
Следующая работала бы, а также:
// Passing in a number
$("#tooltip").css({'marginTop': - $("#tooltip").outerHeight()});
$("#tooltip").css({'marginTop': -1 * $("#tooltip").outerHeight()});
$("#tooltip").css('marginTop', - $("#tooltip").outerHeight());
$("#tooltip").css('marginTop', -1 * $("#tooltip").outerHeight());
// Passing in a string with units specified
$("#tooltip").css({'marginTop': '-' + $("#tooltip").outerHeight() + 'px'});
$("#tooltip").css('marginTop', '-' + $("#tooltip").outerHeight() + 'px');
Хотя это не удается, как результирующая строка "-20"
является недопустимым значением CSS для MarginTop:
$("#tooltip").css({'marginTop': '-' + $("#tooltip").outerHeight()});
Форма строки полезна, если вы хотите для установки значения с использованием процентных значений или их значений:
$("#tooltip").css({'marginTop': "2em"});
$("#tooltip").css({'marginTop': "10%"});
Можете ли вы рассказать о том, как это работает, чтобы ответить на вопрос? –
Он устанавливает «margin-top» в возвращаемое значение функции. В этом случае сам умножил -1, чтобы дать отрицательный результат. –
это отлично работает спасибо @ Dc5 – user2751288