Как убрать странную границу с тени в Firefox? - PullRequest
8 голосов
/ 27 сентября 2011

Смотрите эту скрипку в Firefox http://jsfiddle.net/qwbpZ/4/

При наведении вы увидите эту серую линию

enter image description here

Это нормально в Google Chrome, но эта серая рамка появляется в других браузерах. Как я могу решить это?

CSS

a, a:visited {color:#fff}

.btn {
  display: inline-block;
  -webkit-border-radius: 8px;
  -moz-border-radius: 8px;
  border-radius: 8px;
  -webkit-box-shadow: 0 9px 0 #000000, 0 13px 0 rgba(0, 0, 0, 0.1);
  -moz-box-shadow: 0 9px 0 #000000, 0 13px 0 rgba(0, 0, 0, 0.1);
  box-shadow: 0 9px 0 #000000, 0 13px 0 rgba(0, 0, 0, 0.1);
  -webkit-transition: -webkit-box-shadow .2s ease-in-out;
  -moz-transition: -moz-box-shadow .2s ease-in-out;
  -o-transition: -o-box-shadow .2s ease-in-out;
  transition: box-shadow .2s ease-in-out;
  padding: 0px;
        background: black; /*  see ? */
}

.btn span {
  display: inline-block;
  padding: 22px 22px 11px;
  font-family: Arial, sans-serif;
  line-height: 1;
  text-shadow: 0 -1px 1px rgba(19,65,88,.8);
  background: #2e2e2e;
  -webkit-border-radius: 8px;
  -moz-border-radius: 8px;
  border-radius: 8px;
  -webkit-box-shadow: inset 0 -1px 1px rgba(255,255,255,.15);
  -moz-box-shadow: inset 0 -1px 1px rgba(255,255,255,.15);
  box-shadow: inset 0 -1px 1px rgba(255,255,255,.15);
  -webkit-transition: -webkit-transform .2s ease-in-out;
  -moz-transition: -moz-transform .2s ease-in-out;
  -o-transition: -o-transform .2s ease-in-out;
  transition: transform .2s ease-in-out;
  color: #FFF;
        font-size: 32px;
        border: 0
}

.btn:hover {
  -webkit-box-shadow: 0 8px 0 #000,
    0 12px 10px rgba(0,0,0,.3);
  -moz-box-shadow: 0 8px 0 #000,
    0 12px 10px rgba(0,0,0,.3);
  box-shadow: 0 8px 0 #000,
    0 12px 10px rgba(0,0,0,.3);
}

.btn:hover span {
  -webkit-transform: translate(0, -4px);
  -moz-transform: translate(0, -4px);
  -o-transform: translate(0, -4px);
  transform: translate(0, -4px);
}

.btn:active {
  -webkit-box-shadow: 0 8px 0 #000,
    0 12px 10px rgba(0,0,0,.3);
  -moz-box-shadow: 0 8px 0 #000,
    0 12px 10px rgba(0,0,0,.3);
  box-shadow: 0 8px 0 #000,
    0 12px 10px rgba(0,0,0,.3);
  -webkit-transition: -webkit-box-shadow .2s ease-in-out;
  -moz-transition: -moz-box-shadow .2s ease-in-out;
  -o-transition: -o-box-shadow .2s ease-in-out;
  transition: box-shadow .2s ease-in-out;
}
.btn:active span { 



  -webkit-transform: translate(0, 0px);
  -moz-transform: translate(0, 0px);
  -o-transform: translate(0, 0px);
  transform: translate(0, 0px);
}

Ответы [ 3 ]

6 голосов
/ 27 сентября 2011

Кажется, что идеального решения не существует: эти сглаженные пиксели между тенью и радиусом границы липки как ад.

Итак, я пришел к следующим двум решениям:

  • Используйте дополнительный псевдоэлемент, который бы лежал в основе проблемного места: http://jsfiddle.net/kizu/qwbpZ/5/
  • Добавьте дополнительные черные тени (обычные и вставные): http://jsfiddle.net/kizu/qwbpZ/6/ - я добавил здесь два, но некоторые пиксели все еще видны, если вы добавите еще два, это будет почти нормально.

Грустно, но это не универсальные решения, и я не смог найти правильный способисправить саму ошибку.

1 голос
/ 30 сентября 2011

Быстрое исправление: примените к кнопке нижнюю и боковую черную рамку размером 1 пиксель.
Фиксированная кнопка: http://jsfiddle.net/FJGeZ/2/
Обратите внимание, что расстояние по оси Y в виде рамки тени меньше на 1 пиксель, чтобы компенсировать нижнюю границу 1 пикселя, плюс внутренний интервалотрицательные поля перекрывают родительскую границу.

Изолированная ошибка здесь: http://jsfiddle.net/AkZE6/

0 голосов
/ 27 сентября 2011

попробуйте это:

-moz-background-clip: padding; 
-webkit-background-clip: padding-box; 
 background-clip: padding-box; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...