O uni-app fornece duas APIs assíncronas (uni.getSystemInfo) e síncronas (uni.getSystemInfoSync) para obter informações do sistema
endereço de resolução do site oficial do uniapp
uni.getSystemInfo
Obter informações do sistema de forma assíncrona
nome do parâmetro | tipo | obrigatório | ilustrar |
---|---|---|---|
sucesso | Função | sim | Retorno de chamada para chamada de interface bem-sucedida |
falhar | Função | não | Função de retorno de chamada para falha de chamada de interface |
completo | Função | não | A função de retorno de chamada do fim da chamada de interface (a chamada será executada com sucesso ou com falha) |
success retorna outros parâmetros (veja o site oficial para detalhes)
Perceber:
- Altura da tela = altura nativa do NavigationBar (incluindo altura da barra de status) + altura utilizável da janela + altura nativa do TabBar
- windowHeight não contém a altura de NavigationBar e TabBar
- No lado da web, windowTop é igual à altura de NavigationBar e windowBottom é igual à altura de TabBar
- No lado do aplicativo, windowTop é igual à altura do NavigationBar no estado transparente e windowBottom é igual à altura do TabBar no estado transparente
- Informações de alta relevância devem ser obtidas no onReady. Muito cedo para obtê-lo. A unidade de altura e largura é px
uni.getSystemInfo({
success: function(res) {
// *****高度宽度的单位都是px
console.log(res.screenHeight); // 屏幕高度,包含导航栏
console.log(res.windowHeight); // 能够使用的窗口高度,不包含导航栏
console.log(res.screenWidth); // 屏幕宽度
console.log(res.windowWidth); // 能够使用的窗口宽度
console.log("windowHeight:",res.windowHeight)
let windowHeight = res.windowHeight;
}
})
uni.getSystemInfoSync
Uma interface síncrona para obter informações do sistema. Os parâmetros de chamada e o valor de retorno são os mesmos de getSystemInfo acima.
uni.getSystemInfoSync({
success: function(res) {
// *****高度宽度的单位都是px
console.log(res.screenHeight); // 屏幕高度,包含导航栏
console.log(res.windowHeight); // 能够使用的窗口高度,不包含导航栏
console.log(res.screenWidth); // 屏幕宽度
console.log(res.windowWidth); // 能够使用的窗口宽度
console.log("windowHeight:",res.windowHeight)
let windowHeight = res.windowHeight;
}
})
Encapsulamento do método para obter a altura da área ativa
/**
* 获取活动区域高度
* @param { nodeName } 节点名字
* @param { nodeHeight } 节点高度
* @param { nodeMPHeight } 节点margin 和 padding 的高度
*
*/
function getHeight(nodeName, nodeHeight = 0,nodeMPHeight = 0) {
let pageHeight = uni.getSystemInfoSync().windowHeight; // 获取当前页面的高度
console.log("pageHeight: ",pageHeight)
// 获取结节高度方法
// #ifdef H5
const query = uni.createSelectorQuery();
// #endif
// #ifdef APP
const query = uni.createSelectorQuery().in(this)
// #endif
// 获取当前结节高度值
let nHeight = nodeHeight
query
.select(nodeName)
.boundingClientRect(data => {
console.log("data.height: ",data.height)
nHeight = data.height
})
.exec();
let nowHeight = pageHeight - nHeight - nodeMPHeight
console.log("nowHeight",nowHeight)
return nowHeight + 'px'
}
2. 调用
/**
* 获取滚动高度--高度相关信息,要放在 onReady 里获取,太早取不到;
* 单位都是px
* 将rpx单位值转换成px
* uni.upx2px(600) + 'px';
* */
this.h = this.getHeight('#content-head', 0, uni.upx2px(20));