diff --git a/docs/assets/css/bootstrap.css b/docs/assets/css/bootstrap.css index 52dbf7a1c0310b6fffaef1a32837af30c59bb0bb..f8edafa3b14d86da0210002b607fd89244a96516 100644 --- a/docs/assets/css/bootstrap.css +++ b/docs/assets/css/bootstrap.css @@ -4603,91 +4603,19 @@ input[type="submit"].btn.btn-mini { } .tooltip.top { - margin-top: -2px; + margin-top: -3px; } .tooltip.right { - margin-left: 2px; + margin-left: 3px; } .tooltip.bottom { - margin-top: 2px; + margin-top: 3px; } .tooltip.left { - margin-left: -2px; -} - -.tooltip.top .tooltip-arrow { - bottom: -10px; - left: 50%; - margin-left: -10px; - border-top: 10px solid #cccccc; - border-top: 10px solid rgba(0, 0, 0, 0.2); - border-right: 10px solid transparent; - border-left: 10px solid transparent; -} - -.tooltip.top .tooltip-arrow:after { - bottom: 1px; - left: -9px; - border-top: 9px solid #ffffff; - border-right: 9px solid transparent; - border-left: 9px solid transparent; -} - -.tooltip.left .tooltip-arrow { - top: 50%; - right: -10px; - margin-top: -10px; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - border-left: 10px solid #cccccc; - border-left: 10px solid rgba(0, 0, 0, 0.2); -} - -.tooltip.left .tooltip-arrow:after { - right: 1px; - bottom: -9px; - border-top: 9px solid transparent; - border-bottom: 9px solid transparent; - border-left: 9px solid #ffffff; -} - -.tooltip.bottom .tooltip-arrow { - top: -10px; - left: 50%; - margin-left: -10px; - border-right: 10px solid transparent; - border-bottom: 10px solid #cccccc; - border-bottom: 10px solid rgba(0, 0, 0, 0.2); - border-left: 10px solid transparent; -} - -.tooltip.bottom .tooltip-arrow:after { - top: 1px; - left: -9px; - border-right: 9px solid transparent; - border-bottom: 9px solid #f5f5f5; - border-left: 9px solid transparent; -} - -.tooltip.right .tooltip-arrow { - top: 50%; - left: -10px; - margin-top: -10px; - border-top: 10px solid transparent; - border-right: 10px solid #cccccc; - border-right: 10px solid rgba(0, 0, 0, 0.2); - border-bottom: 10px solid transparent; -} - -.tooltip.right .tooltip-arrow:after { - bottom: -9px; - left: 1px; - border-top: 9px solid transparent; - border-right: 9px solid #ffffff; - border-bottom: 9px solid transparent; + margin-left: -3px; } .tooltip-inner { @@ -4706,6 +4634,40 @@ input[type="submit"].btn.btn-mini { position: absolute; width: 0; height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; } .popover { @@ -4745,113 +4707,102 @@ input[type="submit"].btn.btn-mini { margin-right: 10px; } +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f5f5f5; + border-bottom: 1px solid #dcdcdc; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-content p, +.popover-content ul, +.popover-content ol { + margin-bottom: 0; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow:after { + z-index: -1; + content: ""; +} + .popover.top .arrow { bottom: -10px; left: 50%; margin-left: -10px; - border-top: 10px solid #cccccc; - border-top: 10px solid rgba(0, 0, 0, 0.2); - border-right: 10px solid transparent; - border-left: 10px solid transparent; + border-top-color: #ffffff; + border-width: 10px 10px 0; } .popover.top .arrow:after { - bottom: 1px; - left: -9px; - border-top: 9px solid #ffffff; - border-right: 9px solid transparent; - border-left: 9px solid transparent; + bottom: -1px; + left: -11px; + border-top-color: rgba(0, 0, 0, 0.2); + border-width: 11px 11px 0; } .popover.right .arrow { top: 50%; left: -10px; margin-top: -10px; - border-top: 10px solid transparent; - border-right: 10px solid #cccccc; - border-right: 10px solid rgba(0, 0, 0, 0.2); - border-bottom: 10px solid transparent; + border-right-color: #ffffff; + border-width: 10px 10px 10px 0; } .popover.right .arrow:after { - bottom: -9px; - left: 1px; - border-top: 9px solid transparent; - border-right: 9px solid #ffffff; - border-bottom: 9px solid transparent; + bottom: -11px; + left: -1px; + border-right-color: rgba(0, 0, 0, 0.2); + border-width: 11px 11px 11px 0; } .popover.bottom .arrow { top: -10px; left: 50%; margin-left: -10px; - border-right: 10px solid transparent; - border-bottom: 10px solid #cccccc; - border-bottom: 10px solid rgba(0, 0, 0, 0.2); - border-left: 10px solid transparent; + border-bottom-color: #f5f5f5; + border-width: 0 10px 10px; } .popover.bottom .arrow:after { - top: 1px; - left: -9px; - border-right: 9px solid transparent; - border-bottom: 9px solid #f5f5f5; - border-left: 9px solid transparent; + top: -1px; + left: -11px; + border-bottom-color: rgba(0, 0, 0, 0.2); + border-width: 0 11px 11px; } .popover.left .arrow { top: 50%; right: -10px; margin-top: -10px; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - border-left: 10px solid #cccccc; - border-left: 10px solid rgba(0, 0, 0, 0.2); + border-left-color: #ffffff; + border-width: 10px 0 10px 10px; } .popover.left .arrow:after { - right: 1px; - bottom: -9px; - border-top: 9px solid transparent; - border-bottom: 9px solid transparent; - border-left: 9px solid #ffffff; -} - -.popover .arrow { - position: absolute; - width: 0; - height: 0; -} - -.popover .arrow:after { - position: absolute; - display: inline-block; - width: 0; - height: 0; - content: ""; -} - -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f5f5f5; - border-bottom: 1px solid #e5e5e5; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; -} - -.popover-content { - padding: 9px 14px; -} - -.popover-content p, -.popover-content ul, -.popover-content ol { - margin-bottom: 0; + right: -1px; + bottom: -11px; + border-left-color: rgba(0, 0, 0, 0.2); + border-width: 11px 0 11px 11px; } .thumbnails { diff --git a/docs/assets/css/docs.css b/docs/assets/css/docs.css index c5d92b613e0484b613538009aeabd25e102afa13..bbdff228dc1a82b62559b3fcead87521c81ce3a8 100644 --- a/docs/assets/css/docs.css +++ b/docs/assets/css/docs.css @@ -598,6 +598,17 @@ form.bs-docs-example { line-height: 18px; } +/* Tooltips */ +.bs-docs-tooltip-examples { + text-align: center; + margin: 0 0 10px; + list-style: none; +} +.bs-docs-tooltip-examples li { + display: inline; + padding: 0 10px; +} + /* Popovers */ .bs-docs-example-popover { padding-bottom: 24px; diff --git a/docs/javascript.html b/docs/javascript.html index c17af37cd83edf819ae072b15d3c033e795a2d8a..7fb2ceff5d6cd191b37cf412cf72335b64ed921a 100644 --- a/docs/javascript.html +++ b/docs/javascript.html @@ -753,10 +753,20 @@ $('a[data-toggle="tab"]').on('shown', function (e) { <p>Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.</p> <p>Hover over the links below to see tooltips:</p> <div class="bs-docs-example tooltip-demo"> - <p class="muted" style="margin-bottom: 0;">Tight pants next level keffiyeh <a href="#" rel="tooltip" title="first tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" rel="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" rel="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" rel="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral. + <p class="muted" style="margin-bottom: 0;">Tight pants next level keffiyeh <a href="#" rel="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" rel="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" rel="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" rel="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral. </p> </div> + <h3>Four directions</h3> + <div class="bs-docs-example tooltip-demo"> + <ul class="bs-docs-tooltip-examples"> + <li><a href="#" rel="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</a></li> + <li><a href="#" rel="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</a></li> + <li><a href="#" rel="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</a></li> + <li><a href="#" rel="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</a></li> + </ul> + </div> + <hr class="bs-docs-separator"> diff --git a/docs/templates/pages/javascript.mustache b/docs/templates/pages/javascript.mustache index d9ef68c7de6d0ee0c3f997454b45596f8bc5ca62..f80389ced8409d24f8ac49a19f7436a7c88de4c3 100644 --- a/docs/templates/pages/javascript.mustache +++ b/docs/templates/pages/javascript.mustache @@ -685,10 +685,20 @@ $('a[data-toggle="tab"]').on('shown', function (e) { <p>{{_i}}Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.{{/i}}</p> <p>{{_i}}Hover over the links below to see tooltips:{{/i}}</p> <div class="bs-docs-example tooltip-demo"> - <p class="muted" style="margin-bottom: 0;">{{_i}}Tight pants next level keffiyeh <a href="#" rel="tooltip" title="first tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" rel="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" rel="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" rel="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.{{/i}} + <p class="muted" style="margin-bottom: 0;">{{_i}}Tight pants next level keffiyeh <a href="#" rel="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" rel="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" rel="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" rel="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.{{/i}} </p> </div>{{! /example }} + <h3>{{_i}}Four directions{{/i}}</h3> + <div class="bs-docs-example tooltip-demo"> + <ul class="bs-docs-tooltip-examples"> + <li><a href="#" rel="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</a></li> + <li><a href="#" rel="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</a></li> + <li><a href="#" rel="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</a></li> + <li><a href="#" rel="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</a></li> + </ul> + </div>{{! /example }} + <hr class="bs-docs-separator"> diff --git a/less/mixins.less b/less/mixins.less index 3b99f4061d4c140ecb68a1f4da91335a177b0ad4..957e7faccc886cef53f989b2b8bc8b5b1c35ef5c 100644 --- a/less/mixins.less +++ b/less/mixins.less @@ -508,75 +508,7 @@ margin-top: (@navbarHeight - @elementHeight) / 2; } -// Popover arrows -// ------------------------- -// For tipsies and popovers -#popoverArrow { - .top(@arrowWidth: 10px, @color: rgba(0,0,0,.2)) { - bottom: -@arrowWidth; - left: 50%; - margin-left: -@arrowWidth; - border-left: @arrowWidth solid transparent; - border-right: @arrowWidth solid transparent; - border-top: @arrowWidth solid #ccc; - border-top: @arrowWidth solid @color; - &:after { - border-left: @arrowWidth - 1 solid transparent; - border-right: @arrowWidth - 1 solid transparent; - border-top: @arrowWidth - 1 solid #fff; - bottom: 1px; - left: -@arrowWidth + 1; - } - } - .right(@arrowWidth: 10px, @color: rgba(0,0,0,.2)) { - top: 50%; - left: -@arrowWidth; - margin-top: -@arrowWidth; - border-top: @arrowWidth solid transparent; - border-bottom: @arrowWidth solid transparent; - border-right: @arrowWidth solid #ccc; - border-right: @arrowWidth solid @color; - &:after { - border-top: @arrowWidth - 1 solid transparent; - border-bottom: @arrowWidth - 1 solid transparent; - border-right: @arrowWidth - 1 solid #fff; - bottom: -@arrowWidth + 1; - left: 1px; - } - } - .bottom(@arrowWidth: 10px, @color: rgba(0,0,0,.2)) { - top: -@arrowWidth; - left: 50%; - margin-left: -@arrowWidth; - border-left: @arrowWidth solid transparent; - border-right: @arrowWidth solid transparent; - border-bottom: @arrowWidth solid #ccc; - border-bottom: @arrowWidth solid @color; - &:after { - border-left: @arrowWidth - 1 solid transparent; - border-right: @arrowWidth - 1 solid transparent; - border-bottom: @arrowWidth - 1 solid #f5f5f5; - top: 1px; - left: -@arrowWidth + 1; - } - } - .left(@arrowWidth: 10px, @color: rgba(0,0,0,.2)) { - top: 50%; - right: -@arrowWidth; - margin-top: -@arrowWidth; - border-top: @arrowWidth solid transparent; - border-bottom: @arrowWidth solid transparent; - border-left: @arrowWidth solid #ccc; - border-left: @arrowWidth solid @color; - &:after { - border-top: @arrowWidth - 1 solid transparent; - border-bottom: @arrowWidth - 1 solid transparent; - border-left: @arrowWidth - 1 solid #fff; - bottom: -@arrowWidth + 1; - right: 1px; - } - } -} + // Grid System // ----------- diff --git a/less/popovers.less b/less/popovers.less index 2d58a9a241d3d4a43a0a9d1b8490b9d24327c033..147f54a5db1692d54f4c0a51d5549eec2f640fe7 100644 --- a/less/popovers.less +++ b/less/popovers.less @@ -25,25 +25,6 @@ &.bottom { margin-top: 10px; } &.left { margin-right: 10px; } - // Call the mixin for the arrows - &.top .arrow { #popoverArrow > .top(); } - &.right .arrow { #popoverArrow > .right(); } - &.bottom .arrow { #popoverArrow > .bottom(); } - &.left .arrow { #popoverArrow > .left(); } - - // Common arrow styles - .arrow { - position: absolute; - width: 0; - height: 0; - &:after { - position: absolute; - display: inline-block; - width: 0; - height: 0; - content: ""; - } - } } .popover-title { @@ -52,8 +33,8 @@ font-size: 14px; font-weight: normal; line-height: 18px; - background-color: #f5f5f5; - border-bottom: 1px solid #e5e5e5; + background-color: @popoverTitleBackground; + border-bottom: 1px solid darken(@popoverTitleBackground, 10%); .border-radius(5px 5px 0 0); } @@ -63,3 +44,73 @@ margin-bottom: 0; } } + +// Arrows +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow:after { + content: ""; + z-index: -1; +} + +.popover { + &.top .arrow { + bottom: -@popoverArrowWidth; + left: 50%; + margin-left: -@popoverArrowWidth; + border-width: @popoverArrowWidth @popoverArrowWidth 0; + border-top-color: @popoverArrowColor; + &:after { + border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth 0; + border-top-color: @popoverArrowOuterColor; + bottom: -1px; + left: -@popoverArrowOuterWidth; + } + } + &.right .arrow { + top: 50%; + left: -@popoverArrowWidth; + margin-top: -@popoverArrowWidth; + border-width: @popoverArrowWidth @popoverArrowWidth @popoverArrowWidth 0; + border-right-color: @popoverArrowColor; + &:after { + border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth @popoverArrowOuterWidth 0; + border-right-color: @popoverArrowOuterColor; + bottom: -@popoverArrowOuterWidth; + left: -1px; + } + } + &.bottom .arrow { + top: -@popoverArrowWidth; + left: 50%; + margin-left: -@popoverArrowWidth; + border-width: 0 @popoverArrowWidth @popoverArrowWidth; + border-bottom-color: @popoverTitleBackground; + &:after { + border-width: 0 @popoverArrowOuterWidth @popoverArrowOuterWidth; + border-bottom-color: @popoverArrowOuterColor; + top: -1px; + left: -@popoverArrowOuterWidth; + } + } + &.left .arrow { + top: 50%; + right: -@popoverArrowWidth; + margin-top: -@popoverArrowWidth; + border-width: @popoverArrowWidth 0 @popoverArrowWidth @popoverArrowWidth; + border-left-color: @popoverArrowColor; + &:after { + border-width: @popoverArrowOuterWidth 0 @popoverArrowOuterWidth @popoverArrowOuterWidth; + border-left-color: @popoverArrowOuterColor; + bottom: -@popoverArrowOuterWidth; + right: -1px; + } + } +} diff --git a/less/tooltip.less b/less/tooltip.less index 8593e2b5f3d26ee8509d5e23a799660a4a054a7a..89143decab999615e4c11dd49ed417269c8a1619 100644 --- a/less/tooltip.less +++ b/less/tooltip.less @@ -3,6 +3,7 @@ // -------------------------------------------------- +// Base class .tooltip { position: absolute; z-index: @zindexTooltip; @@ -12,15 +13,13 @@ font-size: 11px; .opacity(0); &.in { .opacity(80); } - &.top { margin-top: -2px; } - &.right { margin-left: 2px; } - &.bottom { margin-top: 2px; } - &.left { margin-left: -2px; } - &.top .tooltip-arrow { #popoverArrow > .top(); } - &.left .tooltip-arrow { #popoverArrow > .left(); } - &.bottom .tooltip-arrow { #popoverArrow > .bottom(); } - &.right .tooltip-arrow { #popoverArrow > .right(); } + &.top { margin-top: -3px; } + &.right { margin-left: 3px; } + &.bottom { margin-top: 3px; } + &.left { margin-left: -3px; } } + +// Wrapper for the tooltip content .tooltip-inner { max-width: 200px; padding: 3px 8px; @@ -30,8 +29,42 @@ background-color: @black; .border-radius(4px); } + +// Arrows .tooltip-arrow { position: absolute; width: 0; height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip { + &.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth @tooltipArrowWidth 0; + border-top-color: @tooltipArrowColor; + } + &.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0; + border-right-color: @tooltipArrowColor; + } + &.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth; + border-left-color: @tooltipArrowColor; + } + &.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -@tooltipArrowWidth; + border-width: 0 @tooltipArrowWidth @tooltipArrowWidth; + border-bottom-color: @tooltipArrowColor; + } } diff --git a/less/variables.less b/less/variables.less index 9e7146a754ca35576ed30d46190f8df0fd8a1408..394d10636c77feb0f20d71539fe83210e0a489e5 100644 --- a/less/variables.less +++ b/less/variables.less @@ -198,6 +198,20 @@ @infoBorder: darken(spin(@infoBackground, -10), 7%); +// Tooltips and popovers +// ------------------------- +@tooltipArrowWidth: 5px; +@tooltipArrowColor: #000; + +@popoverArrowWidth: 10px; +@popoverArrowColor: #fff; +@popoverTitleBackground: #f5f5f5; + +// Special enhancement for popovers +@popoverArrowOuterWidth: @popoverArrowWidth + 1; +@popoverArrowOuterColor: rgba(0,0,0,.2); + + // GRID // --------------------------------------------------