首页 > 其他分享 >CSS实现一个简单的聊天气泡

CSS实现一个简单的聊天气泡

时间:2022-09-27 10:12:06浏览次数:59  
标签:元素 break 聊天 table dispaly bubble CSS 气泡

问题描述:

想实现一个聊天气泡框时需要一个突出的尖角,于是想到了借助伪元素来实现

实现目标:

实现一个可以动态变长的聊天气泡(如图所示)

 

 

 实现过程:

版本一:使用absout+relative定位实现,bubble元素使用relative定位,然后bubble::after元素使用absolute定位,但是定位时使用的是px为单位,实现要求的样式是可以的,但是消息的长度是不定的,使用px来定位不符合变长的要求。

版本二:基于版本一的改进,把px改为百分比。但是当长度变化时突出的尖角和气泡内容部分无法贴合。(如图所示)

 

版本三:使用dispaly:table,定位时只用指定为元素的top,left就不用管了。直接上代码。

<!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>Demo</title>
</head>
<style>
    .bubble{
        position: relative;
        height: 30px;
        line-height: 30px;
        border-radius: 4px;
        background-color: rgba(0, 0, 0, 50%);
        display: table;
     //word-break: break-all;
     //wihte-space: normal;
    }
    
    .bubble::after {
        position: absolute;
        top: 32%;
        content: '';
        border: 4px solid transparent;
        border-left-color: rgba(0, 0, 0, 50%);
    }
</style>
<body>
      <span class="bubble">
          1313113123123
      </span>
    <script>
        let oContent = document.querySelector('.bubble');
        oContent.innerHTML = '123'.repeat(20)
    </script>
</body>
</html>

 

 实现效果:完美解决。

 

 

 

 这里涉及到很多知识点,于是乎总结一下:

dispaly: table的特点
         1、表格的 display:table,既不是行内元素也不是块级元素
         2、宽度,高度,全部都是以内容为主-自适应
         3、独自成行

在解析dispaly为table的元素时,浏览器不会立马显示内容,而是等内容渲染好再显示,而dispaly为block的元素则是,一行一行的渲染并显示。

 

值得改进的地方:文本只能显示在同一行,无法换行。

文本换行: (样式详细见:https://blog.csdn.net/wang_yu_shun/article/details/124854767)

word-break: break-all;

white-space: normal;

flex容器内部元素换行:

flex-wrap: wrap;

大家可以自己尝试改进一下。

 

标签:元素,break,聊天,table,dispaly,bubble,CSS,气泡
From: https://www.cnblogs.com/qkq505/p/16733538.html

相关文章

  • 前端——CSS定位
    定位:默认为静态定位投标现象压盖现象层级比标准文档高positionstatic  静态relative  相对absolute  绝对fixed  固定relative(相对定位).st{......
  • 第三章3.1HTML技术与CSS技术
    web中的html以及css: html(超文本标记语言:HyperTextMarkupLanguage):用于描述网页的一种语言;通常其根标签使用html标签;使用尖括号表示:<html>,其也是由开始标签和结束标......
  • 简单的css动画---老式电影加载效果
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"c......
  • css布局溢出 overflow
    overflow属性指定在元素的内容太大而无法放入指定区域时是剪裁内容还是添加滚动条。overflow属性可设置以下值:visible-默认。溢出没有被剪裁。内容在元素框外渲染(......
  • Webpack之抽离压缩css
    使用 mini-css-extract-plugin插件的内置loader替换style-loader使用 terser-webpack-plugin插件压缩js代码使用 optimize-css-assets-webpack-plugin插件压缩cs......
  • Blazor中CSS隔离无法用在Masa Blazor组件上
    最近新学了Blazor,使用了MasaBlazor。Blazor的CSS隔离是个很好的东西,如图,只需添加一个与Razor组件同名的CSS文件,这个文件中的CSS样式只会在同名的Razor组件中使用。原理......
  • css 外边距塌陷问题
    两个块级元素嵌套,如果里面的元素没有设置border属性,在内层的元素使用margin时会把父元素节点也会跟着移动,故外边距塌陷问题,解决方法,可以给父元素添加border,或者给......
  • 博客园背景css代码
    #google_ad_c1, #google_ad_c2 {display:none;}.syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, .syntaxhighlighter table, .synta......
  • 为什么开发人员不喜欢 CSS?
    为什么开发人员不喜欢CSS?PeterGriffin—AmericanDad对我来说,写我的第一篇关于这个流行短语的Web集成文章似乎很明显:“我不喜欢CSS”谁以前没有听过或说过这......
  • css 清除浮动的方式
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conten......