专业前端小白 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:在用某一个位置的宽覆盖下就行

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

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮