2013-12-17 13 views
5

Làm cách nào để tạo hình dạng sau trong CSS3, mà không sử dụng các lớp giả như ": before"?CSS3 Mặt trăng Hình dạng Eclipse

Eclipse shape

tôi đã làm nó rất dễ dàng với: trước đó, nhưng vấn đề là tôi không muốn có một yếu tố vững chắc trên vùng màu xám (xem JSFiddle - http://jsfiddle.net/aUdLr/2/)

div{ 
    width: 100px; 
    height: 100px; 
    background-color: red; 
    border-radius: 100%; 
    position: relative; 
} 
div:before{ 
    content: ""; 
    width: 100%; 
    height: 110%; 
    background: gray; 
    position: absolute; 
    left: 5px; 
    top: -5%; 
    border-radius: 100%; 
} 
+0

[Trang web này] (http://css-tricks.com/examples/ShapesOfCSS/) có thể giúp bạn. Không có một ví dụ cho hình dạng của bạn mặc dù. – AfromanJ

+0

Điều này cũng có thể hữu ích: [Trình tải theo kiểu Google linh hoạt với CSS] (http://lea.verou.me/2013/11/flexible-google-style-loader-with-css/) – Kobi

Trả lời

5

bạn có thể sử dụng rộng biên giới:

div{ 
    width: 100px; 
    height: 100px; 
    border-radius: 100%; 
    border-width: 0; 
    border-left:solid 10px red; 
} 

khoa học chính xác Ví dụ: http://jsfiddle.net/aUdLr/4/

Hãy nhớ rằng hình bên ngoài là không phải là một vòng tròn hoàn hảo, bởi vì đường viền được thêm vào chiều rộng. Bạn có thể bù đắp bằng cách giảm chiều rộng hoặc bằng cách sử dụng Box-sizing: Border-box.

giải pháp
+1

n1, ném vào một ' transform: scaleX (0.8) 'và bạn đang ở đó – Kos

+0

Cảm ơn bạn, giải pháp của bạn là có liên quan. Tuy nhiên, tôi muốn hình dạng chính xác giống như trong hình. Tôi đã thử một cái gì đó khác, nhưng vẫn còn, nó không phải là những gì tôi cần: http://jsfiddle.net/aUdLr/5/ –

1

đơn giản CSS3 mà nói đến cái tâm của tôi:

div:before { 
    font: 80px serif; 
    color: red; 
    content: "("; 
} 

Here's a fiddle.

(Bây giờ seriously- nếu bạn muốn có một số lượng tốt của kiểm soát hình dạng, tôi đề nghị sử dụng SVG.)

2

Để có được hiệu ứng của một vòng tròn nhỏ bị lu mờ bởi một vòng tròn lớn hơn, bạn có thể thêm bóng vào phần tử trong suốt:

div{ 
    width: 100px; 
    height: 100px; 
    border-radius: 100%; 
    background-color:transparent; 
    box-shadow: -23px 0 0px -15px #ff8; 
} 

Ví dụ: http://jsfiddle.net/aUdLr/6/

+0

Ví dụ với nhiều bóng: http://jsfiddle.net/aUdLr/7, http: // jsfiddle .net/aUdLr/8. Điều này khá thú vị. – Kobi

+0

Một tùy chọn khác là có bóng 'inset': http://jsfiddle.net/aUdLr/9/. Tôi khá chắc chắn rằng bạn có thể có được những gì bạn cần bằng cách chơi với những con số một chút. – Kobi

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