css 的 clip-path 属性,绘制气泡

气泡组装

  • 气泡可以看做是由圆形和倒三角形组装起来的
  • 利用 clip-path 属性,组装两个元素

圆形

css 复制代码
width: 100px;
height: 100px;
clip-path: circle(50% at 50% 50%);
background: #ccc;

倒三角形

css 复制代码
width: 100px;
height: 100px;
clip-path: polygon(0% 0%, 100% 0%, 50% 100%, 0% 0%);
background: #ddd;

组合

  • 两个元素组合到一起,调整宽度与定位位置
html 复制代码
<div class="pop">
  <div class="circle"></div>
  <div class="trangle"></div>
</div>
<style lang="scss" scoped>

.pop {
  width: 100px;
  height: 120px;
  position: relative;
  .circle {
    position: absolute;
    top: 0;
    left: 0;
    width: 100px;
    height: 100px;
    clip-path: circle(50% at 50% 50%);
    background: #ccc;
  }
  .trangle {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 30px;
    clip-path: polygon(0% 0%, 100% 0%, 50% 100%, 0% 0%);
    background: #ddd;
  }
}

</style>

边框效果

  • 用两个气泡叠加。下层气泡的尺寸略大于上层气泡的尺寸,形成边框效果
html 复制代码
<template>
  <div class="myPop">
    <div class="backBox">
      <div class="circle"></div>
      <div class="trangle"></div>
    </div>
    <div class="frontBox">
      <div class="circle"></div>
      <div class="trangle"></div>
    </div>
    <div class="msg">气泡</div>
  </div>
</template>
<style lang="scss" scoped>
.myPop {
  width: 102px;
  height: 122px;
  position: relative;
  & > div {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  .circle {
    position: absolute;
    top: 0;
    left: 0;
    clip-path: circle(50% at 50% 50%);
  }
  .trangle {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    clip-path: polygon(0% 0%, 100% 0%, 50% 100%, 0% 0%);
  }
  .backBox {
    width: 102px;
    height: 122px;
    .circle {
      width: 102px;
      height: 102px;
      background: #4e700f;
    }
    .trangle {
      width: 62px;
      height: 30px;
      background: #4e700f;
      clip-path: polygon(0% 0%, 100% 0%, 50% 100%, 0% 0%);
    }
  }
  .frontBox {
    width: 100px;
    height: 120px;
    .circle {
      width: 100px;
      height: 100px;
      background: #d5f0a5;
    }
    .trangle {
      width: 60px;
      height: 30px;
      background: #d5f0a5;
    }
  }
  .msg {
    width: 100%;
    height: 100%;
    font-size: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
</style>
相关推荐
RFCEO32 分钟前
前端编程 课程十六、:CSS 盒子模型
css·前端基础课程·css盒子模型·css盒子模型的组成·精准控制元素的大小和位置·css布局的基石·内边距(padding)
夏幻灵8 小时前
CSS三大特性:层叠、继承与优先级解析
前端·css
会编程的土豆1 天前
新手前端小细节
前端·css·html·项目
珹洺1 天前
Bootstrap-HTML(二)深入探索容器,网格系统和排版
前端·css·bootstrap·html·dubbo
BillKu1 天前
VS Code HTML CSS Support 插件详解
前端·css·html
1024小神1 天前
用css的clip-path裁剪不规则形状的图片展示
前端·css
GGGG寄了1 天前
CSS——文字控制属性
前端·javascript·css·html
HWL56791 天前
在网页中实现WebM格式视频自动循环播放
前端·css·html·excel·音视频
HWL56791 天前
防止移动设备自动全屏播放视频,让视频在页面内嵌位置正常播放
前端·css·音视频
小小测试开发2 天前
UI自动化测试:CSS定位方式超详细解析(附实战示例)
css·ui·tensorflow