Что заставляет это фоновое изображение неправильно отображаться в Opera и Firefox?

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

Я пытаюсь собрать небольшой личный веб-сайт с использованием HTML 5/CSS3. Я проверил с помощью валидатора w3c, и сайт и файл CSS полностью соответствуют валидатору (однако к валидатору прилагается предупреждение о том, что он может быть неидеальным).

Не знаю, как объяснить без картинки, поэтому вот сравнение Chrome/Opera/Firefox:

Таким образом, вы можете увидеть, как в Chrome фоновое изображение состоит из одной неповторяющейся части, тогда как в Opera/Firefox изображение, как ни странно, разбито и размещено немного по-другому.

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

Вот CSS, относящийся к этой проблеме:

/* Content Pane */         
.content
{           position: absolute;
            left: 220px;
            width: 800px;
            top: 80px;
            min-height: 550px;
            background-color: rgba(8,12,42,0.85);
}

/* Headers */
.content hgroup 
{
            background: url("Header_Flat.png") no-repeat left top;
            min-height: 38px;
            padding-left: 28px;
            text-shadow: 0 0 8px #FFA9FF;
            color: Black;   
            text-decoration: none;  
}

.content hgroup h1 
{
            display: block;
}

.content hgroup h3
{
            display: inline;
            position: relative;
            top: -12px;
            left: 20px;
            text-shadow: 0 0 6px #AFF9FF;
}

.content hgroup h4
{
            display: inline;
            position: relative;
            top: -12px;
            left: 20px;
            font-size: xx-small;    
            text-shadow: 0 0 6px #AFF9FF;
}

И HTML:

<hgroup> 
    <h1>New Site!</h1> 
    <h3>Now with Bloom!</h3> 
    <h4> - Posted Tuesday, May 11th 2010</h4> 
</hgroup>

Может ли кто-нибудь увидеть, что я делаю неправильно?

РЕДАКТИРОВАТЬ

Я немного изменил CSS, и он наполовину исправил изображение (я не понимаю, почему) и плохое выравнивание (я этого еще не заметил).

Измененные определения CSS выглядят следующим образом:

/* Headers */
.content hgroup 
{
            background: url("Header_Flat.png") no-repeat left top;
            min-height: 38px;
            position: relative;
            text-shadow: 0 0 8px #FFA9FF;
            color: Black;   
            text-decoration: none;  
}

.content hgroup h1
{
            position: relative;
            left: 28px;
}

.content hgroup h3
{
            display: inline;
            position: relative;
            top: -12px;
            left: 48px;
            text-shadow: 0 0 6px #AFF9FF;
}

.content hgroup h4
{
            display: inline;
            position: relative;
            top: -12px;
            left: 48px;
            font-size: xx-small;    
            text-shadow: 0 0 6px #AFF9FF;
}

person Sukasa    schedule 12.05.2010    source источник
comment
Проблема исчезнет, ​​если вы удалите атрибуты text-shadow?   -  person Mathew    schedule 12.05.2010
comment
В FireFox нажмите CTRL+SHIFT+J, чтобы открыть консоль ошибок. Очистить все. Теперь просмотрите свою страницу (или обновите ее) и посмотрите, что содержит вкладка предупреждения. FireFox жалуется на невозможность парсить CSS или HTML?   -  person Salman A    schedule 12.05.2010
comment
Firefox не имеет абсолютно ничего в своей консоли ошибок после очистки и обновления страницы.   -  person Sukasa    schedule 12.05.2010
comment
У вас есть URL-адрес? Было бы полезно увидеть весь контекст в Firebug.   -  person RoToRa    schedule 12.05.2010
comment
sukasa.kicks-ass.org Это просто домашнее подключение, поэтому это может занять 1-2 секунды. загрузить весь сайт.   -  person Sukasa    schedule 12.05.2010
comment
Что-то еще: не забудьте (повторно) установить отступы и поля для всех элементов. И обычно лучше давать элементам поля и/или отступы вместо относительного позиционирования. Последнее может привести к нежелательным эффектам, таким как перекрытие.   -  person RoToRa    schedule 12.05.2010


Ответы (4)


Понятно: нужно дать hgroup display: block.

РЕДАКТИРОВАТЬ: Имейте в виду, что большинство браузеров не знают новые элементы HTML5, поэтому в них отсутствуют все стили по умолчанию.

person RoToRa    schedule 12.05.2010

Вам нужно будет установить родительский элемент позиционированных дочерних элементов на relative, чтобы позиционирование работало.

hgroup{
  position: relative;
}

Вашему h1 нужна ширина и высота, иначе display: block немного бессмысленно.

Это две вещи, которые меня больше всего бросают в глаза :)

person David Yell    schedule 12.05.2010
comment
Я удалил определение css для h1, так как display:block в любом случае используется по умолчанию, и он остался, ничего не сделал. Я повторно добавил его так, как он был, и попробовал ваше первое предложение, ничего не сделал. Снова удалил css h1 и проверил, все равно ничего. - person Sukasa; 12.05.2010
comment
Вам нужно установить для родительского элемента значение position: relative только в том случае, если в нем есть элементы с абсолютным позиционированием, которые должны располагаться относительно этого родительского элемента. Другим элементам с относительным позиционированием это не нужно. Также нет абсолютно никаких причин задавать ширину и высоту блочного элемента. - person RoToRa; 12.05.2010
comment
Ах, честно говоря, это было то, что я взял из валидатора CSS, возможно, я думаю о плавающих элементах, которым нужна ширина и высота. - person David Yell; 12.05.2010

Только что посмотрел в Chrome и Firefox, и они оба отображают то же самое, что и ваша картинка с ошибкой.

Взгляните сюда: контрольный список поддержки браузера HTML5, кажется, что Firefox и Opera не поддерживают поддерживают все атрибуты HTML5, поэтому всегда будут какие-то странные проблемы. Браузеры еще не знают все стили элементов HTML5 по умолчанию, так что еще больше причин для странных ошибок. Не могу придумать никаких других исправлений, кроме ответа DavidYell, в CSS все выглядит хорошо.

person Kyle    schedule 12.05.2010
comment
Когда вы говорите, что они отображают одно и то же, вы имеете в виду то же самое, что и их отдельные эталонные изображения, или оба одинаковы, как одно ошибочное изображение? - person Sukasa; 12.05.2010
comment
Извините, они во всех браузерах перепутались, они не одна картинка, а нарезанные. - person Kyle; 12.05.2010

CSS выравнивание фонового изображения доступен не во всех браузерах. Это как если бы у вас было только:

.content hgroup 
{
background: url("Header_Flat.png") no-repeat;
etc.

Поскольку hgroup не имеет заданного размера, ваше фоновое изображение будет плавать, когда вы используете разные браузеры с разным увеличением.

Если вы можете установить размер hgroup, вы можете создать свой .png размер hgroup, прозрачный и с синими полосами, выровненными вверху слева.

Я также с нетерпением жду полной поддержки CSS3 во всех браузерах.

Есть так много эффектов, которые выглядят так круто в одних браузерах, а в других выглядят искаженными. Я лично предпочитаю 1) Firefox 2) Safari

person ERH    schedule 28.04.2012