Я создал простой пример, чтобы продемонстрировать идею иметь абсолютно позиционированный элемент с left
и right
, установленными на 0
, но с очень разными результатами в последних Chrome и Safari. Основываясь на комментариях к этому вопросу и этому ответу, я думаю, что он будет работать последовательно, исходя из того, как он изложен в CSS spe c , но это не так. Почему это так?
Я знаю, что установка заданной ширины c разрешит, но 1) почему разница между браузерами и 2) есть лучший способ для центрирования, чем указание явного ширина?
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.vis {
width: 100%;
position: relative;
}
.btn {
position: absolute;
left: 0;
right: 0;
margin:auto;
display:block;
}
</style>
<title>Document</title>
</head>
<body>
<div class="vis">
<button class="btn">Test!</button>
</div>
</body>
</html>
Safari: 
Chrome: 