聊天对话框(与自己的灵魂对话)

1.1 用vue实现聊天对话框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style type="text/css">
        .talk_con {
            width: 600px;
            height: 500px;
            border: 1px solid #666;
            margin: 50px auto 0;
            background: #f9f9f9;
        }

        .talk_show {
            width: 580px;
            height: 420px;
            border: 1px solid #666;
            background: #fff;
            margin: 10px auto 0;
            overflow: auto;
        }

        .talk_input {
            width: 580px;
            margin: 10px auto 0;
        }

        .whotalk {
            width: 80px;
            height: 30px;
            float: left;
            outline: none;
        }

        .talk_word {
            width: 420px;
            height: 26px;
            padding: 0px;
            float: left;
            margin-left: 10px;
            outline: none;
            text-indent: 10px;
        }

        .talk_sub {
            width: 56px;
            height: 30px;
            float: left;
            margin-left: 10px;
        }

        .atalk {
            margin: 10px;
        }

        .atalk span {
            display: inline-block;
            background: #0181cc;
            border-radius: 10px;
            color: #fff;
            padding: 5px 10px;
        }

        .btalk {
            margin: 10px;
            text-align: right;
        }

        .btalk span {
            display: inline-block;
            background: #ef8201;
            border-radius: 10px;
            color: #fff;
            padding: 5px 10px;
        }
    </style>
    <script src="./vue.js"></script>
    <script>
        window.onload = function () {
            var vm = new Vue({
                el: '#app',
                data: {
                    inputValue: '',
                    selectValue: '0',
                    list: [
                        {who: 'A', what: '吃饭了吗?'},
                        {who: 'B', what: '还没呢,你呢?'}
                    ]
                },
                methods: {
                    btnClicked: function () {
                        // 判断input输入时候有值:
                        if (this.inputValue == '') {
                            // 如果为空,进入这里:
                            alert('内容不能为空')
                            return
                        }

                        // 判断select的值是a说还是b说
//                        if (this.selectValue == '0') {
//                            // a 说
//                            this.list.push({who: 'A', what: this.inputValue})
//                        } else {
//                            // b 说
//                            this.list.push({who: 'B', what: this.inputValue})
//
//                        }
                        this.list.push({who:this.selectValue == '0'?'A':'B', what: this.inputValue})
                        this.inputValue = ''

                    }
                },
            })

        }
    </script>
</head>
<body>
<div id="app">
    <div class="talk_con">
        <div class="talk_show" id="words">

            <div v-for="item in list" :class="item.who=='A' ? 'atalk':'btalk'"><span>{{item.who}}:{{item.what}}</span></div>

            <!--<div class="btalk"><span>B说:还没呢,你呢?</span></div>-->
        </div>
        <div class="talk_input">
            <select v-model="selectValue" class="whotalk" id="who">
                <option value="0">A说:</option>
                <option value="1">B说:</option>
            </select>
            <input v-model="inputValue" type="text" class="talk_word" id="talkwords">
            <input @click="btnClicked" type="button" value="发送" class="talk_sub" id="talksub">
        </div>
    </div>
</div>
</body>
</html>

注意事项:注意函数的作用域,昨天因为if{}花括号判断是否输入的作用域括错啦,无法响应发送按钮,找啦1个小时的bug

1.2 效果图

在这里插入图片描述

原创文章 86 获赞 114 访问量 17万+

猜你喜欢

转载自blog.csdn.net/geek64581/article/details/102476032