苹果文本动态高亮,滚动时候部分高亮不显示问题

1 篇文章 0 订阅
1 篇文章 0 订阅

很简单的需求:

一个文本容器固定大小,内容超出滚动,然后文本点击高亮,奇怪就是苹果微信打开会出现点击只会高亮能看见的区域文本,滚动部分不会显示,默认浏览器打开也不行,安卓没问题,那就是苹果兼容问题了,然后加班排问题…

问题复现组件代码:

<template>
  <ul class='box'>
    <li class="list" @click="handleCLick(item.id)" :class="{active:item.id===currentId}" v-for="item in list" :key="item.id">
      <!-- 直接文本会不正常 -->
  {{item.text}}
  <!-- span包裹有时候不正常,不知道为啥我有的组件会不行,有的可以,不知道为啥 -->
      <!-- <span>{{item.text}}</span> -->
      <!-- 用p标签包裹可以正常 -->
      <!-- <p>{{ item.text }}</p> -->
    </li>
  </ul>
</template>

<script>
export default {
  name: "bb",

  data() {
    return {
      list: [
        { id: 1, text: "文文本文本文本文本文本文文本文本文本文本文本文本本文文本文本文本文本文本文本本文文本文本文本文本文本文本本文本本" },
        { id: 2, text: "文文本文本文本文本文本文文本文本文本文本文本文本本文文本文本文本文本文本文本本文文本文本文本文本文本文本本文本本" },
        { id: 3, text: "文文本文本文本文本文本文文本文本文本文本文本文本本文文本文本文本文本文本文本本文文本文本文本文本文本文本本文本本" },
      ],
      currentId:1
    };
  },

  created() {},

  mounted() {},

  methods: {
    handleCLick(id) {
      this.currentId = id;
    }
  },
};
</script>

<style scoped lang='scss'>

.box {
  background: #fff;
  display: flex;
  margin: 30px 0 ;
}

.list {
  width: 100px;
  height: 80px;
  overflow: auto;
  margin: 5px;
}
.active {
  color: blue;
}
</style>

结果如下,这是我重新写个测试demo,默认高亮第一个,点击第二个高亮,滚动发现下面还是黑色,奇了怪了。
在这里插入图片描述
安卓没有问题,就苹果搞特殊,问AI说:
在这里插入图片描述
不过AI提供的是用IntersectionObserver去监听解决,先不说这个解决不了,就这么简单的高亮都有问题,说不过去啊。

最后解决:

发现问题是文本我没有用元素包裹苹果有问题:

<template>
 <ul class='box'>
    <li class="list" @click="handleCLick(item.id)" :class="{active:item.id===currentId}" v-for="item in list" :key="item.id">
  {{item.text}}
    </li>
  </ul>
  <template/>

最后尝试发现给文本包一层元素 p 标签就可以了,用span包可能有时候有问题,我有个组件就是不行,不过那个组件业务代码太多了不确定是其他因素影响,但是用p可以。

<template>
  <ul class='box'>
    <li class="list" @click="handleCLick(item.id)" :class="{active:item.id===currentId}" v-for="item in list" :key="item.id">
      <!-- 直接文本会不正常 -->
    <!--   {{item.text}}  -->
  <!-- span包裹有时候不正常,不知道为啥我有的组件会不行,有的可以,不知道为啥 -->
      <!-- <span>{{item.text}}</span> -->
      <!-- 用p标签包裹可以正常 -->
    <p>{{ item.text }}</p> 
    </li>
  </ul>
</template>

就这浪费我两个小时找原因,具体原理还不是很清楚,应该就是苹果问题

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值