Vue 3 CLI 聊天应用程序引导文本不会向左对齐

Posted

技术标签:

【中文标题】Vue 3 CLI 聊天应用程序引导文本不会向左对齐【英文标题】:Vue 3 CLI Chat app bootstrap text won't align to the left 【发布时间】:2020-12-11 14:30:49 【问题描述】:

我正在制作一个 Vue 应用程序,它的一部分功能是在 firestore 的支持下为用户提供实时聊天室。我的 Vue 应用程序中有 npm install bootstrap 和 v-chat-scroll。我最初尝试将一些消息放在聊天室的左侧,而在右侧使用 span 元素中的 v-if="equal_name(message)" 放置一些消息(此功能在下面提供)。但它没有用。所以我直接将 class=" text-left" 分配给我的元素。但是该元素仍然没有向左对齐。我不知道为什么。

    <template>
    <div class="container chat">
        <h2 class="text-primary text-center">Real-time chat</h2>
        <h5 class="text-secondary text-center">name </h5>
        <div class="card">
            <div class="card-body">
                <p class="text-secondary nomessages" v-if="messages.length == 0">
                    [no messages yet!]
                </p>
                <div class="messages" v-chat-scroll="always: false, smooth:true">
                    <div v-for="message in messages" :key="message.id">
                            <span class="text-info text-left">[ message.name ] : message.message</span>
                            <span class="text-secondary time">message.timestamp</span>
                    </div>
                </div>
            </div>

            <div class="card-action">
                <CreateMessage :name="name"/>
            </div>
        </div>
    </div>
</template>

下面是这个Vue的脚本和样式

<script>
    import CreateMessage from "@/components/CreateMessage";
    import fb from "@/firebase/init.js";
    import moment from "moment";

    export default
        name: "Chat",
        props: 
            name: String
        ,
        components:
            CreateMessage
        ,
        methods:
            equal_name(message)
                if(message.name==this.name)
                    return true;
                else
                    return false;
                
            
        ,
        data()
            return
                messages: []
            
        ,
        created() 
            let ref = fb.collection("messages").orderBy("timestamp");
            ref.onSnapshot(snapshot => 
                snapshot.docChanges().forEach(change => 
                    change.type = "added";
                    if(change.type == "added" )
                        let doc = change.doc;
                        this.messages.push(
                            id: doc.id,
                            name: doc.data().name,
                            message: doc.data().message,
                            timestamp: moment(doc.data().timestamp).format("MMM Do YY")
                        )
                    
                )
            )
        
    
</script>

<style>
.chat h2
    font-size: 2.6em;
    margin-bottom: 0px;
    

.chat h5
    margin-top: 0px;
    margin-bottom: 40px;

.chat span
    font-size: 1.2em;


.chat .time
    display: block;
    font-size: 0.7em;

.messages
    max-height: 300px;
    overflow: auto;
    text-align: unset;

</style>

【问题讨论】:

【参考方案1】:

我已经在 bootstrap 中使用 flex 解决了我的问题。

<div v-if="equal_name(message)">
              <div class="d-flex flex-row">
                <div class="text-info">
                  [  message.name  ] :  message.message 
                </div>

如果我需要内容向左对齐,我使用 flex-row 和 v-if。如果我需要内容向右对齐,我使用 flex-row-reverse 和 v-else

<div v-else>
              <div class="d-flex flex-row-reverse">
                <div class="text-info">
                  [  message.name  ] :  message.message 
                </div>

虽然我仍然不知道为什么我不能只分配 class=" text-left" 或 "text-right" 来做上面的事情。

【讨论】:

以上是关于Vue 3 CLI 聊天应用程序引导文本不会向左对齐的主要内容,如果未能解决你的问题,请参考以下文章

带有引导程序或 Vuetify 的 Vue CLI 4

css 短文本居中,长文本左对其

垂直居中并左对齐一列弹性项目

vue_cli动画

Vue CLI 3 不会将供应商转换为 ES5

Vue CLI 3 - 构建不会因 lint 错误而失败