css实现多角度对话框对话气泡语音气泡效果代码

代码语言:html

所属分类:布局界面

代码描述:css实现多角度对话框对话气泡语音气泡效果代码

代码标签: css 对话框 对话气泡

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">






    <style>
        [speech-bubble], [speech-bubble] * { box-sizing: border-box }
        
        [speech-bubble]{
          --bbColor: grey;
          --bbArrowSize: 1.5rem;
          --bbBorderRadius: 0.25rem;
          --bbPadding: 1rem;
          background: var(--bbColor);
          border-radius: var(--bbBorderRadius);
          padding: var(--bbPadding);
          position: relative;
        }
        
        [speech-bubble]::before{
          content: ''; 
          position: absolute;
          background: var(--bbColor);
        }
        
        [speech-bubble][pbottom]{ margin-bottom: var(--bbArrowSize) }
        [speech-bubble][ptop]   { margin-top: var(--bbArrowSize); }
        [speech-bubble][pleft]  { margin-left: var(--bbArrowSize); }
        [speech-bubble][pright] { margin-right: var(--bbArrowSize); }
        
        
        /* bottom and top  */
        [speech-bubble][pbottom]::before,
        [speech-bubble][ptop]::before{
          --width: calc(var(--bbArrowSize) / 2 * 3);
          height: var(--bbArrowSize);
          width: var(--width);
        }
        
        /* bottom */
        [speech-bubble][pbottom]::before{
          top: calc(100% - 2px);
        }
        [speech-bubble][pbottom][aleft]::before{
          left: 1rem;
          clip-path: polygon(25% 0, 100% 0, 0% 100%)
        }
        [speech-bubble][pbottom][acenter]::before{
          left: calc(50% - var(--width) / 2);
          clip-path: polygon(12.5% 0, 87.5% 0, 50% 100%)
        }
        [speech-bubble][pbottom][aright]::before{
          right: 1rem;
          clip-path: polygon(0 0, 75% 0, 100% 100%)
        }
        
        /* top */
        [speech-bubble][ptop]::before{
          bottom: calc(100% - 2px);
        }
        [speech-bubble][ptop][aleft]::before{
          left: var(--bbPadding);
          clip-path: polygon(0 0, 100% 100%, 25% 100%)
        }
        [speech-bubble][ptop][acenter]::before{
          left: calc(50% - var(--width) / 2);
          clip-path: polygon(12.5% 100%, 50% 0, 87.5% 100%)
        }
        [speech-bubble][ptop][aright]::before{
          right: var(--bbPadding);
          clip-path: polygon(0 100%, 100% 0, 75% 100%)
        }
        
        /* left and right  */
        [speech-bubble][pleft]::before,
        [speech-bubble][pright]::before{
          --height: calc(var(--bbArrowSize) / 2 * 3);
          width: var(--bbArrowSize);
          height: var(--height);
        }
        
        /* right */
        [speech-bubble][pright]::before{
          left: calc(100% - 2px);
        }
        [speech-bubble][pright][atop]::before{
          top: var(--bbPadding);
          clip-path: polygon(100% 0, 0 100%, 0 25%)
        }
        [speech-bubble][pright][acenter]::before{
          top: calc(50% - var(--height) / 2);
          clip-path: polygon(0 12.5%, 100% 50%, 0 87.5%)
        }
        [speech-bubble][pright][abottom]::before{
          bottom: var(--bbPadding);
          clip-path: polygon(0 0, 100% 100%, 0 75%)
        }
        
        /* left */
        [speech-bubble][pleft]::before{
          right: calc(100% - 2px);
        }
        [speech-bubble][pleft][atop]::before{
          top: var(--bbPadding);
          clip-path: polygon(0 0, 100% 25%, 100% 100%)
        }
        [speech-bubble][pleft][acenter]::before{
          top: calc(50% - var(--height) / 2);
          clip-path: polygon(0 50%, 100% 12.5%, 100% 87.5%);
        }
        [speech-bubble][pleft][abottom]::before{
          bottom: var(--bbPadding);
          clip-path: polygon(0 100%, 100% 0, 100% 75%)
        }
        
        
        
        
        
        
        
        /* for demo */
        *{
          margin: 0;
          padding: 0;
          box-sizing: border-box;
          cursor: default
        }
        body{
          max-width: 60rem;
          margin-inline: auto;
          font-family: sans-serif;
          display:grid;
          grid-template-areas:
            'br bc bl'
            'rb cc lb'
            'rc cc lc'
            'rt cc lt'
            'tr tc tl';
          padding: 2rem;
          gap: 2rem;
          background: #141518;
        }
        
        .middle{
          grid-area: cc;
          align-self: center;
          justify-self: center;
          text-align:center;
          color: white;
        }
        
        [speech-bubble][pbottom][alef.........完整代码请登录后点击上方下载按钮下载查看

网友评论0