html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>留言板客服</title>
<link rel="stylesheet" href="static/css/reset.css" />
<link rel="stylesheet" href="static/css/main.css" />
</head>
<body>
<!-- 头部 -->
<header>
<a href="">留言板</a>
<a href="">关于我们</a>
</header>
<!-- 主体部分 -->
<main>
<div class="box">
<textarea onkeydown="addMsg(this)" placeholder="请输入留言内容"></textarea>
<button onclick="clickbutton()">发表留言</button>
</div>
<a href=""></a>
<h2>留言列表</h2>
<ul class="content-list"></ul>
</main>
<!-- 底部客服 -->
<footer>
<div class="kf">
<a href="javascript:;">
<img src="static/image/img-info24.svg" alt="" />
</a>
<span>有问题请点我哦!</span>
<a href="javascript:;" onclick="showkf()">
<img src="static/image/to-maxWindow.svg" alt="" />
</a>
</div>
<div class="kf_box" style="display: none">
<!-- 客服标题 -->
<div class="title">
<span>客服系统</span>
<a href="JavaScript:;" onclick="closekf()">
<img src="static/image/to-minWindow.svg" alt="" />
</a>
</div>
<!-- 客服界面主体 -->
<div class="kf_main">
<div class="msg">
<p class="left">请问你有什么问题吗?</p>
</div>
<div contenteditable="true" placeholder="请输入文字" class="text_area"></div>
<button onclick="addMsg_kf()">发送</button>
</div>
</div>
</footer>
<script>
// 显示客服界面
function showkf() {
let kefu = document.querySelector('.kf_box');
kefu.style.display = 'block';
}
// 关闭客服界面
function closekf() {
let kefu = document.querySelector('.kf_box');
kefu.style.display = 'none';
}
//把用户输入的问题发送到聊天界面
function addMsg_kf() {
let msg = document.querySelector('.kf_box .kf_main .text_area');
let msgBox = document.querySelector('.kf_box .kf_main .msg');
if (msg.innerText.trim().length === 0) {
console.log('消息为空');
msg.innerText = null;
msg.focus();
} else {
const p = document.createElement('p');
p.className = 'right';
p.textContent = msg.innerText;
msgBox.insertAdjacentElement('beforeEnd', p);
msg.innerText = null;
msg.focus();
}
}
//定时器监控消息
setInterval('monitoring()', 1000);
let msgNumber = 1;
function monitoring() {
// let rightMsg = document.querySelector('.kf_box .kf_main .msg .right');
let rightMsg = document.querySelector('.kf_box .kf_main .msg');
console.log(rightMsg.children.length);
console.log('当前检测消息数量:' + msgNumber);
if (rightMsg.children.length > msgNumber) {
console.log('有新消息');
console.log(rightMsg.innerText);
const p = document.createElement('p');
p.className = 'left';
p.textContent = '你好我是客服系统';
rightMsg.insertAdjacentElement('beforeEnd', p);
msgNumber = msgNumber + 2;
} else {
console.log('暂时没有新消息');
}
}
// 1.获取文本框的内容
// 2.判断文本框留言内容是否为空
// 3.有内容则把留言添加到列表中,为空则返回
// 4.将输入框中的前一条留言清空
// 5.焦点重置
function clickbutton() {
let ul = document.querySelector('.content-list');
let input = document.querySelector('.box textarea');
if (input.value.trim().length === 0) {
alert('内容为空,请输入留言内容');
} else {
// 将内容添加到列表中
console.log(input.value);
// 创建一个li标签,并添加进去
const li = document.createElement('li');
li.innerHTML = input.value + '<button onclick = "del(this.parentNode)">删除</button><hr/>';
ul.insertAdjacentElement('afterBegin', li);
input.value = null;
input.focus();
}
}
function addMsg(ele) {
// console.log(event.key);
if (event.key === 'Enter') {
let ul = document.querySelector('.content-list');
let input = document.querySelector('.box textarea');
if (input.value.trim().length === 0) {
alert('内容为空,请输入留言内容');
} else {
// 将内容添加到列表中
console.log(input.value);
// 创建一个li标签,并添加进去
const li = document.createElement('li');
li.innerHTML = input.value + '<button onclick = "del(this.parentNode)">删除</button><hr/>';
ul.insertAdjacentElement('afterBegin', li);
input.value = null;
//多行文本回车不换行
event.preventDefault();
ele.focus();
}
}
}
function addStyle(value, tag) {}
function del(ele) {
if (confirm('是否删除?')) {
ele.remove();
}
}
</script>
</body>
</html>
main.css
/* 头部 */
header {
display: flex;
height: 60px;
background-color: #f8f8f8;
justify-content: space-around;
align-items: center;
}
/* 设置留言板字体大小 */
header > a:first-of-type {
font-size: 25px;
color: #858585;
}
/* 主体部分 */
/* 留言板整体居中 */
main .box {
display: flex;
flex-flow: column nowrap;
align-items: center;
margin: 20px;
}
/* 设置一下文本输入框样式 */
main .box textarea {
border: 1px solid #ccc;
border-radius: 5px;
font-size: 20px;
padding: 5px;
width: 800px;
height: 120px;
}
/* 设置按钮样式 */
main .box button {
width: 800px;
height: 40px;
margin: 20px;
background-color: #0088ff;
border: none;
color: white;
margin: 20px 2px;
cursor: pointer;
border-radius: 5px;
}
main .box button:hover {
background-color: #8eb1cf;
}
main .box button:active {
background-color: red;
}
/* 留言列表 */
main h2 {
position: relative;
left: calc((100vw - 800px) / 2);
}
/* 留言列表设置 */
main ul {
position: relative;
left: calc((100vw - 800px) / 2);
}
/* 设置li的距离 */
main ul li {
margin: 20px 0;
width: 800px;
}
/* 设置一下按钮的样式 */
main ul li button {
border-radius: 5px;
outline: none;
border-width: 0px;
background-color: #ffffff;
color: blue;
margin-left: 20px;
padding: 5px;
cursor: pointer;
}
main ul li button:active {
color: red;
}
/* 在线客服 */
footer .kf {
background-color: #1798fc;
width: 225px;
height: 42px;
display: flex;
justify-content: space-between;
align-items: center;
/* 固定到页面右下角 */
position: fixed;
right: 0;
bottom: 0;
}
/* 设置客服提示字体颜色 */
footer .kf span {
color: #ffffff;
}
/* 设置a标签样式 */
footer .kf > a {
background-color: #127aca;
width: 42px;
height: 100%;
padding: 10px;
}
/* 第二个a标签覆盖上面的颜色 */
footer .kf > a:last-of-type {
background-color: #1798fc;
}
footer .kf > a:last-of-type:hover {
background-color: #1589e2;
}
/* 客服标题样式 */
footer .kf_box {
width: 360px;
height: 576px;
box-shadow: -2px -2px 0 0 #eeeeee;
position: fixed;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 99;
}
/* 客服标题加一下背景 */
footer .kf_box .title {
background-color: #1798fc;
height: 36px;
display: flex;
justify-content: space-between;
align-items: center;
}
/* 客服标题字体颜色 */
footer .kf_box .title span {
color: #ffffff;
padding: 5px;
}
/* 客服界面主体布局 */
footer .kf_main {
/* width: 900px; */
/* height: 676px; */
/* border: 1px solid; */
display: flex;
flex-direction: column;
}
/* 设置聊天界面高度 */
footer .kf_main .msg {
height: 350px;
padding: 10px;
}
/* 设置输入框样式 */
footer .kf_main .text_area {
border-top: 1px solid;
color: #3a3c4c;
height: 140px;
outline: none;
padding: 5px;
}
/* 设置发送按钮样式 */
footer .kf_main button {
width: 50px;
height: 25px;
outline: none;
background-color: #1798fc;
color: #fff;
border-radius: 5px;
border: none;
place-self: end;
margin: 10px;
cursor: pointer;
}
/* 设置发送按钮鼠标悬停颜色 */
footer .kf_main button:hover {
background-color: #5da9e4;
}
footer .kf_main .msg {
display: flex;
flex-direction: column;
}
/* 设置用户发的消息样式 */
footer .kf_main .msg .right {
place-self: end;
background-color: #1798fc;
color: #fff;
padding: 5px;
margin: 5px 0px;
border-radius: 5px;
}
/* 设置客服回的消息样式 */
footer .kf_main .msg .left {
place-self: start;
background-color: #e90e33;
color: #fff;
padding: 5px;
margin: 5px 0px;
border-radius: 5px;
}
reset.css
/* 页面元素样式初始化 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* 去掉a链接的文本装饰 */
a {
text-decoration: none;
color: #555;
}
/* 去掉li标签的标记的点 */
li {
list-style: none;
}
input,
textarea {
outline-style: none;
}