Как вы боретесь с несовместимость браузеров?
Юзать известные фреймворки, где за совместимость отвечают специальные люди, и поменьше самописного. Использовать те конструкции языка, разметки и стилей, которые работают во всех движках, а не являются экспериментальными или расширениями некоторых движков. Вообще, по-возможности, не использовать всяких экзотических вещей, а только давно вошедшие в стандарты. Ну и наконец, перестать писать для веба, хотя бы для его фронт-энд части - фронт-энд веба для тех, кому нефиг делать, кроме как постоянно переучиваться с одного модного фреймворка на другой.
Странно, что в Edge и Chrome по-разному отображается - они же на одном движке.
По-разному может быть, если используются, например, дефолтные стили - они в разных браузерах могут быть разными. Вообще, стремление к тому, чтобы во всех браузерах выглядело абсолютно одинаково - бесполезное. Это во флеше или другом плагинном фреймворке с собственным движком рендеринга можно было подобного добиться, а в нынешнем вебе - нет. Браузеры - это платформы, которые хоть и придерживаются определённых стандартов, но всё же отличаются. Требование к одинаковости отображения в разных браузерах сродни требованию, чтобы все браузеры стали одним.
Есть разные статьи по обеспечению совместимости и всякие валидаторы вашей разметки
7 Common Cross Browser Compatibility Issues to Avoid | BrowserStack
10 ways to avoid cross browser compatibility issues (lambdatest.com)
Объём работ большой, а толку - всё равно не добьёшься желаемого. А если добьёшься, то стоит смениться версии браузера - и может снова всё слететь. Нужно просто смириться с некоторыми несовместимостями. А ещё бывает, что попросту делают лишь под самый распространённый вариант (Хромиум, например), и отказываются от поддержки всего остального.
Аналогию можно привести с 3Д-играми и видеокартами - стандарты шейдеров и языков программирования одинаковы, а рендеринг происходит немного по-разному, поэтому игры, запущенные на разных видеокартах могут немного отличаться.