为移动设备提供与桌面不同的内容
serve different content for a mobile device than desktop
我正在构建一个网站,如果用户使用的是桌面设备,我希望提供视频,如果用户使用的是移动设备,我将提供 gif。
有人对此有最佳实践指导吗?
下面的代码够了吗?当我在 chrome 上测试它时,它没有显示移动 gif,但这里可能有些地方不正确。
我是否应该使用 modernizr 来弥补 browser/device 我可能没有意识到的不一致?有没有我应该采取的 data-src
方法?
<div id="main"></div>
<script type="text/javascript">
var main = document.getElementById('main');
//check if a mobile device
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
main.innerHTML = '<img src="http://static1.squarespace.com/static/552a5cc4e4b059a56a050501/565f6b57e4b0d9b44ab87107/566024f5e4b0354e5b79dd24/1449141991793/NYCGifathon12.gif>"';
}
else {
main.innerHTML = '<video width="640" height="360" controls="" autoplay=""><source src="http://clips.vorwaerts-gmbh.de/VfE_html5.mp4" type="video/mp4"><source src="http://clips.vorwaerts-gmbh.de/VfE.webm" type="video/webm"><source src="http://clips.vorwaerts-gmbh.de/VfE.ogv" type="video/ogg"></video>';
}
</script>
请不要测试设备,测试屏幕尺寸。
var windowWidth = $(window).width();
var maxDeviceWidth = 768;
if (windowWidth > maxDeviceWidth) {
//Server the desktop version
//You can get the content with Ajax or load both and hide the other
} else {
//Load the mobile content - either with Ajax, or hide the desktop content
}
我建议您根据屏幕宽度 Ajax 加载内容。确保你也把它放在
$(window).resize();
确保您考虑到屏幕向侧面转动。
更新:我包含了基于 innerWidth
的动态插入,所以现在应该很酷了,它包含一个宽屏视频和一个小屏 gif。
HTML:
<div class="wrapper">
<div id="video-container">
<video></video>
</div>
<div id="gif-container">
<img src="gif.gif">
</div>
</div>
CSS:
#video-container {
display: none;
}
#gif-container {
display: block;
}
// Mobile first = win!
@media screen and (min-width: 40em) {
#video-container {
display: block;
}
#gif-container {
display: none;
}
}
JavaScript:
function videoOrImage() {
console.log('hit')
if(window.innerWidth > 800) {
document.getElementById('gif-container').innerHTML = ''
var container = document.getElementById('video-container')
container.innerHTML = '<video width="320" height="240" controls><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg">Your browser does not support the video tag.</video>'
}
else {
document.getElementById('video-container').innerHTML = ''
var container = document.getElementById('gif-container')
container.innerHTML = '<img src="https://placehold.it/200">';
}
}
window.onresize = videoOrImage();
我正在构建一个网站,如果用户使用的是桌面设备,我希望提供视频,如果用户使用的是移动设备,我将提供 gif。
有人对此有最佳实践指导吗?
下面的代码够了吗?当我在 chrome 上测试它时,它没有显示移动 gif,但这里可能有些地方不正确。
我是否应该使用 modernizr 来弥补 browser/device 我可能没有意识到的不一致?有没有我应该采取的 data-src
方法?
<div id="main"></div>
<script type="text/javascript">
var main = document.getElementById('main');
//check if a mobile device
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
main.innerHTML = '<img src="http://static1.squarespace.com/static/552a5cc4e4b059a56a050501/565f6b57e4b0d9b44ab87107/566024f5e4b0354e5b79dd24/1449141991793/NYCGifathon12.gif>"';
}
else {
main.innerHTML = '<video width="640" height="360" controls="" autoplay=""><source src="http://clips.vorwaerts-gmbh.de/VfE_html5.mp4" type="video/mp4"><source src="http://clips.vorwaerts-gmbh.de/VfE.webm" type="video/webm"><source src="http://clips.vorwaerts-gmbh.de/VfE.ogv" type="video/ogg"></video>';
}
</script>
请不要测试设备,测试屏幕尺寸。
var windowWidth = $(window).width();
var maxDeviceWidth = 768;
if (windowWidth > maxDeviceWidth) {
//Server the desktop version
//You can get the content with Ajax or load both and hide the other
} else {
//Load the mobile content - either with Ajax, or hide the desktop content
}
我建议您根据屏幕宽度 Ajax 加载内容。确保你也把它放在
$(window).resize();
确保您考虑到屏幕向侧面转动。
更新:我包含了基于 innerWidth
的动态插入,所以现在应该很酷了,它包含一个宽屏视频和一个小屏 gif。
HTML:
<div class="wrapper">
<div id="video-container">
<video></video>
</div>
<div id="gif-container">
<img src="gif.gif">
</div>
</div>
CSS:
#video-container {
display: none;
}
#gif-container {
display: block;
}
// Mobile first = win!
@media screen and (min-width: 40em) {
#video-container {
display: block;
}
#gif-container {
display: none;
}
}
JavaScript:
function videoOrImage() {
console.log('hit')
if(window.innerWidth > 800) {
document.getElementById('gif-container').innerHTML = ''
var container = document.getElementById('video-container')
container.innerHTML = '<video width="320" height="240" controls><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg">Your browser does not support the video tag.</video>'
}
else {
document.getElementById('video-container').innerHTML = ''
var container = document.getElementById('gif-container')
container.innerHTML = '<img src="https://placehold.it/200">';
}
}
window.onresize = videoOrImage();