Chrome не является идеальным пикселем при отображении: block
Как вы можете видеть в [этой][1] скрипке, при наведении a
всегда на один пиксель выше ул. (Вы можете увидеть это в скрипке: она даже пересекает границу ul
) Это происходит только в Chrome (также протестирован в FF и IE10, но у них такой проблемы нет). Любое решение этого?
Замечания: overflow: hidden
не является решением, потому что я хочу, чтобы переполнение было видно для других вещей (подменю среди других).
ul {
list-style: none;
text-align: center;
background: whiteSmoke;
border: 1px solid red;
}
li {
display: inline-block;
font-size: 150%;
position: relative;
margin: 0;
}
li a {
color: #555;
text-decoration: none;
text-shadow: 0 2px 0 white;
display: block;
padding: 0.2em 0.5em 0.3em;
}
li a:hover {
color: black;
background: whiteSmoke;
box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.125);
}
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Forum</a></li>
<li><a href="#">About</a></li>
<li class="has-sub-menu"><a href="#">Contact</a></li>
</ul>
</nav>
1 ответ
Решение
Если у вас в Chrome меньше одного пикселя; есть два подхода, специфичных для браузера, которые могут применять корректирующие стили только в Chrome. См. Аналогичное сообщение с ответом
CSS
@media screen and (-webkit-min-device-pixel-ratio:0) {
position:relative;top:-1px;
}
JS
if (navigator.appVersion.indexOf("Chrome/") != -1) {
// modify menu styling
}