CSS Triangles and box-shadows

前端 未结 2 780
春和景丽
春和景丽 2021-01-17 01:38

I got the below image done with CSS:

As you can see, the triangle has a gap that cuts the box-shadow from the tooltip.

The code is the following:

相关标签:
2条回答
  • 2021-01-17 01:49

    A slightly different approach and I've only done it for the down arrow.

    Instead of making a triangle using CSS, I created a square and rotated it by 45 degrees. The only drawback I can think of with this approach is that the tooltip bubble will need to have a height equal to or greater than half the width of the arrow.

    You may also want to change the shadow on the arrow to be on the right of the square, rather than bottom right, so that it works after rotation.

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    /* Demo of the tool-tip CSS */
    .tooltip {
      text-decoration: underline;
      color: #37b9b5;
      cursor: default;
    }
    .tooltip-bubble {
      position: absolute;
      z-index: 1;
      padding: 5px 10px;
      color: #fff;
      width: auto;
      box-shadow: 7px 7px 11px 0px rgba(112, 111, 111, 0.3);
      background-color: transparent;
      border-radius: 10px;
    }
    .tooltip-bubble div {
      position: relative;
      z-index: 1;
      font-size: 12px;
    }
    .tooltip-bubble::before {
      position: absolute;
      content: '';
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: #706f6f;
      border-radius: 10px;
    }
    .tooltip-bubble .arrow {
      background-color: #706f6f;
      content: '';
      display: block;
      position: absolute;
      left: 50%;
      height: 10px;
      width: 10px;
      transform: translate(-50%, 0) rotate(45deg);
      box-shadow: 7px 7px 11px 0px rgba(112, 111, 111, 0.3);
    }
    .tooltip-bubble .arrow.down {
      margin-top: -5px;
      top: 100%;
    }
    <div class="tooltip-bubble"><div>Tutorial de uso</div><div class="arrow down"></div></div>

    0 讨论(0)
  • 2021-01-17 02:04

    You can use transforms. They're pretty well supported by now

    /* Generated by less 2.5.1 */
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    /* Demo of the tool-tip CSS */
    .tooltip {
      text-decoration: underline;
      color: #37b9b5;
      cursor: default;
    }
    .tooltip-bubble {
      position: absolute;
      z-index: 1;
      padding: 5px 10px;
      color: #fff;
      width: auto;
      box-shadow: 7px 7px 11px 0px rgba(112, 111, 111, 0.3);
      background-color: transparent;
      border-radius: 10px;
    }
    .tooltip-bubble div {
      position: relative;
      z-index: 1;
      font-size: 12px;
    }
    .tooltip-bubble::before {
      position: absolute;
      content: '';
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: #706f6f;
      border-radius: 10px;
      z-index: 1;
    }
    .tooltip-bubble .arrow {
      content: '';
      display: block;
      position: absolute;
      top: 100%;
      left: 50%;
      width: 0px;
      height: 0px;
      border-left: 10px solid transparent;
      border-right: 10px solid transparent;
      transform: translate(-50%, 0);
      box-shadow: 7px 7px 11px 0px rgba(112, 111, 111, 0.3);
    }
    .tooltip-bubble .arrow.up {
      top: -10px;
      border-bottom: 10px solid #706f6f;
      border-left: 10px solid transparent;
      border-right: 10px solid transparent;
    }
    .tooltip-bubble .arrow.down {
      border: 7px solid #706f6f;
      transform: rotate(45deg) translate(-50%, -50%);
      transform-origin: 0 0;
      z-index: 0;
    }
    <div class="tooltip-bubble"><div>Tutorial de uso</div><div class="arrow down"></div></div>

    0 讨论(0)
提交回复
热议问题