【问题标题】:Chat bubble (react or react-native) component styling聊天气泡(react 或 react-native)组件样式
【发布时间】:2018-08-10 00:19:06
【问题描述】:

当我在寻找用户体验网站时,我发现了一些有趣的聊天气泡用户界面。也就是,
Chat Bubble UI ref

经过几天的头脑风暴,我不知道如何开发它。但我找到了一些解决该问题的方法,希望得到您的建议:

  1. 我应该计算消息行的宽度(绝对),但是这里的问题是每种语言都有不同的字符集,我应该如何知道每个字母的宽度并进行正确的计算。
  2. 在气泡拦截的边缘不应该有圆角,我解决这个问题的方法是将每条线划分为单独的组件,保持高于线宽和低于线宽的比较,并为该组件提供动态样式,例如:

    { 边界TopRightRadius : 5, 边框底部右半径:0 } 等等。该解决方案中的问题是我将为每条线拥有大量组件以及如此多的参考。当我考虑性能问题时,我对此有点气馁。

我邀请您进行一些头脑风暴(而不是编码)并找到解决我的问题的有效方法。非常感谢,谁花时间阅读。

【问题讨论】:

    标签: css reactjs react-native frontend stylesheet


    【解决方案1】:

    这是一个非常有趣的问题。对 web 和 react(而不是 react native)有更多的经验,我将描述我在浏览器中解决它的方式。

    1. 渲染线条,但保持不可见(opacity: 0visibility: none
    2. 获取它的大小并确定它是否比前一个兄弟更宽
    3. 在此基础上应用一个 CSS 类。特定的 CSS 类将具有边框半径和伪元素 (::before),这将是很好的“过渡”部分(肯定是 SVG)。
    4. 显示线条。我什至会将它渲染到已渲染的下方,并在此步骤中将组设置为顶部。

    我认为您必须为每一行创建元素(我又在谈论网络)。边界半径不应造成性能问题。

    让我知道你的想法,有时间我可能会为你做一个小例子。

    【讨论】:

    • 这听起来很合理,完全让我摆脱了盲目的做法。我不是在谈论由边界半径引起的性能问题,我实际上是在逐行指出我们在“聊天”容器中拥有的更多组件。而且我问的是独立于框架的问题,因为我相信我们可以通过在 react 和 react-native 之间进行一些小的调整来获得相同的结果。
    • 您会注意到大多数聊天应用程序并未呈现对话中的所有台词。您可以将其限制为 100 或 200,然后当用户一直向上滚动时,您可以加载更多。很好的可滚动列表问题:) 制作类似的东西,您可以将渲染元素的数量保持在一定数量之下。
    • 你说得对,我没有考虑回收。非常感谢您的建议,我会尽力让您知道 =)
    • 很高兴它有帮助,让我知道你最终实施了什么。
    【解决方案2】:

    你可以试试:

    bubbleChat: {
        borderRadius: 15,
        borderTopLeftRadius: 0, 
        display: 'flex',
        paddingLeft: 15,
        minWidth: 50
    },
    bubbleWrapper: {
        flexDirection: 'row'
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 2022-11-17
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多