Я использую jqGrid со многими столбцами, содержащими логическую информацию, которые отображаются в виде флажков внутри таблицы (см. http://www.ok -soft-gmbh.com / VerticalHeaders / TestFixedO.htm в качестве примера). Для более компактного отображения информации я использую вертикальные заголовки столбцов. Он работает очень хорошо и работает в jqGrid во всех браузерах (см. Мое обсуждение с Тони Томовым на форуме jqGrid http://www.trirand.com/blog/?page_id=393/feature-request/headers-with-vertical-orientation/),, но в IE вертикальный текст размыт и выглядит недостаточно красиво (откройте ссылку выше в IE, и вы точно пойму, что я имею в виду.) Меня спросили пользователи, почему текст отображается так странно. Поэтому я подумываю использовать основанную на JavaScript библиотеку SVG, например SVG Web (http://code.google.com/p/svgweb/) или Raphaël (http://raphaeljs.com/). SVG очень мощный, и трудно найти хороший пример. Мне нужно только отображать вертикальный текст (-90 град, снизу вверх) и использовать по возможности без работы в режиме абсолютного позиционирования.
Итак, еще раз мой вопрос: Мне нужно иметь возможность отображать вертикальный текст (- 90 град. Вращение ) внутри <td>
элементов заголовка таблицы. Я хочу использовать основанную на JavaScript библиотеку SVG, такую как SVG Web или 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.