Middle
WebP форматындағы қолдауды басқа сурет форматтарына fallback-пен қалай жүзеге асыруға болады?
sobes.tech AI
AI-дан жауап
Ең кең таралған әдіс — <picture> элементін немесе image-set() функциясы бар CSS-ті пайдалану.
<picture> элементі:
<picture>
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Суретті сипаттау">
</picture>
- Браузер алдымен
image/webpқолдауын тексереді. Егер қолдау болса,.webpжүктеледі. - Егер қолдау болмаса,
<img>тегініңsrcатрибутынан сурет жүктеледі.
CSS image-set() көмегімен:
.element {
background-image: url("image.jpg"); /* Фолбек */
background-image: image-set(
url("image.webp") type("image/webp"),
url("image.jpg") type("image/jpeg")
);
}
image-set()жәнеimage/webpқолдауы бар браузер WebP-ді жүктейді.- Басқа жағдайда
background-imageфолбек ретінде пайдаланылады.
CSS @supports көмегімен:
.element {
background-image: url("image.jpg"); /* Фолбек */
}
@supports (image-set(url("x") type("image/webp"), url("x") type("image/jpeg"))) {
.element {
background-image: image-set(
url("image.webp") type("image/webp"),
url("image.jpg") type("image/jpeg")
);
}
}
@supportsкөмегіменimage-set()жәнеimage/webpқолдауы нақты тексеріледі.
JavaScript арқылы анықтау:
WebP қолдауын тексеру үшін JavaScript қолдануға болады және src-ты динамикалық түрде өзгерту немесе басқа кластарды пайдалану мүмкін, бірақ бұл тиімді емес, себебі контенттің көрсетілуін баяулатады және қосымша сұрауларды талап етеді.
// WebP қолдауын тексеру мысалы (қарапайым)
function checkWebp(callback) {
const webp = new Image();
webp.onload = webp.onerror = function() {
callback(webp.height === 2);
};
webp.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4ICgAAAAwAQCdASoCAAIALmk0mk0iIiIiIgBoDvgbAQAAAP0ybQbAAADp+lWu/rXcAAAAA';
}
checkWebp(function(supported) {
if (supported) {
// WebP қолдану
} else {
// Фолбек қолдану
}
});