css - 如何在聊天室中将聊天条目右对齐?

标签 css reactjs

我有一个 React 聊天应用程序,下面附上截图。所有带有橙色竖线的条目都是我自己输入的。我想要实现的是将我所有的聊天内容放在聊天室的右侧。请让我知道 message_self 中的哪些更改可以实现它。谢谢! enter image description here

下面是输出所有聊天记录的代码:

  <React.Fragment>
    <Segment>
      <Comment.Group className="messages">
        this.displayMessages(messages)
    </Segment>
  </React.Fragment>

displayMessages 的定义如下:

displayMessages = messages =>
    messages.length > 0 &&
    messages.map(message => (
      <Message
        key={message.timestamp}
        message={message}
        user={this.state.user}
      />
    ));

下面是Message组件的代码:

const isOwnMessage = (message, user) => {
  return message.user.id === user.uid ? "message__self" : "";
};

const isImage = message => {
  return message.hasOwnProperty("image") && !message.hasOwnProperty("content");
};

const timeFromNow = timestamp => moment(timestamp).fromNow();

const Message = ({ message, user }) => (
  <Comment>
    <Comment.Avatar src={message.user.avatar} />
    <Comment.Content className={isOwnMessage(message, user)}>
      <Comment.Author as="a">{message.user.name}</Comment.Author>
      <Comment.Metadata>{timeFromNow(message.timestamp)}</Comment.Metadata>
      {isImage(message) ? (
        <Image src={message.image} className="message__image" />
      ) : (
        <Comment.Text>{message.content}</Comment.Text>
      )}
    </Comment.Content>
  </Comment>
);

在 index.css 中,message__self 是这样的:

.message__self {
  border-left: 2px solid orange;
  padding-left: 8px;
}

最佳答案

我认为您需要做的就是翻转 Comment block 的内容。

因此对于顶部的 Comment 组件,您需要一些逻辑来确定使用什么 className。如果当前用户拥有此评论,则反转原始布局。

const Message = ({ message, user }) => (
  <Comment className={message.user.id === user.uid ? reverse : ""}>
    <Comment.Avatar src={message.user.avatar} />
    <Comment.Content className={isOwnMessage(message, user)}>
      <Comment.Author as="a">{message.user.name}</Comment.Author>
      <Comment.Metadata>{timeFromNow(message.timestamp)}</Comment.Metadata>
      {isImage(message) ? (
        <Image src={message.image} className="message__image" />
      ) : (
        <Comment.Text>{message.content}</Comment.Text>
      )}
    </Comment.Content>
  </Comment>
);

然后在您的 CSS 文件中,为 reverse 定义一个类

.reverse {
  display: flex;
  flex-direction: row-reverse;
}

关于css - 如何在聊天室中将聊天条目右对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57846510/

相关文章:

javascript - 无法将数据附加到 react 中的表

reactjs - 将容器组件嵌套在演示组件中

css - 为具有 <pre> 标记内容的引导模式主体添加水平滚动条

javascript - AngularJS 如何同时放置 ng-class 和 CSS 类

css - Bootstrap 轮播填充与 .well 类冲突

html - 选项元素中的多种样式

reactjs - this.forceUpdate() 不重新渲染动态创建的组件

reactjs - 使用 Redux 时如何声明 ReactJS 默认 props?

javascript - 错误 : Objects are not valid as a React child (found: object with keys. .........)

css - 是否可以在不影响溢出的情况下定位或 float 元素?