Я использую jqGrid со многими столбцами, содержащими булеву информацию, которые отображены как флажки в таблице (см. http://www.ok-soft-gmbh.com/VerticalHeaders/TestFixedO.htm как пример). Для отображения информации более сжато, я использую заголовки вертикального столбца. Это работает очень хорошо и работает в jqGrid во всех браузерах (см. мое обсуждение с Tony Tomov на jqGrid форуме http://www.trirand.com/blog/?page_id=393/feature-request/headers-with-vertical-orientation/), но в IE вертикальный текст размывается и не выглядит достаточно хорошим (откройте ссылку выше в IE, и Вы будете видеть точно, что я имею в виду). Меня спросили от пользователей почему текст, отображенный так странно. Таким образом, я думаю о пользовании основанной на JavaScript библиотекой SVG как сеть SVG (http://code.google.com/p/svgweb/) или Raphaël (http://raphaeljs.com/). SVG очень мощен, и трудно найти хороший пример. Я должен только отобразить вертикальный текст (-90 выпускников, с самого начала) и использование, если это возможно, не работая в режиме абсолютного расположения.
Так еще раз мой вопрос: у Меня должна быть возможность отобразить вертикальный текст (-90 вращений выпускника) внутри Чтобы быть точным вот, мое текущее решение: Я определяю определить И включайте вызов как
Пример преобразования текста холста элементы заголовка таблицы. Я хочу пользоваться основанной на JavaScript библиотекой SVG как сеть SVG или Raphaël. Решение должно поддерживать IE6. У кого-либо есть хороший справочный пример, который мог помочь мне сделать это? Если бы кто-то отправляет целое решение проблемы, я был бы счастлив. .rotate
{
-webkit-transform: rotate(-90deg); /* Safari 3.1+, Chrome */
-moz-transform: rotate(-90deg); /* Firefox 3.5+ */
-o-transform: rotate(-90deg); /* Opera starting with 10.50 */
/* Internet Explorer: */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); /* IE6, IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)" /* IE8 */;
}
RotateCheckboxColumnHeaders
функцияvar RotateCheckboxColumnHeaders = function (grid, headerHeight) {
// we use grid as context (if one have more as one table on tnhe page)
var trHead = $("thead:first tr", grid.hdiv);
var cm = grid.getGridParam("colModel");
$("thead:first tr th").height(headerHeight);
headerHeight = $("thead:first tr th").height();
for (var iCol = 0; iCol < cm.length; iCol++) {
var cmi = cm[iCol];
if (cmi.formatter === 'checkbox') {
// we must set width of column header div BEFOR adding class "rotate" to
// prevent text cutting based on the current column width
var headDiv = $("th:eq(" + iCol + ") div", trHead);
headDiv.width(headerHeight).addClass("rotate");
if (!$.browser.msie) {
if ($.browser.mozilla) {
headDiv.css("left", (cmi.width - headerHeight) / 2 + 3).css("bottom", 7);
}
else {
headDiv.css("left", (cmi.width - headerHeight) / 2);
}
}
else {
var ieVer = jQuery.browser.version.substr(0, 3);
// Internet Explorer
if (ieVer !== "6.0" && ieVer !== "7.0") {
headDiv.css("left", cmi.width / 2 - 4).css("bottom", headerHeight / 2);
$("span", headDiv).css("left", 0);
}
else {
headDiv.css("left", 3);
}
}
}
}
};
RotateCheckboxColumnHeaders(grid, 110);
после создания jqGrid.1 ответ
<!--[if IE]><script type="text/javascript" src="../excanvas.js"></script><![endif]-->
<script type="text/javascript" src="../canvas.text.js"></script>
<script type="text/javascript" src="../faces/dejavu_sans-normal-normal.js"></script>
<script type="text/javascript" src="../faces/dejavu_sans-bold-normal.js"></script>
</head>
<body>
<canvas width="500" height="300" id="test-canvas" style="font-size: 16px;"></canvas>
<script type="text/javascript">
function initCanvas(canvas) {
if (window.G_vmlCanvasManager && window.attachEvent && !window.opera) {
canvas = window.G_vmlCanvasManager.initElement(canvas);
}
return canvas;
}
window.onload = function() {
var canvas = initCanvas(document.getElementById("test-canvas")),
ctx = canvas.getContext('2d');
ctx.strokeStyle = "rgba(255,0,0,1)";
ctx.fillStyle = "rgba(0,0,0,1)";
ctx.lineWidth = 1;
ctx.font = "20pt Verdana, sans-serif";
ctx.strokeStyle = "#000";
ctx.rotate(Math.PI / 2);
ctx.fillText('Vertical', 0, 0);
ctx.restore();
}
</script>
</body>
Похожие вопросы: