Vâng, bạn có thể: rotate
hộp, hãy đặt cho nó border-radius
và sử dụng 45deg
linear-gradient
làm background
.
DEMO
HTML:
<div class='arrow'></div>
CSS:
.arrow {
width: 7em;
height: 7em;
border-radius: 0 0 2em 0;
margin: 5em;
transform: rotate(45deg);
background: linear-gradient(-45deg, black 50%, transparent 50%);
}
Nếu bạn muốn góc của mũi tên để thể khác nhau, sau đó bạn cũng có thể skew
nó.
Hãy tính đến thực tế là CSS gradients are not supported by IE9 (Tôi không nói "hoặc cũ hơn" lần này vì bạn đề cập đến CSS3 trong số các thẻ của mình). Các giải pháp trong trường hợp đó sẽ là sử dụng một nền tảng vững chắc và bằng cách nào đó chắc chắn rằng phần trên sẽ không hiển thị, hoặc bằng cách bao phủ nó với một yếu tố trước đó, hoặc bằng cách cắt nó (xem the answer Tim Medora cung cấp).
Ngoài ra, vào thời điểm này vẫn chưa có sự hỗ trợ cho các cú pháp không tiền tố (mặc dù điều này sẽ sớm thay đổi: D), vì vậy bạn sẽ cần phải hoặc là tự thêm các tiền tố -webkit-
, -moz-
, và -o-
. (Tôi không thêm chúng vào bản demo vì Dabblet sử dụng -prefix-miễn phí mà sẽ chăm sóc làm điều này.)
Đừng nghĩ css có khả năng tĩnh (nhưng tôi đã không nhìn css3 quá chặt chẽ nhưng, có lẽ sai trên c ount), nhưng phần tử canvas html5 không có endcaps. –
nó có thể được thực hiện nhưng nó cần một số hack hoặc bạn có thể làm điều đó html5? với các tập lệnh canvas –
Định hướng khác nhau, nhưng điều này có thể hữu ích: http://stackoverflow.com/a/12042194/453277 –