pc和mobile切换方式

最近看了游戏站点https://yandex.com/games/zh/category/simulator,在他们的游戏站发现一个很有趣的现象:就是他们在pc端进行窗口变化时,界面也会跟着响应式变化。但是这时候切换到移动端,仍然是pc端的样式。如果这时候刷新页面,就会以一个新的样式展示。在不同端分别查看html的网络请求,发现预览的结果与真实页面一样,dom结构基本已经处理好了。

pc和mobile切换方式

1、pc端和移动端切换的主要方式

  • 1、通过css媒体查询和弹性布局(弹性盒子布局、网格布局)
  • 2、常规使用rem、vh、vm、百分比等处理
  • 3、基于URL参数或者路径进行切换
  • 4、网页加载时检查用户的User-Agent字符串,然后加载不同样式、资源和其他js。或者直接通过nginx处理

上述站点大概是采用第4种和第1种方式结合处理,本文主要使用第四种方式演示。

2、基于nginx+User-Agent进行切换

使用Nginx的ngx_http_map_module模块来根据用户的设备类型进行重定向或代理到不同的站点

  • a、新建一个D:\nginx\config\nginx.conf文件
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    # 定义一个映射,根据User-Agent判断设备类型(同时忽略大小写匹配)
    map $http_user_agent $device_type {
        default         pc;
        ~*mobile|android|iphone        mobile;
        ~*ipad          tablet;
    }


server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html/pc;
            if ($device_type = mobile){
                 root   /usr/share/nginx/html/mobile;
            }
            index  index.html index.htm;

        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

    }
}

  • b、新建一个D:\nginx\html\mobile\index.html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>移动端</title>
</head>
<body>
    移动端
</body>
</html>
  • c、新建一个D:\nginx\html\pc\index.html文件
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>电脑端</title>
</head>

<body>
    电脑端
</body>

</html>
  • d、执行docker指令去运行nginx测试
docker run --name some-nginx -p 8801:80 -v D:/nginx/html:/usr/share/nginx/html:ro -v D:/nginx/config/nginx.conf:/etc/nginx/nginx.conf -d nginx

pc和mobile切换方式

3、参考方式

原文链接:https://juejin.cn/post/7344567580642787343 作者:5大大大大雄

(0)
上一篇 2024年3月10日 上午11:13
下一篇 2024年3月10日 下午4:05

相关推荐

发表回复

登录后才能评论