From f709483305db1bfa5a5e7e8dfbe078affaa6353d Mon Sep 17 00:00:00 2001 From: qiang Date: Fri, 3 Jan 2020 20:54:03 +0800 Subject: [PATCH] fix: h5 windowTop --- .../lib/addStylesClient.js | 8 -- .../lib/platforms/h5.js | 21 +++- src/platforms/h5/components/page/index.vue | 97 ++++++++++--------- src/platforms/h5/components/page/pageBody.vue | 6 +- src/platforms/h5/components/page/pageHead.vue | 91 ++++++++--------- .../h5/components/page/transparent.js | 6 +- src/platforms/h5/helpers/get-window-offset.js | 9 +- .../h5/view/bridge/subscribe/index.js | 17 ++-- 8 files changed, 137 insertions(+), 118 deletions(-) diff --git a/packages/vue-cli-plugin-uni/packages/h5-vue-style-loader/lib/addStylesClient.js b/packages/vue-cli-plugin-uni/packages/h5-vue-style-loader/lib/addStylesClient.js index d0270a9f5..c0bdff387 100644 --- a/packages/vue-cli-plugin-uni/packages/h5-vue-style-loader/lib/addStylesClient.js +++ b/packages/vue-cli-plugin-uni/packages/h5-vue-style-loader/lib/addStylesClient.js @@ -239,14 +239,6 @@ var VAR_WINDOW_BOTTOM = /var\(--window-bottom\)/gi function processCss(css) { - var envMethod = '' - envMethod = uni.canIUse('css.constant') ? 'constant' : envMethod - envMethod = uni.canIUse('css.env') ? 'env' : envMethod - if (envMethod) { - css = css.replace(VAR_STATUS_BAR_HEIGHT, envMethod + '(safe-area-inset-top)') - .replace(VAR_WINDOW_TOP, 'calc(var(--window-top) + ' + envMethod + '(safe-area-inset-top))') - .replace(VAR_WINDOW_BOTTOM, 'calc(var(--window-bottom) + ' + envMethod + '(safe-area-inset-bottom))') - } var page = getPage() if (!uni.canIUse('css.var')) { //不支持 css 变量 var offset = getWindowOffset() diff --git a/packages/webpack-uni-pages-loader/lib/platforms/h5.js b/packages/webpack-uni-pages-loader/lib/platforms/h5.js index 387e6c267..7d52e0654 100644 --- a/packages/webpack-uni-pages-loader/lib/platforms/h5.js +++ b/packages/webpack-uni-pages-loader/lib/platforms/h5.js @@ -96,9 +96,22 @@ const getPageComponents = function (inputDir, pagesJson) { } let windowTop = 44 - let pageStyle = Object.assign({}, globalStyle, props) - if (pageStyle.navigationStyle === 'custom' || ('titleNView' in pageStyle && (!pageStyle.titleNView || pageStyle.titleNView.type === - 'transparent' || pageStyle.titleNView.type === 'float'))) { + const pageStyle = Object.assign({}, globalStyle, props) + const titleNViewTypeList = { + 'none': 'default', + 'auto': 'transparent', + 'always': 'float' + } + let titleNView = pageStyle.titleNView + titleNView = Object.assign({}, { + type: pageStyle.navigationStyle === 'custom' ? 'none' : 'default' + }, pageStyle.transparentTitle in titleNViewTypeList ? { + type: titleNViewTypeList[pageStyle.transparentTitle], + backgroundColor: 'rgba(0,0,0,0)' + } : null, typeof titleNView === 'object' ? titleNView : (typeof titleNView === 'boolean' ? { + type: titleNView ? 'default' : 'none' + } : null)) + if (titleNView.type === 'none' || titleNView.type === 'transparent') { windowTop = 0 } @@ -300,7 +313,7 @@ module.exports = function (pagesJson, manifestJson) { const inputDir = process.env.UNI_INPUT_DIR const pageComponents = getPageComponents(inputDir, pagesJson) - + pagesJson.globalStyle = process.UNI_H5_PAGES_JSON.globalStyle delete pagesJson.pages delete pagesJson.subPackages diff --git a/src/platforms/h5/components/page/index.vue b/src/platforms/h5/components/page/index.vue index 4a4dbecaf..48455d87e 100644 --- a/src/platforms/h5/components/page/index.vue +++ b/src/platforms/h5/components/page/index.vue @@ -1,19 +1,21 @@