Я склонен подходить к этой проблеме, используя немного менее чистый метод.
Я вкладываю изображение в h1, чтобы получить следующую разметку:
<div id="header">
<h1>This is the header<img src="img/stackoverflowLogo.png" /></h1>
</div>
А затем используйте CSS для позиционирования относительного <h1>
и изображения с position:absolute
. Это приводит к тому, что изображение вынимается из потока документов и перемещается «над» текстом родительского элемента. Я использую CSS (похож на):
#header h1
{position: relative;
border: 0 none transparent;
font-size: 2em;
margin: 1em auto;
border: 1px solid #ccc;
}
#header img
{position: absolute;
top: 0;
left: 0;
}
Я разместил демо здесь: http://www.davidrhysthomas.co.uk/so/h1Img.html.
Первый раздел показывает первый шаг, расположение изображения относительно его родителя, изображение с прозрачным фоном, чтобы дать представление о том, что происходит.
Во втором и третьем разделах я использовал jQuery, чтобы назначить <h1>
размеры, равные размеру изображения, чтобы предотвратить (как и в первой версии) текст <h1>
, выходящий за пределы самого изображения , следующим образом:
$(window).load(
function() {
var w = $('#logo').outerWidth();
var h = $('#logo').outerHeight() ;
$('#two h1').css('width',w,'height',h);
$('#three h1').css('width',w,'height',h);
}
);
Это немного глупо, очевидно, что это зависит от того, включен ли javascript, и также при загрузке страницы происходит небольшое мерцание страницы, когда документ запускает скрипт и применяет math / css.
Этот подход удовлетворяет вашим требованиям, чтобы текст был видимым до тех пор, пока само изображение не загружается, и он использует xhtml и CSS, чтобы скрыть текст. И если размеры изображения известны заранее, для не требуется jQuery / js для предотвращения переполнения.
(Приношу извинения Джеффу, Джоэлу и др. За использование логотипа SO без какого-либо разрешения, но в то время это было уместно ... =))