Если вам нужно (top_offset >= general_logo_offset.top) то зачем вы в условии пишете "<="?
Отвечая на вопрос, вы можете подставить НЕ к условию, если у вас в выражении получается false, и вам нужно попасть в тело этого условия (при условии, что вы всё учли и ничего не напутали), например:
if ( !(top_offset <= general_logo_offset.top - 55 && top_offset >= 0) ) {}
Как вы понимаете, такой вариант очень трудночитаем. Другой вариант, вы оставляете условие таким, но тело переносите в блок else, например:
if (top_offset <= general_logo_offset.top - 55 && top_offset >= 0){}
else {
// вот сюда
}
Если у вас настолько сложное условие, что вы сами сейчас путаетесь, то так делать не нужно. Как вариант, вы можете разбить сложное условие на несколько вложенных, если вам нужны всё же разные результаты, и если это упростит читаемость. Если вам всё же нужно одно сложное выражение, то необходимо его вынести в отдельную функцию или геттер с читаемым названием, тогда код упростится:
if (!expression) { }