2013-03-18 39 views
10

Tôi đang cố gắng tạo một hình tam giác svg đầy sẽ được đặt ở một số địa điểm trên trang.làm tổ svg bên trong một div

Để thực hiện điều này, tôi bọc svg vào div và đặt div một cách thích hợp. Tuy nhiên, svg luôn được hiển thị bên ngoài div. Làm thế nào để có được phần tử svg được trả lại bên trong div?

tôi không thể sử dụng <object> hoặc thẻ <embed> do kịch bản và khuôn mẫu chế

HTML Mẫu

<div id="container"> 
    <div id="inner_container"> 
     <svg height="6" width="6"> 
      <path d="M 0 6 L 3 0 L 6 6 L 0 6"/> 
     </svg> 
    </div> 
</div> 

Và CSS

#container {width:100px; height:25px; border:1px solid green;} 
#container #inner_container {width:6px; height:6px; border:1px solid red;} 
#inner_container svg path {fill:black;} 

Các điền tam giác nên được bên trong hình chữ nhật màu đỏ nhưng được hiển thị bên ngoài

Xem nó trên JsFiddle

Trả lời

9

Thay đổi selector css, viết chỉ svg{...} và thêm float:left

Ở đây con đường chỉ là một bản vẽ không phải là một yếu tố.

svg {fill:black; float:left} 

DEMO

+0

Yep nổi "Svg" thực hiện thủ thuật. Nhưng "điền" là một thuộc tính của "đường dẫn" vì vậy tôi đoán tôi sẽ để nó trong bộ chọn đường dẫn – RedBaron

+0

Ai đó có thể giải thích * tại sao * ngắt ban đầu? Tôi nhận thấy vấn đề biến mất nếu tôi thay đổi 6 đến 60 trong suốt, do đó, điều này dường như chỉ là một vấn đề cho divs nhỏ/svgs - hành vi rất không nhất quán. – joeytwiddle

2

Hãy thử điều này:

#container { float: left; width: 100px; height: 25px; border: 1px solid green; } 
#container #inner_container { float: left; width: 6px; height: 6px; border: 1px solid red; } 
#inner_container svg { display: block; float: left; } 

tôi thêm một số phao nổi trong đó để họ 'chứa' các yếu tố. Có những cách tốt hơn và thanh lịch hơn để làm điều này, nhưng nó sẽ hoạt động.

Hy vọng điều này sẽ hữu ích. Mikey.

+0

Chỉ tò mò thôi, bạn có thể làm sáng tỏ về "những cách thanh lịch hơn" không? Tôi đã gặp rất nhiều rắc rối khi cố gắng để phù hợp với svg của tôi bên trong các divs gần đây – RedBaron

+0

Vâng, nổi tất cả các yếu tố không phải là cách tốt nhất để làm một cái gì đó như thế này, bởi vì nó không phải là luôn luôn cần thiết để làm như vậy, nhưng trong các tình huống như thế này, nơi tôi không biết mức độ đầy đủ của những gì đang xảy ra, nó thường là một sửa chữa nhanh chóng để nổi các yếu tố mà thường dừng lại chúng sụp đổ trong chính mình. Hy vọng rằng có ý nghĩa? Ngoài ra, tùy thuộc vào cấu trúc của bạn, mọi thứ nổi có thể gây ra sự cố bố cục. –

+0

Đúng, mọi thứ trôi nổi sẽ là thảm họa – RedBaron

0

Vấn đề là bạn không chỉ định không gian tên cho phần tử svg. Đây là cách hoạt động:

<div id="container"> 
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100"> 
    <path d="M 0 6 L 3 0 L 6 6 L 0 6"/> 
    </svg> 
</div> 
Các vấn đề liên quan