首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据条件左右显示<li>元素

根据条件左右显示<li>元素
EN

Stack Overflow用户
提问于 2020-10-09 02:06:01
回答 2查看 582关注 0票数 0

我试着用'li‘标签逐行显示消息,.The的主要目的是在右侧显示我们的消息,而其他在左侧的消息则显示在一个react应用程序中,但问题是,每当我尝试向左浮动或向右浮动时,所有元素都会像下面这样出现在同一条线上

我的反应聊天样式代码是这个

代码语言:javascript
复制
      {this.state.chats.map(chat => (<div key={chat.timestamp}>
        {this.state.user.uid === chat.uid  ?(
       <li className=" self" style={{listStyleType:"none",overflow:'hidden',marginLeft: 2 +'px',float:'right',display:'inline-block',
            backgroundColor:"whitesmoke",margin:2 + "em",padding:13+'px',width:'max-content',borderBottomLeftRadius:11+'px',
            borderBottomRightRadius:11+'px',borderTopLeftRadius:11+'px'}}>

                <div className="message text-dark">{chat.content} </div>
        </li>
            
          ):(
                <li className="other" style={{listStyleType:"none",overflow:'hidden',marginLeft: 2 +'px',float:'left',display:'inline-block',
            backgroundColor:"blanchedalmond",margin:2 + "em",padding:13+'px',width:'max-content',borderBottomLeftRadius:11+'px',
            borderBottomRightRadius:11+'px',borderTopRightRadius:11+'px'}}>
          
                 <div className="message text-dark">{chat.content}</div>
            
            </li>
            
          )}
        </div>
        ))}

编辑!:浮动个人div

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-09 02:16:23

代码语言:javascript
复制
.self {
  background: orange;
  float: right;
  clear: both;
}

.other {
  background: blue;
  float: left;
  clear: both;
}
代码语言:javascript
复制
<ul>
  <li class="self">message</li>
  <li class="self">message</li>
  <li class="self">message</li>
  <li class="self">message</li>
  <li class="other">message</li>
  <li class="other">message</li>
  <li class="other">message</li>
  <li class="self">message</li>
</ul>

https://developer.mozilla.org/en-US/docs/Web/CSS/clear检查浮动元素的清除属性。

票数 1
EN

Stack Overflow用户

发布于 2020-10-09 02:17:30

Flexbox解决方案:

代码语言:javascript
复制
.left {
  display: flex;
  justify-content: flex-start;
}

.right {
  display: flex;
  justify-content: flex-end;
}
代码语言:javascript
复制
<ul>
  <li class="left">
    Others message
  </li>
  <li class="right">
    Your message
  </li>
</ul>

解决方案2

尝试<li>占据整条线,并将float: left/right放到内部<div>

类似于:https://jsfiddle.net/L1g6wx34/

代码语言:javascript
复制
.left {
  float: left;
}

.right {
  float: right;
}
代码语言:javascript
复制
<ul>
  <li>
    <div class="left">
      Others message
    </div>
  </li>
  <li>
    <div class="right">
      Your message
    </div>
  </li>
  <li>
    <div class="right">
      Your message
    </div>
  </li>
</ul>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64272967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档