html - CSS 的 Flex 属性隐藏 WebChat 中的滚动条

标签 html css flexbox

我有一个通过 URL 下载的网络聊天小部件,但我需要设置该小部件的样式,以便滚动条的底部始终显示最新消息。我找到了一种使用 CSS 来做到这一点的方法,但还没有完全实现。

如果我添加 display: -webkit-flex; 我就得到了我所需要的,但是聊天窗口的宽度却神秘地缩短了。我尝试添加宽度属性,但运行时它们被忽略。

enter image description here

然后,如果我使用 display: -webkit-flex;flex-direction:column-reverse,宽度将保持其所在容器的完整宽度,并且焦点位于底部,就像我想要的那样,但是滚动条消失了,因此用户无法查看过去的消息。我还尝试了一些 JavaScript 方法,但是当我将它们添加到我的 .pug 文件中的脚本中时,这些方法似乎也被忽略了。

Scrollbar gone

如何让我的聊天窗口将滚动焦点保持在底部(无需滚动即可查看新消息),并且仍然能够再次手动滚动到顶部以查看旧消息?我对 CSS、HTML 或 JavaScript 的解决方案持开放态度。由于 HTML 很容易转化为 Pug 格式,因此我将其作为标签包含在内,即使我在 UI 中使用 Pug。

index.pug

 chat-window
      #webchat(action='/chat', method='POST')
      script(src='https://cdn.botframework.com/botframework-webchat/latest/webchat.js')
      script.
        const styleSet = window.WebChat.createStyleSet({
          bubbleBackground: 'rgba(252, 229, 53, 1)',
          bubbleFromUserBackground: 'rgba(4, 234, 104, 1)',
          paddingRegular: 10,
          sendBoxHeight: 50,   
        });
        window.WebChat.renderWebChat({
        directLine: window.WebChat.createDirectLine({ secret: 'xxxxxxxxxxxxxxxxxxxxxxxxxx' }),
        styleSet
        }, document.getElementById('webchat'));

ma​​in.css

chat-window {
    border-style: solid;
    border-width: 2px 2px 1px 1px;
    border-color: #000080;
    float: left;
    padding-top: 40px;
    padding-bottom: 40px;
    width: 70%;
    background-color: #5a8cb1;
    height: 350px;
}

#webchat {
    max-height: 270px;
    margin-bottom: 20px;
    width: 100%;
    overflow: auto;
    display: -webkit-flex;
}

最佳答案

没有任何回应并不奇怪,因为小部件本身就是它自己的野兽,可能会影响任何 CSS 或 Javascript,并具有自己的样式。尽管有些 CSS 确实有效,所以还是值得一试。小部件的样式设置选项并不多,但我确实找到了解决方法。它在视觉上没有我希望的那么好,但它确实将网络聊天窗口扩展到了更大的宽度。我意识到当我添加 display: -webkit-flex; 时它被截断的原因是因为它对聊天气泡文本“灵活”。因此,当我输入较长的文本时,它会变宽。因此,我通过WebChat widget from Microsoft找到了一些网络聊天本身的最小样式选项。 。我把气泡宽度设置得更大,这样当输入更长的文本时,它至少会显示更大的网络聊天框:

enter image description here

这是一个足够好的解决方法。聊天窗口开始时更窄(直到输入更长的文本),但我可以处理这个问题。但加宽后它确实保持宽,所以这至少是好的。另外,我不会丢失滚动条,这是必不可少的。

最终代码:

main.css

#webchat {
    max-height: 270px;
    margin-bottom: 20px;
    width: 100%;
    overflow: auto;
    display: -webkit-flex;
    justify-content: center;
}

索引.pug

chat-window
  #webchat(action='/chat', method='POST')
  script(src='https://cdn.botframework.com/botframework-webchat/latest/webchat.js')
  script.
    const styleSet = window.WebChat.createStyleSet({
      bubbleBackground: 'rgba(252, 229, 53, 1)',
      bubbleFromUserBackground: 'rgba(4, 234, 104, 1)',
      paddingRegular: 10,
      sendBoxHeight: 50,  
      bubbleMinWidth: 400,
      bubbleMaxWidth: 700
    });
    window.WebChat.renderWebChat({
    directLine: window.WebChat.createDirectLine({ secret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx' }),
    styleSet
    }, document.getElementById('webchat'));

关于html - CSS 的 Flex 属性隐藏 WebChat 中的滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53890910/

相关文章:

javascript - HTML 自动播放视频并从文件夹继续循环

html - 语义 UI 中的边框类

html - 图像居中时 Flexbox 高度会增加

javascript - <ul> 中的 HTML、CSS : a href image to the left ,

javascript - 我如何更改此代码,使其从白色>绿色>黑色?

html - 水平的 li 在 IE7 中显示为垂直

html - CSS - 为什么我的跨度需要 float 来显示具有固定宽度和高度的图像?

angularjs - Flexbox 在 iOS 移动浏览器和 OS X Safari 上的奇怪行为

css - Tailwind - Flex-No-Shrink 和 Flex-Wrap 如何工作

html - 悬停时链接的多种字体颜色?