专业前端小白 2020-07-03 09:05 采纳率: 0%
浏览 232

css实现三角箭头特效实现的原理

// html
<div class="user-menu">
    <div class="popper-arrow"></div>
</div>
// css
.user-menu{
    position: absolute;
    margin-top: 10px;
    width: 100px;
    height: 100px;
    z-index: 99;
    background-color: #ffffff;
    box-shadow: 0px 0px 4px #cccccc;
    top: 38px;
    left: 50%;
    transform: translateX(-50%);
}
.user-menu .popper-arrow{
    position: absolute;
    top: -6px;
    left: 50%;
    margin-right: 3px;
    border-bottom-color: #EBEEF5;
    border-width: 6px;
    border-top-width: 0;
    filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03));
}
.user-menu .popper-arrow::after{
    position: absolute;
    display: block;
    width: 0;
    height: 0;
    content: " ";
    border-width: 6px;
    border-color: transparent;
    border-style: solid;
    top: 1px;
    margin-left: -6px;
    border-top-width: 0;
    border-bottom-color: #FFF;
}

我想问一下以上的代码为什么能够实现这种三角形特效,明明没有给与三角形的形状:

图片说明
这种css特效实现的原理是什么呢

  • 写回答

2条回答 默认 最新

  • 前端-小书童 2020-07-03 09:33
    关注

    先说下.popper-arrow .popper-arrow::after 是什么再讲下是怎么实现效果的

    • .popper-arrow是个深颜色的三角
    • .popper-arrow::after是个浅颜色的三角 浅颜色三角覆盖在深颜色上,错开1px的位置,就出现了有边的三角形

    实现(一般css的三角都会借助border实现):

    • 上面讲popper-arrow与popper-arrow::after都是三角只是颜色不同,颜色用border-bottom-color或者border-color控制
    • 三角实现:
      图片说明

      border-width:先指定border宽6px
      border-top-width:在用某一个位置的宽覆盖下就行

      如果上面有没讲明白的可以留言给我,一块学习

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?