码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uniapp自动识别并切换到pad端、pc端【不断更新】【伸手党福利】


    目录

    • uniapp自动切换到pad、pc端(框架方法)
      • 1. 新建文件:
        • index为主页面(代理页面)
        • detail为主页面的引用页面(业务页面)
        • leftwindow为左边栏【名字随便起】
        • topwindow为顶部栏【名字随便起】
      • 2. pages.json
        • login页面禁止显示左边栏和顶部栏
        • 设置宽屏最大宽度、显示多少像素时候切换到pad版/pc版
        • 设置左边栏、顶部栏是哪个文件,宽度、高度是多少
        • index的通讯方法
        • leftwindow与detail通讯
      • 3. 注意问题:

    uniapp自动切换到pad、pc端(框架方法)

    1. 新建文件:

    在这里插入图片描述

    index为主页面(代理页面)

    detail为主页面的引用页面(业务页面)

    leftwindow为左边栏【名字随便起】

    topwindow为顶部栏【名字随便起】

    2. pages.json

    login页面禁止显示左边栏和顶部栏

    "pages": [
    		//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
    		{
    			"path": "pages/index/login",
    			"style": {
    				"topWindow": false,
    				"leftWindow": false,
    				"navigationBarTitleText": "",
    				"enablePullDownRefresh": false
    			}
    
    		},
    
    
    //………
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    设置宽屏最大宽度、显示多少像素时候切换到pad版/pc版

    	"globalStyle": {
    		"mp-alipay": {
    			/* 支付宝小程序特有相关 */
    			"transparentTitle": "always",
    			"allowsBounceVertical": "NO"
    		},
    		"navigationBarBackgroundColor": "#aa0000",
    		"navigationBarTitleText": "移动应用开发框架",
    		"navigationStyle": "custom",
    		"navigationBarTextStyle": "white",
    		"h5": {
    			"maxWidth": 1920,
    			"navigationBarTextStyle": "black",
    			"navigationBarBackgroundColor": "#F1F1F1"
    		},
    		//设置宽屏最大宽度
    		"rpxCalcMaxDeviceWidth": 960, // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
    		"rpxCalcBaseDeviceWidth": 375 // 设备实际宽度超出 rpx 计算所支持的最大宽度时,rpx计算所采用的固定屏幕宽度,单位 px,默认值为 375
    		
    	},
    
    
    
    
    		"usingComponts": true,
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    设置左边栏、顶部栏是哪个文件,宽度、高度是多少

    
    	 	"leftWindow": {
    	  	 "path": "pages/pc/common/index.vue", // 指定 rightWindow 页面文件  
    		 "style": {
    		   "width": "370px" // 页面宽度  
    		 },
    		 "matchMedia": {
    		   "minWidth": 960 //生效条件,当窗口宽度大于768px时显示  
    		 }  
    	  },
    	  "topWindow": {
    	  	"path": "pages/pc/common/topwindow.vue",
    		"style": {
    			"height":"50px"
    			 // "width": "calc(100vw)"
    		},
    		"matchMedia": {
    			"minWidth": 960 //生效条件,当窗口宽度大于768px时显示  
    		}
    	  }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    index的通讯方法

    <template>
    	<view>
    		<view v-if="showLeft=='1'">
    			<detail></detail>
    		</view>
    		
    	</view>
    </template>
    <script>
    	import detail from "./detail.vue"
    	export default {
    		components:{
    			detail
    		},
    		data() {
    			return {
    				showLeft:'1'
    			}
    		},
    		methods: {
    			load(){
    				console.log("1111");
    			}
    		},
    		created(e) {  
    		      //监听自定义事件,该事件由左侧列表页的点击触发  
    			  console.log(e);
    		      uni.$on('detail', (e) => {  
    				  console.log(e);
    		        // 执行 detailPage组件,即:/pages/detail/detail.vue 页面的load方法  
    		        // this.$refs.detail.load(e.detail);
    		      })
    		    }
    	}
    </script>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    leftwindow与detail通讯

    leftwindow发起请求

    methods: {
    			a(detail) {
    				// let detail = {}
    				//若为宽屏,则触发右侧分栏详情页的自定义事件,通知右侧窗体刷新新闻详情  
    				uni.$emit('detail', {
    					detail: encodeURIComponent(JSON.stringify(detail))
    				})
    			},
    			
    		}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    detail添加监听

    created(e) {  
    		      //监听自定义事件,该事件由左侧列表页的点击触发  
    			  console.log(e);
    		      uni.$on('detail', (e) => {  
    				  console.log(e);
    		        // 执行 detailPage组件,即:/pages/detail/detail.vue 页面的load方法  
    		        // this.$refs.detail.load(e.detail);
    		      })
    		    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3. 注意问题:

    1. 地址的切换支持window.loation.href
    2. 切换窗口之间的通讯需要使用$emit,但是leftwindow和topwindow之间的通讯目前没有研究
    3. topwindow内显示的临时组件(比如弹窗)可以高于topwindow本身。但是需要设置内容
    4. 加载的时候是先加载主页面,再加载left和topwindow的
    5. 组件间通信需要改善
  • 相关阅读:
    webpack、vue.config.js
    C 语言 while 和 do...while 循环
    数据结构与算法-Hash算法
    【C语言】函数的定义、传参与调用(一)
    Unity 鼠标悬浮时文本滚动(Text Mesh Pro)
    Python中协程异步IO(asyncio)理解与入门
    Java方法概念/方法的定义与调用/形参与实参/方法的注意事项
    安装Anaconda后配置Pytorch环境
    MyBatis源码剖析之Mapper代理方式细节
    JavaScript入门——基础知识(4)
  • 原文地址:https://blog.csdn.net/wwppp987/article/details/127958548
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号