2013-04-30 24 views
12

Tôi muốn thay thế Twitter Bootstrap tooltip styles bằng popover styles. Làm thế nào tôi có thể làm điều đó?Làm cách nào để tạo chú thích công cụ Twitter Bootstrap giống như các cửa sổ bật lên (không có dòng tiêu đề)?

Tooltips trông như thế này theo mặc định:

Tooltip

Popovers trông như thế này theo mặc định:

enter image description here

Tôi muốn tooltips của tôi để có màu trắng, với một đường viền màu xám , giống như các cửa sổ bật lên.

Bạn có thể trợ giúp không?

+1

Các bạn đã thử thay thế css tooltip bằng css popover? –

+0

Có thể bạn có thể hiển thị cửa sổ bật lên khi di chuột thay vì chú giải công cụ? Ví dụ: http://stackoverflow.com/a/12343706/291541 – Getz

+0

Xin lỗi, tôi phải hỏi tại sao bạn không sử dụng tất cả các popovers? :) –

Trả lời

5

Đây là cách tôi đã nhận nó để làm việc:

Thêm vào variables.less

@tooltipArrowOuterWidth: @tooltipArrowWidth + 1; 
@tooltipArrowOuterColor: rgba(0,0,0,.25); 

Thêm vào tập tin tùy chỉnh LESS

// Tooltip 
// -------------------------------------------------- 
.tooltip.in { .opacity(100); } 

.tooltip-inner { 
    background:@popoverTitleBackground; 
    color:@gray; 
} 
.tooltip .arrow { 
    border-width: @tooltipArrowOuterWidth; 
} 


.tooltip { 
    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: 1px solid #ccc; 
    border: 1px solid rgba(0,0,0,.2); 
    .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; } 
} 

.tooltip-inner { 
    margin: 0; // reset heading margin 
    padding: 4px 8px; 
    font-size: @baseFontSize * 0.9; 
    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; 
    } 
} 

// Arrows 
// 
// .arrow is outer, .arrow:after is inner 

.tooltip .tooltip-arrow, 
.tooltip .tooltip-arrow:after { 
    position: absolute; 
    display: block; 
    width: 0; 
    height: 0; 
    border-color: transparent; 
    border-style: solid; 
} 
.tooltip .tooltip-arrow { 
    border-width: @tooltipArrowOuterWidth; 
} 
.tooltip .tooltip-arrow:after { 
    border-width: @tooltipArrowWidth; 
    content: ""; 
} 

.tooltip { 
    &.top .tooltip-arrow { 
    left: 50%; 
    margin-left: [email protected]; 
    border-bottom-width: 0; 
    border-top-color: #999; // IE8 fallback 
    border-top-color: @popoverArrowOuterColor; 
    bottom: [email protected]; 
    &:after { 
     bottom: 1px; 
     margin-left: [email protected]; 
     border-bottom-width: 0; 
     border-top-color: @tooltipArrowColor; 
    } 
    } 
    &.right .tooltip-arrow { 
    top: 50%; 
    left: [email protected]; 
    margin-top: [email protected]; 
    border-left-width: 0; 
    border-right-color: #999; // IE8 fallback 
    border-right-color: @tooltipArrowOuterColor; 
    &:after { 
     left: 1px; 
     bottom: [email protected]; 
     border-left-width: 0; 
     border-right-color: @tooltipArrowColor; 
    } 
    } 
    &.bottom .tooltip-arrow { 
    left: 50%; 
    margin-left: [email protected]; 
    border-top-width: 0; 
    border-bottom-color: #999; // IE8 fallback 
    border-bottom-color: @tooltipArrowOuterColor; 
    top: [email protected]; 
    &:after { 
     top: 1px; 
     margin-left: [email protected]; 
     border-top-width: 0; 
     border-bottom-color: @tooltipArrowColor; 
    } 
    } 

    &.left .tooltip-arrow { 
    top: 50%; 
    right: [email protected]; 
    margin-top: [email protected]; 
    border-right-width: 0; 
    border-left-color: #999; // IE8 fallback 
    border-left-color: @tooltipArrowOuterColor; 
    &:after { 
     right: 1px; 
     border-right-width: 0; 
     border-left-color: @tooltipArrowColor; 
     bottom: [email protected]; 
    } 
    } 

} 
+1

Điều này là tuyệt vời, nhưng tôi không nghĩ là ý tưởng tốt để thay đổi bootstrap ban đầu variables.less, những gì nếu phiên bản mới nhận ra, hơn bạn phải cẩn thận :( – Schneider

9

Nếu bạn muốn thay đổi kiểu cho chú giải công cụ, bạn sẽ phải chỉnh sửa lớp .tooltip-inner trong tệp css của bootstrap hoặc ghi đè lên lớp .tooltip-inner với một lớp của riêng bạn.

Một ví dụ cho biên giới sẽ là:

.tooltip-inner { 
    border: solid 1px #ccc; 
} 
+0

cảm ơn. Tôi đã thêm các kiểu nền và màu sắc, cũng như biến tooltiparrowcolor. Tuy nhiên, tôi không thể có được đường viền xung quanh mũi tên hoặc mũi tên ở phía trước của tooltip-inner. Thay vào đó, mũi tên nằm bên ngoài biên giới. Bạn có thể chỉ cho tôi đúng hướng với toàn bộ gói không? – Ryan

+4

Lớp '.tooltip-arrow' là điều kiểm soát màu sắc, kích thước và vị trí của mũi tên. Bạn không thể thêm đường viền vào mũi tên vì đường viền là thứ đang tạo hình dạng của mũi tên. Tuy nhiên, bạn có thể định vị mũi tên cao hơn 1px để đường viền không bao phủ mũi tên. Để làm điều này, thay đổi 'bottom: 0px' thành' bottom: 1px' trong phần '.tooltip.top .tooltip-arrow' (Nếu bạn đang sử dụng tooltip trên cùng, vv). – philipcdavis

+0

Cảm ơn @philipcdavis – Ramanathan

2

JS

$(function() { 
    $('[title]').attr("data-rel", "tooltip"); 
    $("[data-rel='tooltip']") 
     .attr("data-placement", "top") 
     .attr("data-content", function() { 
      return $(this).attr("title") 
     }) 
     .removeAttr('title'); 


    var showPopover = function() { 
     $(this).popover('show'); 
    }; 
    var hidePopover = function() { 
     $(this).popover('hide'); 
    }; 
    $("[data-rel='tooltip']").popover({ 
     trigger: 'manual' 
    }).click(showPopover).hover(showPopover, hidePopover); 

}); 

Và đơn giản HTML

<h1 title="This is title">What is this</h1> 
2

Đây là những gì làm việc cho tôi trên một tooltip bên cánh phải.

Tôi vừa chụp một hình tam giác CSS có cùng kích thước với mũi tên, sau đó kéo nó ra khỏi tam giác Bootstrap bằng khoảng cách tương tự như chiều rộng của đường viền. Thích ứng khi cần thiết, và bạn có thể tham khảo bài viết này awesome để tham khảo về cách làm cho một trỏ tam giác theo hướng nào:

http://css-tricks.com/snippets/css/css-triangle/

.tooltip .tooltip-inner { 
    background: white; 
    color: black; 
    border: 3px solid black; 
    padding: 10px; 
    line-height: 1.65em; 
} 
.tooltip.right .tooltip-arrow { 
    top: 50%; 
    left: 0; 
    margin-top: -15px; 
    border-right-color: white; 
    border-width: 15px 15px 15px 0; 
} 
.tooltip.right .tooltip-arrow:after { 
    content: " "; 
    position: absolute; 
    z-index: -1; 
    width: 0; 
    height: 0; 
    border-top: 15px solid transparent; 
    border-bottom: 15px solid transparent; 
    border-right: 15px solid black; 
    top: -15px; 
    left: -3px; 
} 
3

JQuery UI được can thiệp vào bootstrap.

Chúng không thực sự tương thích với nhau khi chúng chồng lên nhau trong nhiều chức năng.

Tôi đã gặp sự cố này vài tuần trước và đã tìm thấy trang này nhưng tôi không muốn bắt đầu thêm css tùy chỉnh cho nội dung nào đó 'nên hoạt động'. Sau khi xóa giao diện người dùng JQuery hôm nay (vì một lý do khác), tôi nhận thấy các mẹo công cụ bắt đầu trông như dự định. Tôi biết đây là một câu hỏi cũ nhưng tôi đã tìm thấy câu trả lời này hữu ích một vài tuần trước đây.

2

Vì câu trả lời hay nhất là ẩn trong các nhận xét cho câu hỏi và không hiển thị lúc đầu, tôi đã tự mình tìm ra giải pháp.Đó là cách dễ nhất trong trường hợp của tôi để sử dụng popover thay vì tooltip với kích hoạt nó trên sự kiện di chuột. Để làm điều đó bạn có 2 lựa chọn:

Bạn có thể sử dụng thuộc tính 'dữ liệu kích hoạt':

<td id="3" data-content="Tooltip text" data-placement="bottom" data- container="body" data-trigger="hover" data-original-title="" title="">This tooltiped</span></td> 

hoặc sử dụng tùy chọn 'kích hoạt' trên popover khởi:

$('.payment').popover({ 
    trigger: "hover", 
}) 
Các vấn đề liên quan