2013-05-29 9 views
9

tôi đang cố gắng để tạo ra các tab góc ngồi trên một phần nội dung, và tình cờ gặp ví dụ tuyệt vời này:Làm cách nào để tạo các tab nghiêng bằng đường viền trong CSS?

HTML:

<div class="tab"> 
    <div class="arrow"></div> 
</div> 

CSS:

body 
{ 
    background-color: #666;  
} 
.tab 
{ 
    height: 50px; 
    width: 150px; 
    border-radius: 10px 10px 0px 0px; 
    background-color: #FFF; 
    position: relative; 
} 

.arrow 
{ 
    border-color: transparent transparent #FFF #FFF; 
    border-style: solid; 
    border-width: 23px 23px 23px 23px; 
    height:0; 
    width:0; 
    position:absolute; 
    bottom:0px; 
    right:-43px; 
} 

http://jsfiddle.net/P3P3Z/2/

Tuy nhiên, tôi muốn đặt màu đường viền 2px khác cho hình dạng này và rất tiếc, phương thức này không hoạt động vì nó sử dụng đường viền t o tạo mặt bên phải của hình dạng.

Bất kỳ ý tưởng nào về cách tôi có thể sửa đổi nó?

+0

Vì vậy, bạn muốn có một đường viền xung quanh vùng trắng? –

Trả lời

15

Bạn có thể thử phương pháp này: jsFiddle

Thay vì sử dụng các biên giới để tạo hiệu ứng nghiêng, tôi đang sử dụng một yếu tố :after giả để tạo ra nó. Điều này cho phép tôi thiết lập đường viền xung quanh nó. Sau đó, tôi đang sử dụng một phần tử giả :before để ẩn các đường viền mà tôi không muốn thấy. Định kỳ 2px trong CSS bắt nguồn từ giá trị độ rộng đường viền.

CSS

.tab:before { 
    height: 50px; 
    width: 10px; 
    display: block; 
    content:" "; 
    background-color: #FFF; 
    position: absolute; 
    right: -2px; 
    top: -2px; 
    border-top: 2px solid blue; 
    border-bottom: 2px solid blue; 
} 
.tab { 
    height: 50px; 
    width: 150px; 
    border-radius: 10px 10px 0px 0px; 
    background-color: #FFF; 
    position: relative; 
    border: 2px solid blue; 
} 
.tab:after { 
    display: block; 
    content:" "; 
    width: 100px; 
    height: 50px; 
    top: -2px; 
    background-color: #FFF; 
    position: absolute; 
    right: -29px; 
    transform:skewX(45deg); 
    -ms-transform:skewX(45deg); 
    -webkit-transform:skewX(45deg); 
    border: 2px solid blue; 
    z-index: -1; 
} 
+0

+1. Điều này tương tự như kỹ thuật của tôi được sử dụng ở đây: http://stackoverflow.com/a/13273672/1654265 nơi tôi sử dụng sau và trước khi hai hình tam giác chồng lên nhau và một chút dịch chuyển từ nhau ... –

+0

Cảm ơn, tôi đã sửa đổi cách tiếp cận của bạn đối với một số kiểu dáng nâng cao, tại đây: http://jsfiddle.net/robmc/ZvEyx/4/ Tôi muốn thử và đạt được góc đường cong trên cùng bên phải trên tab; Tôi không nghĩ rằng bạn cần các tab: trước khi cho điều này, nhưng tôi không thể nhìn thấy một cách để thoát khỏi đường cong màu xanh trên cha mẹ. Bất kỳ ý tưởng? – alias51

+0

Chỉ cần tắt 'border-radius' ở góc trên bên phải của tab và di chuyển phần tử giả': after' thêm một chút sang bên phải (tăng lề phải âm của nó): http://jsfiddle.net/ZvEyx/6 / –