2011-07-17 59 views
126

Tôi muốn hiển thị một số văn bản bên trong SVG rect. Có thể không?SVG: văn bản bên trong rect

tôi đã cố gắng

<svg xmlns="http://www.w3.org/2000/svg"> 
    <g> 
    <rect x="0" y="0" width="100" height="100" fill="red"> 
     <text x="0" y="10" font-family="Verdana" font-size="55" fill="blue"> Hello </text> 
    </rect> 
    </g> 
</svg> 

Nhưng nó không hoạt động.

+5

thể trùng lặp của (http://stackoverflow.com/questions/5449899/insert-text-between-a-rectangle-draw-in-svg) – Jonas

Trả lời

163

Điều này là không thể. Nếu bạn muốn hiển thị văn bản bên trong một phần tử rect bạn nên đặt cả hai trong một nhóm với phần tử văn bản đến sau phần tử rect (vì vậy nó xuất hiện trên đầu trang).

<svg xmlns="http://www.w3.org/2000/svg"> 
 
    <g> 
 
    <rect x="0" y="0" width="100" height="100" fill="red"></rect> 
 
    <text x="0" y="50" font-family="Verdana" font-size="35" fill="blue">Hello</text> 
 
    </g> 
 
</svg>

+10

Có cách nào để không phải tự thiết lập chiều cao và chiều rộng trên rect? –

+0

Tùy thuộc vào tình huống và ý bạn là gì theo cách thủ công. Bạn có thể viết kịch bản trong JavaScript nếu bạn thích (xem câu trả lời của narendra dưới đây) – KeatsKelleher

+8

Sử dụng kiến ​​thức html của tôi - có thể không áp dụng ở đây - có vẻ như phần tử 'g' có kích thước ẩn ở đây và tôi muốn hình chữ nhật mở rộng với kích thước của nó. –

54

lập trình sử dụng D3: [. Chèn văn bản giữa một hình chữ nhật được vẽ trong svg]

body = d3.select('body') 
svg = body.append('svg').attr('height', 600).attr('width', 200) 
rect = svg.append('rect').transition().duration(500).attr('width', 150) 
       .attr('height', 100) 
       .attr('x', 40) 
       .attr('y', 100) 
       .style('fill', 'white') 
       .attr('stroke', 'black') 
text = svg.append('text').text('This is some information about whatever') 
       .attr('x', 50) 
       .attr('y', 150) 
       .attr('fill', 'black') 
+6

Điều này tạo ra đánh dấu mà * hiển thị * như OP muốn, nhưng nó không làm những gì OP đang cố gắng làm (mà không phải là hợp pháp). Điều này vẫn tạo ra ''. –

+1

Javascript! = SVG. Câu hỏi được gắn thẻ với svg, text và rect. Không có gì chỉ ra rằng người dùng có quyền truy cập vào một ngôn ngữ lập trình. (Làm cho nhận xét này kể từ khi tôi đến đây tìm kiếm một giải pháp tĩnh.) – aioobe

4
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> 
    <g> 
    <defs> 
    <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%"> 
     <stop offset="0%" style="stop-color:rgb(145,200,103);stop-opacity:1" /> 
     <stop offset="100%" style="stop-color:rgb(132,168,86);stop-opacity:1" /> 
    </linearGradient> 
    </defs> 
    <rect width="220" height="30" class="GradientBorder" fill="url(#grad1)" /> 
    <text x="60" y="20" font-family="Calibri" font-size="20" fill="white" >My Code , Your Achivement....... </text> 
    </g> 
</svg> 
Các vấn đề liên quan