uni-app CSS伪类 float 在app端失效,且iOS端会使元素消失
uni-app CSS伪类 float 在app端失效,且iOS端会使元素消失
示例代码:
<template>
<view class="wrapper">
<view style="float: right;">11111222</view>
<view class="text" :class="{checked:flage}">
<view class="btn" v-if="isShow" @click="flage=!flage"></view>
{{text}}
</view>
<!-- 获取完全展开高度的view -->
<view class="text get-height-box" id="text">
{{text}}
</view>
</view>
</template>
<script>
export default {
data() {
return {
flage: false,
isShow:false,
text: `浮动元素是如如果还有更一行。
浮动元素是如何定位的还有更一行 有还有更一有更一行 有还有更一行 有还 更行。
。`
}
},
onLoad() {
this.$nextTick(function() {
let _this = this
let query = uni.createSelectorQuery().select('#text');
query.boundingClientRect(function(data) {
//单行行高 30
console.log(data.height);
if (data.height > 60) {
_this.isShow = true
}
})
.exec();
})
},
}
</script>
<style scoped>
.wrapper {
position: relative;
display: flex;
width: 800rpx;
overflow: hidden;
border-radius: 8px;
}
.text {
font-size: 20px;
line-height: 30px;
overflow: hidden;
text-overflow: ellipsis;
text-align: justify;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
position: relative;
color: #aaff00;
}
.get-height-box{
position: absolute;
-webkit-line-clamp: 999;/* 完全展开 */
z-index: -99;
background-color: #0066CC;
opacity: 0;
}
.text::before {
content: '';
height: calc(100% - 24px);
float: right;
}
.btn {
float: right;
clear: both;
font-size: 16px;
border-radius: 4px;
color: #000000;
cursor: pointer;
background-color: #00CE47;
}
.btn::before {
content: '查看全部'
}
.checked.text {
-webkit-line-clamp: 999;
}
.checked.text::after {
visibility: hidden;
}
.checked.text .btn::before {
content: '收起'
}
</style>
操作步骤:
上面代码
预期结果:
app 端和 h5 端一样
实际结果:
app 端和 h5 端不一样
bug描述:
h5 端

安卓端

iso 端

更多关于uni-app CSS伪类 float 在app端失效,且iOS端会使元素消失的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,更新一下 3.2.7 测试一下是否正常
更多关于uni-app CSS伪类 float 在app端失效,且iOS端会使元素消失的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好 我这边更新到3.2.9 还是出现上述问题
这个属于浏览器差异,你使用Safari浏览器访问也是这个问题,可以采用其他布局方式绕过
我靠 我整个展开更多要贴着文字的,其他布局实现不了吧
我这边只要一给float元素就消失了(APP安卓端、vue页面、HX3.2.16),H5就没问题,是不是APP不支持float
同样的问题请问怎么解决的?
我也遇到这个问题了
在 uni-app 中,float 属性在 App 端的支持确实有限,尤其是在 iOS 上可能导致元素渲染异常或消失。这是因为 uni-app 的 App 端基于原生渲染,而非 WebView,CSS 支持与 H5 有差异。以下分析和解决方案:
-
float 在 App 端的限制:
uni-app 的 App 端(iOS/Android)使用原生组件渲染,CSS 支持以 Flex 布局为主。float属性在原生环境中可能不被完全支持,尤其是在复杂布局中,可能导致元素位置错误或消失(如 iOS 端示例)。建议避免在 App 端使用float。 -
替代方案:
- 使用 Flex 布局替代
float。例如,将.wrapper改为display: flex; justify-content: space-between;,并调整子元素顺序。 - 对于示例中的右浮动元素,可通过 Flex 的
order属性或margin-left: auto;实现右对齐。 - 伪类
::before中的float: right可改为绝对定位或 Flex 布局模拟。
- 使用 Flex 布局替代
-
代码调整建议:
- 移除
float: right;,改用 Flex 控制布局。例如:.wrapper { display: flex; justify-content: space-between; align-items: flex-start; } .text::before { /* 替代 float: right */ position: absolute; right: 0; } - 检查 iOS 端元素消失问题:可能是
float导致渲染层级错误,移除后通常可解决。
- 移除
-
兼容性处理:
- 使用条件编译区分平台,在 App 端禁用
float:/* #ifndef APP-PLUS */ .btn { float: right; } /* #endif */
- 使用条件编译区分平台,在 App 端禁用

