Làm việc với D3, tôi muốn có nhãn trục Y được xoay -90º và căn giữa trên trục Y. Tôi nghĩ đây sẽ là một miếng bánh, và viết những điều sau đây:Cách căn giữa văn bản xoay 90º trong SVG
// Y Axis Label
svg.append('svg:text')
.attr('class', 'y label')
.attr('text-anchor', 'middle')
.attr('y', 0)
.attr('width', height)
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height + ') rotate(-90)')
.text('Y Axis Label')
height
trong trường hợp này là chiều cao của bảng xếp hạng (khu vực dọc chiếm đóng bởi svg). Đoạn mã trên sẽ hiển thị phần tử <text>
ở phía dưới cùng bên trái của biểu đồ, sau đó căn giữa văn bản so với điểm dưới cùng bên trái. Các width
hiện không thay đổi và do đó thay vì được làm trung tâm nó chạy ra khỏi góc dưới cùng bên trái của svg.
Tôi đã đoán rằng nếu width
bằng với height
của biểu đồ, thì văn bản trong đó sẽ được căn giữa theo chiều dọc. Điều đó dường như không phải là trường hợp -HOẶC- có một số thuộc tính loại display:block
ma thuật mà tôi cần đặt trong SVG để width
hoạt động trên phần tử <text>
.
Việc này nên được thực hiện như thế nào?
Dựa trên những phản hồi, tôi đi cùng một con đường javascript và sửa đổi dòng trên để được (chiều cao/2) ...
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height/2 + ') rotate(-90)')
Vì vậy, nói cách khác, tôi phải tự thiết lập biến đổi x, y thành trung tâm theo chiều dọc với javascript. Tôi đã hy vọng để có được đi với một giải pháp CSS tinh khiết có thể được chất lỏng với kích thước trang. –