Используете спрайты с меткой IMG?
-
30-09-2019 - |
Вопрос
Я понимаю, как использовать спрайты, однако, не является ли атрибутом «SRC», необходимым для тегов IMG? Я всегда мог бы использовать пролет или другой тег и установить фон/ширину/и т. Д., Но он не будет семантически правильным.
По сути, я хотел бы опустить SRC для метки IMG и использовать только спрайты, но я обеспокоен тем, что HTML не является технически действительным из -за этого. Спасибо.
Решение
О семантской правильности:
Когда изображение имеет семантическое значение, так что это считается довольным, Используйте метку IMG, без спрайтов, и правильно настроенный alt.
Когда изображение просто украшение, Как и фон коробки, фон кнопки, фон опции меню и т. Д., Он не имеет семантического значения, так что вы можете просто Используйте его как фон SPAN, DIV и т. Д. Из CSS. В этом случае вы можете использовать спрайты.
Другие советы
Использование спрайтов не обязательно означает, что вам нужно определить их в фоне CSS. Вы также можете использовать спрайты IMG TAG, чтобы сделать так, чтобы вам в основном нужно обрезать ваше изображение. Есть две хорошие статьи, объясняющие эту технику:
http://tjkdesign.com/articles/how-to_use_sprites_with_my_image_replaine_technique.asp
http://www.artzstudio.com/2010/04/img-sprites-high-contrast/
И методы CSS, и IMG, безусловно, имеют свои преимущества, поэтому вам нужно выяснить, какой вам подходит вам лучше.
Я использую 1x1 прозрачный GIF (так называемый проставщик) для SRC. Затем установите фоновое изображение для этого тега IMG с соответствующей позицией BG. Таким образом, вы используете скорость спрайтов и сохраняя семантику вашего кода (вы все равно можете использовать атрибут ALT)
Я всегда мог бы использовать пролет или другой тег и установить фон/ширину/и т. Д., Но он не будет семантически правильным
На самом деле нет ничего плохого в использовании CSS для установки фона пролета или Div. На самом деле было бы неправильно синтаксически, чтобы опустить SRC с изображения, так как это весь смысл тега. В стандартах ничего нет, в котором говорилось, что вы должны положить текст в промежуток. Синтаксически говоря, изменение фона на элементе было бы наиболее «правильным» способом сделать это.
Вот ссылка на теги IMG на W3C: http://www.w3.org/tr/html401/struct/objects.html#h-13.2
И немного дополнительного чтения: http://www.w3.org/tr/html4/struct/global.html#h-7.5.3
Эти элементы определяют содержание, чтобы быть встроенным (SPAN) или уровня блока (DIV), но не навязывают другим презентационным идиомам на содержание. Таким образом, авторы могут использовать эти элементы в сочетании с листами стилей, атрибутом LANG и т. Д., Чтобы адаптировать HTML к их собственным потребностям и вкусам.
Вы можете использовать фон CSS или HTML Canvas Элементы для динамического рисования. С холстом у вас есть возможность легко подгруппировать изображения и выполнять Эффекты режима смеси.
Вы решаете это, переосмыслив свои варианты.
Вы создаете определенную область с <a>
с display:block;
или <div>
и использовать overflow hidden;
Скрыть переполнение и position:relative;
.
Тогда вы размещаете свой <img>
Изображение спрайт внутри абсолютно позиционирует, что возможно, поскольку вы позиционировали родителя.
Затем используйте :hover
на изображении, чтобы изменить положение.
Теперь ваш спрайт основан на теге IMG, так что вы можете использовать свой alt
текст.
Следующий пример основан на спрайте Facebook с двумя версиями значка друг на друга, каждый из которых 50 % на 50 %, общая высота изображения составляет 100px:
<!DOCTYPE html>
<html>
<head>
<style>
.icon {
display:block;
position:relative;
width:50px;
height:50px;
border:1px solid red;
overflow:hidden;
}
#fb {
position:absolute;
top:0;
left:0;
}
#fb:hover {
position:absolute;
top:-50px;
left:0;
}
</style>
</head>
<body>
<a href="https://facebook.com" class="icon" title="Facebook">
<img src="sprite-facebook.png" id="fb" width="50" height="100" alt="Facebook">
</a>
</body>
</html>