Вы можете использовать flexbox для центрирования вашей формы вместо использования позиции и преобразования. Для него требуется меньше кода, и, по моему опыту, он всегда работал на всех устройствах, если только вам не нужна поддержка в браузерах старше 8 лет или браузере inte rnet.
Итак, для некоторого кода, взяв то, что вы написали, я отредактировал его следующим образом, и он работает для меня
#navbar{
background-color:blue;
width:100%;
height:50px;
border:1px solid black;
}
.test_form {
min-width: 400px;
width: 28vw;
max-width: 550px;
/* Form outline */
padding: 1em;
border: 2px solid #192D4D;
border-radius: 2em;
}
@media only screen and (max-height: 500px) {
.test_form {
/* Center the form on the page vertically */
margin: 0 auto;
min-width: 400px;
width: 28vw;
max-width: 550px;
/* Form outline */
padding: 1em;
border: 2px solid #192D4D;
border-radius: 2em;
background-color:red;
}
}
label {
/* Uniform size & alignment */
display: inline-block;
width: 100px;
text-align: center;
}
input, textarea {
/* To make sure that all text fields have the same font settings
By default, textareas have a monospace font */
font: 1em sans-serif;
/* Uniform text field size */
width: 100%;
box-sizing: border-box;
/* Match form field borders */
border: 1px solid #999;
background-color:#F1F9FF;
}
textarea {
/* Align multiline text fields with their labels */
vertical-align: top;
}
table {
width:100%;
border-collapse: collapse;
border: 2px solid #192D4D;
letter-spacing: 1px;
font-size: 0,8rem;
text-align: center;
background-color:#ADBEDA;
}
td, th {
border: 1px solid #5C6F8C;
padding: 5px 10px;
text-align: left;
}
.submit-button {
margin-left: calc(1em + 2vw);
min-width:100px;
width: 8vw;
max-width:150px;
}
.flex{
display: flex;
align-items: center;
justify-content: center;
}
<div id='navbar'>
</div>
<br>
<div class="flex">
<form class="test_form">
<table border="1">
<thead>
<tr><th colspan="2" scope="row">Table form</th></tr>
</thead>
<tr><th>asdasd</th><td>asdad</td></tr>
<tr><th>asdasd</th><td><input value='asda'></td></tr>
<tr><th>asdasd</th><td>asdad</td></tr>
<tr><th>asdasd</th><td><textarea>asdads</textarea></td></tr>
</table>
<br>
<input class ="submit-button" type="submit" value="Submit" />
</form>
</div>
Короче говоря, я удалил из CSS правила позиции и преобразования в классе .test_form. Обернул вашу форму внутри класса .flex и добавил код flexbox в CSS.
display: flex
заставляет div вести себя как контейнер flexbox, а его дочерние элементы - как элемент flexbox
align-items
по вертикали выравнивает содержимое div
justify-content
по горизонтали содержание div