Подтвердить что ты не робот

Разница высот 1 пикселя между Firefox и Chrome

Работа над новым дизайном сайта в asp.net с мастер-страницами. Заголовок страницы - это "панель меню" высотой 35 пикселей, которая содержит элемент меню управления asp, отображаемый как неупорядоченный список.

Выбранный пункт меню оформлен с разноцветным фоном и 2px рамкой вокруг левой и правой сторон. Нижняя часть выбранного пункта меню должна совпадать с нижней частью строки меню, чтобы выбранная "вкладка" выглядела так, как будто она втекает в содержимое ниже. Выглядит отлично в firefox и IE, но в Chrome "вкладка" кажется на 1 пиксель выше, чем нижняя часть строки меню.

Просто интересно, есть ли какая-то ошибка, о которой я не знаю.

Я понимаю, что вам, скорее всего, понадобится код, помогающий с этой проблемой, так быстро опубликуйте css как можно скорее.

EDIT:

вот css для меню...

div.hideSkiplink
{     
    width:40%;
    float:right;
    height:35px;
}

div.menu
{
    padding: 0px 0px 0px 0px;
    display:inline;
}

div.menu ul
{
    list-style: none;
}

div.menu ul li
{
    margin:0px 4px 0px 0px;
}

div.menu ul li a, div.menu ul li a:visited
{
  color: #ffffff;
  display: block;
  margin-top:0px;
  line-height: 17px;
  padding: 1px 20px;
  text-decoration: none;
  white-space: nowrap;
}

div.menu ul li a:hover
{
  color: #ffffff;
  text-decoration: none;
  border-top: 1px solid #fff;
  border-right: 1px solid #fff;
  border-bottom: none;
  border-left: 1px solid #fff;
}




div.menu ul li a:active
{
 background:#ffffff !important;
 border-top:2px solid #a10000;
 border-right:2px solid #a10000;
 border-bottom: none;
 border-left:2px solid #a10000;
 color: #000000 !important;
 font-weight:bold;

}


div.menu ul a.selected
{
  color: #000000 !important;
  font-weight:bold;
}

div.menu ul li.selected
{
 background:#ffffff !important;
 border-top:2px solid #a10000;
 border-right:2px solid #a10000;
 border-bottom: none;
 border-left:2px solid #a10000;
}

div.menu ul li.selected a:hover
{
  border: none;
}

Выбранные классы добавляются в li и элементы через jquery...

Вот скриншот проблемы... Пример chrome находится сверху, и вы можете видеть 1px красной границы под вкладкой. Внизу находится изображение firefox, где все выглядит нормально.

alt text

EDIT:

Поиграв с этим немного больше, я обнаружил, что на самом деле это сам заголовок div, который растет на 1px в хроме... Это кажется мне очень странным.

4b9b3361

Ответ 1

Важно понимать, что веб-страницы всегда будут отображаться по-разному в разных браузерах. Совершенствование пиксельных пикселов бесполезно, и в настоящее время я пытаюсь объяснить своим клиентам, какие затраты связаны с тем, чтобы каждый браузер отображал сайт точно так же. Чаще всего они понимают, что IE6 и FF4 никогда не будут отображать страницу одинаково. Мы должны стараться, чтобы наши клиенты понимали и охватывали динамику Интернета.

Прогрессивное улучшение и грациозная деградация. Мир.

Ответ 2

Ни один из этих ответов не решает проблему.

Set:

line-height: 1;
padding-top: 2px;

Поскольку механизмы рендеринга webkit и mozilla по-разному реализуют высоту строки, не используйте это для управления измерениями для отдельных позиций.

Для таких элементов, как меню, кнопки и особенно очень маленькие пузырьки уведомлений, reset высота строки до нормали и используйте отступы или поля, чтобы они выглядели одинаково.

Здесь JSFiddle иллюстрирует эту проблему: http://jsfiddle.net/mahalie/BSMZe/6/

Ответ 3

У меня была такая же проблема, и я решил ее, явно установив высоту строки и размер шрифта в элементе <li>, который содержит элементы <a>, которые являются ссылками на вкладку. Надеюсь, это поможет кому-то в будущем.

(отредактированные html-ссылки)

Ответ 4

Это обычная проблема, с которой я сталкиваюсь на некоторых моих сайтах... когда IE имеет разницу в пикселях, я обычно могу просто добавить пиксель поля/дополнения в мою таблицу стилей IE. Но когда это Safari/FireFox/Chrome, я обычно просто живу с пикселем и радую толпу FireFox (пока - пока Webkit не управляет сетью!), Хотя это выглядит немного странно в противоположном браузере.

Однако вы также можете проверить значения высоты строки (или добавить значение, если оно еще не указано) в содержащем элементе ul или div. Трюки с этим позволили мне получить дополнение в То же самое в FireFox, Chrome и IE.

Ответ 5

Вот решение, которое я нашел в этой странице:

   button::-moz-focus-inner {
        border: 0;
        padding: 0;
    }

Ответ 6

Я немного борюсь с этой проблемой и чуть не сдался на пиксель. Однако он приходит ко мне в один из тех моментов eurika: если вы получаете вкладку, выровненную в Chrome (что оставляет перекрытие в Firefox), установите высоту ul на высоту li (включая любое дополнение), вы можете удалить оскорбительные пиксели в Firefox, установив переполнение в скрытое на ul.

Надеюсь, это поможет кому-то!

Ответ 7

У меня была такая же проблема, получается, что хром увеличил масштаб до 110%, и это нарушило меню. Я заметил это, когда я запустил хром на другом компьютере, и это выглядело отлично.

Ответ 8

У меня была такая же проблема с моими основными вкладками, отображающими их в Chrome, они были одним пикселем в высоту и там, чтобы оставить уродливую щель между вкладками и белым фоном мэйнфрейма.

Я решил проблему, предоставив вкладке div верхний край с плавающим значением. Сначала попробовал margin-top: 0.1px ничего, чем 0.2 и т.д., Пока верхний край 0.5 не будет отображаться полностью во всех основных браузерах.

Ответ 9

Я столкнулся с этой проблемой в отношении текста с прозрачным фоном.

Я не мог заставить любое из вышеперечисленных решений работать последовательно, поэтому я закончил использование взлома webkit, чтобы дать этим браузерам разную высоту строки. Например:

@media screen and (-webkit-min-device-pixel-ratio:0) {
    .your-class {
        line-height:20px;
    }
}

Eww, взлома! Я стараюсь избегать CSS-хаков, но я просто не мог найти другого пути. Я надеюсь, что это поможет кому-то.

Ответ 10

Мне удалось решить эту проблему с помощью веб-шрифта, с которым я работал, установив следующее:

.some-class {
    display: inline-table;
    vertical-align: middle;
}

Предоставлено это немного взломанным, но выполняет эту работу. Это означает, что у вас будут целевые стили специально для Internet Explorer

Ответ 11

У меня была аналогичная проблема, и это было связано с использованием ems для размеров шрифтов, полей и отступов. Браузеры по-разному округляли ems и вызывают прерывистые проблемы, возникающие по-одному на всем сайте, в зависимости от длины контента. Как только я изменил все на пиксельные измерения, мои проблемы исчезли.

Надеюсь, это поможет!

Ответ 12

попробуйте использовать display: block with a element " например,...

<li><a href="">Link</a></li>

CSS

li{line-height:20px;}/*example only*/

li a{display:block;}

Ответ 13

Я предполагаю, что это единственный способ, использовать разные стили для разных браузеров в проблемных разделах

/* FOR MOZILLA */
@-moz-document url-prefix() { 
.selector {
 color:lime;
}
}
/* FOR CHROME */
@media screen and (-webkit-min-device-pixel-ratio:0) { 
/* Safari and Chrome, if Chrome rule needed */
.container {
 margin-top:100px;
}
/* Safari 5+ ONLY */
::i-block-chrome, .container {
 margin-top:0px;
}``

Ответ 14

если line-height используется для вертикального выравнивания текста в контейнере (чего ему не нужно), то последовательное поведение в браузерах может быть выполнено следующим образом:

line-height: 75px
height: 75px
overflow: hidden

Ответ 15

вы также можете создавать разные css для mozila:

-moz-height:2em;

можно также использовать:

@-moz-document url-prefix{
    // your css
}

Ответ 16

Я мог бы быть новичком в CSS, но я нашел ту же проблему в W3Cschools.com в одном из своих примеров.

http://www.w3schools.com/css/tryit.asp?filename=trycss_sprites_hover_nav

В этом примере описываются спрайты изображений. Вы можете видеть в этом примере, в Chrome, значок домашней и предыдущей иконки имеет разделительную линию 1px, чего нет в Firefox.

Кажется, что в Chrome количество пикселей - 1 пиксель, отличное от размера Firefox.