2013-01-18 3 views
14

Đây là một câu hỏi tò mò hơn những gì tôi thực sự cần biết.Làm thế nào là dấu mũ trên Twitter Bootstrap xây dựng?

Trên trang này:

http://twitter.github.com/bootstrap/components.html#buttonDropdowns

Làm thế nào là caret chút/xuống mũi tên điều được xây dựng? Poking xung quanh với Firebug có vẻ như nó chỉ được thực hiện với biên giới trong suốt nhưng ... Tôi phải mất một cái gì đó.

Bootstrap rất tuyệt. Tôi chỉ có nó với Symfony.

Trả lời

33

Chỉ có đường viền. Khi bạn thấy các mũi tên như thế này, nhà phát triển có nhiều khả năng đã sử dụng các phần tử giả để tạo chúng. Về cơ bản những gì xảy ra là bạn tạo ra một hộp trong suốt mà không có nội dung, và vì không có gì ở đó, tất cả những gì bạn thấy là một góc của biên giới. Điều này thuận tiện trông giống như một mũi tên.

Làm thế nào để làm điều đó:

.foo:before { 
    content: ' '; 
     height: 0; 
     position: absolute; 
     width: 0; 
     border: 10px solid transparent; 
     border-left-color: #333; 
} 

http://jsfiddle.net/fGSZx/

Dưới đây là một số tài nguyên để giúp:

CSS Triangle from CSS-Tricks (điều này nên xóa tất cả mọi thứ lên)

Smashing Mag article about :before and :after

+4

Cảm ơn. Ngay cả sau khi đọc liên kết thứ hai nó đã cho tôi một thời gian để có được nó. Tôi đã bỏ lỡ sự thật hiển nhiên rằng khi các đường biên giới gặp nhau ở một góc, các cạnh của chúng bị cắt đứt ở 45 độ sao cho chúng vừa với nhau mà không bị chồng chéo. Đây là một liên kết khác với nhiều thủ thuật hơn. http://jonrohan.me/guide/css/creating-triangles-in-css/ – tetranz

+0

bạn cũng có thể kiểm tra [web này] (http://one-div.com/) – vals

+0

Ai đó đã mở một vấn đề về việc thay đổi caret trên [Github page] (https://github.com/twitter/bootstrap/issues/2526) cung cấp một số nền tảng cho bạn từ các tác giả của TW-BS – tatlar

4

đây là CSS cho dấu mũ hướng lên trên, dựa trên CSS từ bootstrap:

.caret-up { 
    display: inline-block; 
    width: 0px; 
    height: 0px; 
    margin-left: 2px; 
    vertical-align: middle; 
    border-top: none; 
    border-bottom: 4px solid #FFFFFF; 
    border-right: 4px solid transparent; 
    border-left: 4px solid transparent; 
    border-top-width: 0px; 
    border-top-style: dotted; 
    content: ""; 
}