2013-08-27 31 views
9

Tôi đang cố gắng tạo lại hình dạng này trong CSS3.Tạo lại hình dạng nút hình tam giác đã kết thúc trong CSS3

http://i.imgur.com/89qIwtf.png

Đây là giải pháp của tôi:

<span><div id="shape"></div></span> 
span { 
    display: block; 
    margin-left: 88px; 
} 

#shape { 
    width: 160px; 
    height: 100px; 
    background: #dcdcdc; 
} 

#shape:before { 
    height: 76px; 
    width: 76px; 
    top: 20px; 
    content:""; 
    position: absolute; 
    border-radius: 10px; 
    background-color: #ccc; 
    left: 60px; 
    -webkit-transform:rotate(45deg); 

} 

#shape:after { 
    height: 76px; 
    width: 76px; 
    top: 20px; 
    content:""; 
    position: absolute; 
    border-radius: 10px; 
    left: 220px; 
    -webkit-transform:rotate(45deg); 
    background-color: #ccc; 
} 

Thật không may, điều đó không có quy mô: CodePen demo (Tôi đã thay đổi background-màu để minh họa cho cách tôi đã làm nó). Điều quan trọng là nó vảy theo chiều dọc.

Một giải pháp JavaScript cũng sẽ hoạt động.

+0

Bạn đã có một hình ảnh của những gì bạn muốn. Tại sao bạn không thể sử dụng (sau khi cắt nền xám)? Bạn có thể sử dụng nhiều kích thước cho trang của mình. – 11684

+3

bạn muốn chia tỷ lệ như thế nào ?? –

+0

Đáng buồn là jQuery không thể trực tiếp thiết lập chiều cao của các phần tử giả, hoặc bạn sẽ có thể thiết lập nó với jQuery. Nếu bạn muốn thêm các phần tử HTML khác, nó sẽ dễ dàng thực hiện với jQuery. – robooneus

Trả lời

1

enter image description here

bản demo http://jsfiddle.net/Le8Hw/2/

phong cách:

#kougiland{ 
    position:relative; 
    width:110px; 
    height:34px; 
    margin:100px; 
    color:white; 
    text-align:center; 
    font-size: 22px; 
    vertical-align: middle; 
    line-height: 30px; 
    background-color:red; 
    box-shadow: 0 4px 8px #ccc, 10px 5px 8px -4px #ccc, -9px 5px 8px -4px #CCC; 
    background-image: -webkit-linear-gradient(-90deg, rgba(255, 255, 255, 0.1) 0%, rgba(244, 244, 244, 0.35) 50%, rgba(225, 225, 225, 0) 51%, rgba(246, 246, 246, 0) 100%); 
} 

#kougiland:before,#kougiland:after{ 
    content:''; 
    position:absolute; 
    top: 4px; 
    height: 26px; 
    width: 26px; 
    background:red; 
    border-radius:4px; 
    -webkit-transform: rotateZ(45deg); 
    background-color:red; 
    background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.1) 0%, rgba(244, 244, 244, 0.35) 50%, rgba(225, 225, 225, 0) 51%, rgba(246, 246, 246, 0) 100%); 
} 
#kougiland:before{ 
    left:-14px; 
    box-shadow: 0px 7px 11px -4px #ccc; 
} 
#kougiland:after{ 
    right:-14px; 
    box-shadow: 7px 0px 11px -4px #ccc; 
} 

đánh dấu:

<div id=kougiland>weiter</div> 

chỉ cần thay đổi màu sắc theo ý muốn và vui chơi với nó :-)

+0

Điều này không giải quyết được vấn đề của OP ... nó cần để có thể thay đổi chiều cao tự động dựa trên nội dung. – robooneus

+0

sau đó sử dụng cho chiều rộng el speudo: 100%; và thiết lập chiều cao với jquery –

+0

Bạn không thể truy cập các phần tử giả với jquery/js. Chúng được tạo ra và không phải là một phần của DOM. – robooneus

1

Một posibility có thể được sử dụng biến đổi 3d:

.diamond { 
    left: 50px; 
    top: 50px; 
    position: absolute; 
    height: 88px; 
    width: 300px; 
    background-color: transparent; 
    -webkit-perspective: 100px; 
    -moz-perspective: 100px; 
    perspective: 100px; 
} 

.diamond:before { 
    content: ''; 
    width: 100%; 
    height: 51%; 
    left: 0%; 
    top: 0%; 
    position: absolute; 
    border-color: red; 
    border-style: solid; 
    border-width: 3px 3px 0px 3px; 
    -webkit-transform: rotateX(20deg); 
    -moz-transform: rotateX(20deg); 
    transform: rotateX(20deg); 
    border-radius: 6px; 
    background-color: blue; 
} 

.diamond:after { 
    content: ''; 
    width: 100%; 
    height: 51%; 
    left: 0%; 
    bottom: 0%; 
    position: absolute; 
    border-color: red; 
    border-style: solid; 
    border-width: 0px 3px 3px 3px; 
    -webkit-transform: rotateX(-20deg); 
    -moz-transform: rotateX(-20deg); 
    transform: rotateX(-20deg); 
    border-radius: 6px; 
    background-color: lightblue; 
} 

fiddle

+0

Đây là một câu trả lời rất tốt và xứng đáng một vài phiếu :) – Harry

Các vấn đề liên quan