具有javascript document.write的响应图像
Responsive images with javascript document.write
我想在我的网站上使用响应图像,根据屏幕大小加载不同的分辨率,并提出了一种简单的javascript方法,请参阅下文。
有什么理由不使用这个解决方案吗?
谢谢!
<script language="Javascript">
var w=window.innerWidth;
if (w<=480){
document.write('<img src="files/design/logo_480.jpg" ');
}else if(w<=768){
document.write('<img src="files/design/logo_768.jpg" ');
}else{
document.write('<img src="files/design/logo_960.jpg" >');
}
</script>
使用标准并将picture
或srcset
与sizes
一起使用(取决于您的用例)。
关于浏览器支持,有两种polyfill,您可以简单地使用:
- 重新映像
- 图片填充
使用部分自定义解决方案确实没有任何借口。
这是一个系列文章。
您可以使用浏览器内置的图片元素。请参见此处:http://googlechrome.github.io/samples/picture-element/
关于htmlrocks 的更多信息
看看这里为什么不应该使用document.write
https://stackoverflow.com/a/802943/2767886
你不应该使用这个JS,因为:
- 您必须添加一个调整大小事件(如果窗口宽度发生变化,则需要更新徽标大小)
- 在调整新徽标的大小时,url->将是一个新的加载请求
- 是
document.write
- 关闭javascript的人看不到徽标
纯CSS解决方案会更容易:
@media screen and (max-width: 480px) {
.logo {
background-image: url(files/design/logo_480.jpg);
width: 480px; height: 75px;
}
}
@media screen and (max-width: 768px) {
.logo {
background-image: url(files/design/logo_768.jpg);
width: 768px; height: 100px;
}
}
@media screen and (min-width: 768px) {
.logo {
background-image: url(files/design/logo_960.jpg);
width: 960px; height: 150px;
}
}
我不知道你的浏览器支持规范,但有HTML5方法:<picture>
元素。但它支持的浏览器很少——http://caniuse.com/#feat=picture
更新
另一种方法是使用CSS和@media
规则。但在这里,您将处理背景图像,而不是可能不符合语义的<img>
元素(何时使用IMG与CSS背景图像?):
@media screen and (max-width: 480px) {
div.my-image {
background-image: url(files/design/logo_480.jpg);
}
}
@media screen and (max-width: 768px) {
div.my-image {
background-image: url(files/design/logo_768.jpg);
}
}
@media screen and (min-width: 768px) {
div.my-image {
background-image: url(files/design/logo_960.jpg);
}
}
浏览器支持-IE9+、Chrome 21+、FF 3.5+(http://www.w3schools.com/cssref/css3_pr_mediaquery.asp)
更新#2
另一种方法-您可以简单地更改现有<img>
的src
,而不是write
内容。
var w=window.innerWidth;
var img = document.getElementById("logo");
if (w<=480){
img.src = "files/design/logo_480.jpg"
}else if(w<=768){
img.src = "files/design/logo_768.jpg"
}else{
img.src = "files/design/logo_960.jpg"
}
相关文章:
- 具有javascript document.write的响应图像
- 网格状、多响应图像
- 响应图像tinymce图像链接
- jQuery Mobile Listview中的响应图像
- 使用getJSON填充动画响应图像网格
- 响应图像(通过管道和response.end())会导致奇怪的行为
- 创建响应图像的最简单方法是什么
- 在引导列中垂直居中响应图像
- 引导程序:面板中的响应图像
- 基于JQuery的全宽响应图像滑块已损坏
- 像元srcset响应图像翻转
- 具有翻转/图像交换功能的响应图像地图位于潜水器外部
- 检测宽度并使用响应图像
- 简单的响应图像方法
- 固定位置的响应图像周围的内容
- 响应图像映射与坐标
- 我如何使一个响应图像地图,其中图像和热点自动调整大小与窗口
- 覆盖响应图像
- 响应图像滑块居中图像
- 如何在不影响图像大小的情况下对响应图像进行中心缩放