css3实现气泡效果的聊天框

因为css3尚未形成标准,所以现行的浏览器对于css3支持不太一致,某些特性需要加上浏览器前缀

css属性的浏览器前缀
前缀渲染引擎使用该引擎的浏览器
-khtml-KHTMLKonqueror
-ms-TridentInternet Explorer
-moz-Mozillafirefox
-o-*Prestoopera  opera mobile
-webkit-WebKitsafari   chrome   android浏览器



没有添加css3样式之前原始页面如下:



1.第一步,实现圆角效果,在css之前实现圆角效果比较麻烦,但是css3中通过border-radius可以很容易实现圆角效果

.radius{
	-webkit-border-radius:10px;
	-moz-border-radius:10px;
	border-radius:10px;
}

添加之后效果如图,border-radius:x/y,如果x和y不相同,x表示横轴,y表示纵轴,如果x和y不相同,那么绘制的为椭圆形。

可以通过设置border-top-left-radius, border-top-right-radius, border-bottom-left-radius, border-bottom-right-radius分别设置边框四个角的弧度。



2.第二步,添加气泡的尾巴。

可以通过css来实现一个三角形充当气泡的尾巴,将容器的宽度以及高度设置为0,然后给盒容器设置一个较粗的边框,浏览器会在边框的交界处绘制结合线

.triangle{
	height:0px;
	width:0px;
	border-width:20px;
	border-style:solid;
	border-color:green black blue red;
}

绘制出的图形如下:


通过将另外三条边设置为透明的,即可得到一个三角形

.triangle{
	height:0px;
	width:0px;
	border-width:20px;
	border-style:solid;
	border-color:green transparent transparent transparent;
}



为了减少不必须要的html元素,我们通过伪属性来给对话框添加”尾巴“

.left:before{
	position:absolute;
	content:"\00a0";
	width:0px;
	height:0px;
	border-width:8px 18px 8px 0;
	border-style:solid;
	border-color:transparent #A6DADC transparent transparent;
	top:15px;
	left:-18px;
}
.right:before{
	position:absolute;
	content:"\00a0";
	display:inline-block;
	width:0px;
	height:0px;
	border-width:8px 0px 8px 18px;
	border-style:solid;
	border-color:transparent transparent transparent #A6DADC;
	left:250px;
	top:15px;
					
}

添加样式之后效果如图:



3.第三步,我们继续对输入框进行美化,通过hsla或者rgba实现半透明背景

目前输入框是通过十六进制来设置颜色

background-color:#A6DADC

还可以通过

background-color:rgb(166, 218,220)

background-color:rgba(166, 218,220,1)

background-color:hsl(182, 44%,76%)

background-color:rgba(182, 44%,76%,1)

在rgba模式中,前三个数字表示红,绿,蓝的值,取值范围为0~255,最后一个表示透明度

在hsla模式中,前三个数字分别表示色调(取值范围为0~360),饱和度(0%~100%),和亮度(0%~100%),最后一个参数表示透明度。

设置透明背景后效果图如下:可以看到背景花纹


接下来我们给聊天对话框设置一个背景渐变的效果,使背景框更加立体:

可以将linear-gradient,radial-gradient赋值给任何接受图片的属性

background-image:-moz-linear-gradient(hsla(0,0%,100%, 0.6), hsla(0, 0%, 100%, 0)  30px);

background-image:-webkie-gradient(linear, 0 0, 0 30, from(hsla(0, 0%, 100%, 0.6)), to(hsla(0, 0%, 100%, 0)));

效果图:



接下来我们给对话框添加阴影,使其有立体的效果:

box-shadow属性可以给盒容器添加阴影效果,我们需要设置阴影相对盒容器水平以及垂直方向上的偏移,阴影的颜色以及模糊半径和扩展半径

-moz-box-shadow:1px 1px 2px hsla(0, 0%, 0%, 0.3);
-webkit-box-shadow:1px 1px 2px hsla(0, 0%, 0%, 0.3);
box-shadow:1px 1px 2px hsla(0, 0%, 0%, 0.3);

效果图如下:对话框外围有一层阴影,看起来更加立体,第一个1px表示阴影相对盒容器右移1px,第二个1px表示将阴影相对盒容器下移1px,可以设置为负数像相反的方向偏移。2px表示模糊半径,该值越大越模糊,越小边缘越锐利。


继续给其添加特效,当鼠标移动到对话框的时候,改变对话框的位置以及阴影的大小,仿佛气泡弹出来一样

.talk:hover{
	top:-2px;
	left:-2px;
	-moz-box-shadow:3px 3px 2px hsla(0, 0%, 0%, 0.3);
	-webkit-box-shadow:3px 3px 2px hsla(0, 0%, 0%, 0.3);
	box-shadow:3px 3px 2x hsla(0, 0%, 0%, 0.3);
					
}




  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实现聊天气泡效果,可以使用以下的CSS样式: HTML结构: ```html <div class="chat-container"> <div class="chat-message received"> <div class="message-bubble"> <span class="message">Hello!</span> </div> </div> <div class="chat-message sent"> <div class="message-bubble"> <span class="message">Hi there!</span> </div> </div> <div class="chat-message received"> <div class="message-bubble"> <span class="message">How are you?</span> </div> </div> <div class="chat-message sent"> <div class="message-bubble"> <span class="message">I'm good, thanks. How about you?</span> </div> </div> </div> ``` CSS样式: ```css .chat-container { display: flex; flex-direction: column; padding: 20px; background-color: #eee; height: 400px; overflow-y: scroll; } .chat-message { display: flex; margin-bottom: 10px; } .received { align-self: flex-start; } .sent { align-self: flex-end; } .message-bubble { background-color: #fff; border-radius: 10px; padding: 10px; box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); position: relative; } .message-bubble:before { content: ""; position: absolute; top: 0; border-style: solid; border-width: 0 10px 10px 0; } .received .message-bubble:before { left: -10px; border-color: #fff transparent transparent transparent; } .sent .message-bubble:before { right: -10px; border-color: #007bff transparent transparent transparent; } .message { line-height: 1.5; font-size: 14px; } ``` 解释: - `chat-container`是聊天窗的容器,设置了`flex`布局和垂直方向的排列,以及一些基本的样式,如背景色、高度和滚动条等。 - `chat-message`是每个聊天消息的容器,设置了`flex`布局和一些基本的样式,如外边距等。 - `.received`和`.sent`分别表示接收到的消息和发送的消息,设置了不同的对齐方式。 - `message-bubble`是消息气泡的容器,设置了一些基本的样式,如背景色、边半径、内边距和阴影等,以及相对定位。 - `.message-bubble:before`是消息气泡的三角形,使用`content`属性来插入一个空内容,设置了绝对定位、上边距、边样式和边宽度,并根据消息的来源设置了不同的位置、边颜色和方向。 - `message`是消息内容的容器,设置了一些基本的样式,如行高和字体大小等。 这些样式可以根据实际需求进行调整,以达到更好的效果
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值