【问题标题】:Customizing twitter bootstrap popover arrow自定义 twitter bootstrap 弹出箭头
【发布时间】:2013-02-20 05:43:45
【问题描述】:

我找不到任何相关信息,但我很难接受这是不可行的。

如何自定义弹出框的箭头?我已经做了,只是更改了类 .arrow 等,但是弹出框的位置搞砸了。

那么,这样做的正确方法是什么?我找不到任何文档。

以下是我一直在使用的类,到目前为止箭头看起来不对:

.popover {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1010;
    display: none;
    padding: 5px;
}

    .popover.top {
        margin-top: -5px;
    }

    .popover.right {
        margin-left: 5px;
    }

    .popover.bottom {
        margin-top: 5px;
    }

    .popover.left {
        margin-left: -5px;
    }

    .popover.top .arrow {
        bottom: 0;
        left: 50%;
        margin-left: -5px;
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-top: 5px solid #000000;
    }

    .popover.right .arrow {
        top: 50%;
        left: 0;
        margin-top: -5px;
        border-top: 5px solid transparent;
        border-bottom: 5px solid transparent;
        border-right: 5px solid #000000;
    }

    .popover.bottom .arrow {
        top: 0px;
        left: 50%;
        margin-left: -5px;
        border-left: 9px solid transparent;
        border-right: 9px solid transparent;
        border-bottom: 19px solid #000000;
    }

    .popover.left .arrow {
        top: 50%;
        right: 0;
        margin-top: -5px;
        border-top: 5px solid transparent;
        border-bottom: 5px solid transparent;
        border-left: 5px solid #000000;
    }

    .popover .arrow {
        position: absolute;
        width: 0;
        height: 0;
    }

.popover-inner {
    padding: 3px;
    width: auto;
    overflow: hidden;
    background: #000000;
    background: rgba(0, 0, 0, 0.8);
    -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
    box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
}

.popover-title {
    padding: 9px 15px;
    line-height: 1;
    background-color: #252525;
    -webkit-border-radius: 3px 3px 0 0;
    -moz-border-radius: 3px 3px 0 0;
    border-radius: 3px 3px 0 0;
    background-color: rgba(37, 37, 37, 0.7);
    font-size: 14px;
    color: #7e7e7e;
}

.popover-content {
    padding: 14px;
    background-color: #252525;
    -webkit-border-radius: 0 0 3px 3px;
    -moz-border-radius: 0 0 3px 3px;
    border-radius: 0 0 3px 3px;
    -webkit-background-clip: padding-box;
    -moz-background-clip: padding-box;
    background-clip: padding-box;
    background-color: rgba(37, 37, 37, 0.7);
}

    .popover-content p, .popover-content ul, .popover-content ol {
        margin-bottom: 0;
    }

    .popover-content table {
        background: transparent;
    }

        .popover-content table td {
            border: 0px;
            background: transparent;
            color: #7e7e7e;
        }

箭头应该指向红色方块

谢谢。

【问题讨论】:

  • 正确的做法是设置样式,使用与.popover.arrow 样式相关的CSS 类。你没有提供你正在尝试什么和什么不起作用的例子,所以这是我们能够提供的最好的。
  • 抱歉,粘贴代码和截图。
  • .popover.bottom .arrow不是你需要修改的样式吗?
  • 你看到了结果,还有一些东西不见了,因此我的问题是,如果我确切地知道我需要改变什么,我就不会打扰你们了 :)
  • 发布一个jsfiddle或者一个测试页面......我们不禁猜测。

标签: twitter-bootstrap popover


【解决方案1】:

Twitter Bootstrap 基于Less

如果您想更改其箭头的外观,请使用bootstrap less variables

// Tooltips and popovers
// -------------------------
@tooltipColor:            #fff;
@tooltipBackground:       #000;
@tooltipArrowWidth:       5px;
@tooltipArrowColor:       @tooltipBackground;

@popoverBackground:       #fff;
@popoverArrowWidth:       10px;
@popoverArrowColor:       #fff;
@popoverTitleBackground:  darken(@popoverBackground, 3%);

// Special enhancement for popovers
@popoverArrowOuterWidth:  @popoverArrowWidth + 1;
@popoverArrowOuterColor:  rgba(0,0,0,.25);

如果您使用的是 Sass,请对 Sass Variables 执行相同操作。

遗憾的是,TB-Customizer 没有所有变量,因此您可能必须自己编译它。

编辑:

好消息,新的Bootstrap 3 customizer 现在提供了这些选项。

【讨论】:

    【解决方案2】:

    我在调整弹出框边框厚度时遇到问题。为了调整这一点,我将@popoverBorderThickness 添加到popovers.less,只有这些行被更改。我将整个文件包含在上下文中。

    //
    // Popovers
    // --------------------------------------------------
    
    
    .popover {
      position: absolute;
      top: 0;
      left: 0;
      z-index: @zindexPopover;
      display: none;
      max-width: 276px;
      padding: 1px;
      text-align: left; // Reset given new insertion method
      background-color: @popoverBackground;
      -webkit-background-clip: padding-box;
         -moz-background-clip: padding;
              background-clip: padding-box;
      border: @popoverBorderThickness solid @popoverOuterColor;
      .border-radius(6px);
      .box-shadow(0 5px 10px rgba(0,0,0,.2));
    
      // Overrides for proper insertion
      white-space: normal;
    
      // Offset the popover to account for the popover arrow
      &.top     { margin-top: -10px; }
      &.right   { margin-left: 10px; }
      &.bottom  { margin-top: 10px; }
      &.left    { margin-left: -10px; }
    }
    
    .popover-title {
      margin: 0; // reset heading margin
      padding: 8px 14px;
      font-size: 14px;
      font-weight: normal;
      line-height: 18px;
      background-color: @popoverTitleBackground;
      border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
      .border-radius(5px 5px 0 0);
    
      &:empty {
        display: none;
      }
    }
    
    .popover-content {
      padding: 9px 14px;
    }
    
    // Arrows
    //
    // .arrow is outer, .arrow:after is inner
    
    .popover .arrow,
    .popover .arrow:after {
      position: absolute;
      display: block;
      width: 0;
      height: 0;
      border-color: transparent;
      border-style: solid;
    }
    .popover .arrow {
      border-width: @popoverArrowOuterWidth;
    }
    .popover .arrow:after {
      border-width: @popoverArrowWidth;
      content: "";
    }
    
    .popover {
      &.top .arrow {
        left: 50%;
        margin-left: -@popoverArrowOuterWidth;
        border-bottom-width: 0;
        border-top-color: #999; // IE8 fallback
        border-top-color: @popoverArrowOuterColor;
        bottom: -@popoverArrowOuterWidth;
        &:after {
          bottom: @popoverBorderThickness * 1.414;// longer line gets thinner use Pythagorean theorem to correct
          margin-left: -@popoverArrowWidth;
          border-bottom-width: 0;
          border-top-color: @popoverArrowColor;
        }
      }
      &.right .arrow {
        top: 50%;
        left: -@popoverArrowOuterWidth;
        margin-top: -@popoverArrowOuterWidth;
        border-left-width: 0;
        border-right-color: #999; // IE8 fallback
        border-right-color: @popoverArrowOuterColor;
        &:after {
          left: @popoverBorderThickness * 1.414;// longer line gets thinner use Pythagorean theorem to correct
          bottom: -@popoverArrowWidth;
          border-left-width: 0;
          border-right-color: @popoverArrowColor;
        }
      }
      &.bottom .arrow {
        left: 50%;
        margin-left: -@popoverArrowOuterWidth;
        border-top-width: 0;
        border-bottom-color: #999; // IE8 fallback
        border-bottom-color: @popoverArrowOuterColor;
        top: -@popoverArrowOuterWidth;
        &:after {
          top: @popoverBorderThickness * 1.414;// longer line gets thinner use Pythagorean theorem to correct
          margin-left: -@popoverArrowWidth;
          border-top-width: 0;
          border-bottom-color: @popoverArrowColor;
        }
      }
    
      &.left .arrow {
        top: 50%;
        right: -@popoverArrowOuterWidth;
        margin-top: -@popoverArrowOuterWidth;
        border-right-width: 0;
        border-left-color: #999; // IE8 fallback
        border-left-color: @popoverArrowOuterColor;
        &:after {
          right: @popoverBorderThickness * 1.414;// longer line gets thinner use Pythagorean theorem to correct
          border-right-width: 0;
          border-left-color: @popoverArrowColor;
          bottom: -@popoverArrowWidth;
        }
      }
    
    }
    

    【讨论】:

      【解决方案3】:

      对于使用自定义 style.css 来简单地覆盖引导程序而不重新编译 LESS 的任何人,您正在寻找的 css 规则是 .popover.top > .arrow:after { border-top-color: yourColorHere; } 以仅更改箭头的颜色。

      【讨论】:

      • 一旦我将它更改为border-top-color: myColorHere;,这个修复对我来说效果很好
      • 太棒了!当然也适用于底部弹出框:.popover.bottom > .arrow:after { border-bottom-color: YourColorHere;}
      【解决方案4】:

      使用这些变量来自定义工具提示:

      @tooltip-max-width:       200px;
      @tooltip-color:           #FFF;
      @tooltip-bg:              #000;
      @tooltip-opacity:         .9;
      @tooltip-arrow-width:     5px;
      @tooltip-arrow-color:     #000;
      

      在此处查看文档: http://getbootstrap.com/customize/#tooltips

      【讨论】:

        猜你喜欢
        • 2012-08-16
        • 2019-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-22
        • 2014-08-11
        • 2015-09-15
        • 1970-01-01
        相关资源
        最近更新 更多