Tekst pionowy (obrócony) w tabeli HTML

119

Czy istnieje (przenośny) sposób obracania tekstu w komórce tabeli HTML o 90 °?

(Mam tabelę z wieloma kolumnami i dużą ilością tekstu na nagłówki, więc chciałbym napisać ją pionowo, aby zaoszczędzić miejsce).

Florian Jenn
źródło
2
Dodatkowe odpowiedzi tutaj: stackoverflow.com/questions/4264527/css-text-direction-vertical
Erel Segal-Halevi
Możliwe powtórzenie pionowego kierunku tekstu

Odpowiedzi:

105

.box_rotate {
     -moz-transform: rotate(7.5deg);  /* FF3.5+ */
       -o-transform: rotate(7.5deg);  /* Opera 10.5 */
  -webkit-transform: rotate(7.5deg);  /* Saf3.1+, Chrome */
             filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083);  /* IE6,IE7 */
         -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083)"; /* IE8 */
    }
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae porta lectus. Suspendisse dolor mauris, scelerisque ut diam vitae, dictum ultricies est. Cras sit amet erat porttitor arcu lacinia ultricies. Morbi sodales, nisl vitae imperdiet consequat, purus nunc maximus nulla, et pharetra dolor ex non dolor.</div>
<div class="box_rotate">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae porta lectus. Suspendisse dolor mauris, scelerisque ut diam vitae, dictum ultricies est. Cras sit amet erat porttitor arcu lacinia ultricies. Morbi sodales, nisl vitae imperdiet consequat, purus nunc maximus nulla, et pharetra dolor ex non dolor.</div>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae porta lectus. Suspendisse dolor mauris, scelerisque ut diam vitae, dictum ultricies est. Cras sit amet erat porttitor arcu lacinia ultricies. Morbi sodales, nisl vitae imperdiet consequat, purus nunc maximus nulla, et pharetra dolor ex non dolor.</div>

Zrobiono z http://css3please.com/

Od 2017 r. Wspomniana witryna uprościła zestaw reguł, aby porzucić starszy filtr Internet Explorera i polegać bardziej na standardowej transformwłaściwości :

.box_rotate {
  -webkit-transform: rotate(7.5deg);  /* Chrome, Opera 15+, Safari 3.1+ */
      -ms-transform: rotate(7.5deg);  /* IE 9 */
          transform: rotate(7.5deg);  /* Firefox 16+, IE 10+, Opera */
}
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae porta lectus. Suspendisse dolor mauris, scelerisque ut diam vitae, dictum ultricies est. Cras sit amet erat porttitor arcu lacinia ultricies. Morbi sodales, nisl vitae imperdiet consequat, purus nunc maximus nulla, et pharetra dolor ex non dolor.</div>
<div class="box_rotate">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae porta lectus. Suspendisse dolor mauris, scelerisque ut diam vitae, dictum ultricies est. Cras sit amet erat porttitor arcu lacinia ultricies. Morbi sodales, nisl vitae imperdiet consequat, purus nunc maximus nulla, et pharetra dolor ex non dolor.</div>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vitae porta lectus. Suspendisse dolor mauris, scelerisque ut diam vitae, dictum ultricies est. Cras sit amet erat porttitor arcu lacinia ultricies. Morbi sodales, nisl vitae imperdiet consequat, purus nunc maximus nulla, et pharetra dolor ex non dolor.</div>

Álvaro González
źródło
Wygląda świetnie - sprawdzę, jak dobrze to działa w różnych przeglądarkach. (I używając 90deg, oczywiście ...)
Florian Jenn
9
Jest jednak jeden problem, szerokość kolumn nagłówka tabeli nie zostanie zwiększona po obróceniu tam, gdzie jest to konieczne, więc wygląda to na przebłysk (wypróbowane w FF) :(
xaralis
3
Tak, w Firefoksie (nie wiem o innych przeglądarkach) albo <tr> jest obracane, a reszta kolumny nie dostosowuje LUB, możesz umieścić <div> wewnątrz <tr> i poeksperymentować z ustawieniem <tr> POZYCJA na WZGLĘDNA i zawarte <div> na ABSOLUTNE i jego pochodzenie -moz-transformacji: 0 50%; To poprawi jego pozycję. Aby uzyskać prawidłową szerokość i wysokość, może być konieczne użycie jquery lub czegoś podobnego do ustawienia szerokości i wysokości elementu <tr> odpowiednio na wysokość i szerokość elementu <div> .
Adrian Garner
2
Działa tylko, jeśli masz kwadratowe komórki, więc nie oszczędza żadnej poziomej przestrzeni
99 problemów - Składnia to nie jeden
1
To zadziała tylko dla komórek, które są square, w przeciwnym razie po obróceniu wysokość i szerokość również są obracane wraz z elementem, który psuje wygląd, a tekst elementów nakłada się na inne
Rajshekar Reddy
35

Alternatywne rozwiązanie?

Czy zamiast obracania tekstu działałoby napisanie „od góry do dołu”?

Lubię to:

S  
O  
M  
E  

T  
E  
X  
T  

Myślę, że byłoby to o wiele łatwiejsze - możesz oddzielić ciąg tekstu i wstawić podział wiersza po każdym znaku.

Można to zrobić za pomocą JavaScript w przeglądarce w następujący sposób:

"SOME TEXT".split("").join("\n")

... lub możesz to zrobić po stronie serwera, więc nie zależałoby to od możliwości JS klienta. (Zakładam, że to masz na myśli mówiąc „przenośny”?)

Ponadto użytkownik nie musi odwracać głowy na boki, aby go przeczytać. :)

Aktualizacja

Ten wątek dotyczy robienia tego za pomocą jQuery.

Nathan Long
źródło
1
Jest badanie, które pokazuje, że rodzaj układu jest mniej czytelny, niż obracający się w lewo / w prawo
Édouard Lopez
14

W pierwotnej odpowiedzi i mojej poprzedniej odpowiedzi w wierszu IE8 znajduje się cytat, który to odrzuca, tuż obok średnika. Yikes i BAAAAD! Poniższy kod ma poprawnie ustawiony obrót i działa. Aby filtr został zastosowany, musisz pływać w IE.

<div style = "
    float: left; 
    pozycja: względna;
    -moz-transform: obróć (270 stopni); / * FF3,5 + * /        
    -o-transformacja: obrót (270 stopni); / * Opera 10.5 * /   
    -webkit-transform: obrót (270 stopni); / * Saf3.1 +, Chrome * /              
    filtr: progid: DXImageTransform.Microsoft.BasicImage (obrót = 3); / * IE6, IE7 * /          
    -ms-filter: progid: DXImageTransform.Microsoft.BasicImage (rotacja = 3); / * IE8 * /           
"
> Licznik i wartość </div>;
Rob Pinion
źródło
5
+1 za wskazanie konieczności używania pływaka, aby to działało w IE.
RET
4

Po ponad dwóch godzinach prób mogę śmiało powiedzieć, że cała wspomniana do tej pory metoda nie działa w różnych przeglądarkach lub w IE nawet w wersjach przeglądarek ...

Na przykład (odpowiedź do góry przegłosowana):

 filter:  progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083);  /* IE6,IE7 */
     -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0.083)"; /* IE8 */

obraca się dwa razy w IE9, raz dla filtra i raz dla -ms-filter, więc ...

Wszystkie inne wymienione metody również nie działają, przynajmniej nie jeśli nie musisz ustawiać stałej wysokości / szerokości komórki nagłówka tabeli (z kolorem tła), gdzie powinna ona automatycznie dostosowywać się do rozmiaru najwyższego elementu.

Aby rozwinąć generację obrazu po stronie serwera zaproponowaną przez Nathana Longa, która jest tak naprawdę jedyną uniwersalnie działającą metodą, oto mój kod VB.NET dla ogólnego programu obsługi (* .ashx):

Imports System.Web
Imports System.Web.Services


Public Class GenerateImage
    Implements System.Web.IHttpHandler


    Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        'context.Response.ContentType = "text/plain"
        'context.Response.Write("Hello World!")
        context.Response.ContentType = "image/png"

        Dim strText As String = context.Request.QueryString("text")
        Dim strRotate As String = context.Request.QueryString("rotate")
        Dim strBGcolor As String = context.Request.QueryString("bgcolor")

        Dim bRotate As Boolean = True

        If String.IsNullOrEmpty(strText) Then
            strText = "No Text"
        End If


        Try
            If Not String.IsNullOrEmpty(strRotate) Then
                bRotate = System.Convert.ToBoolean(strRotate)
            End If
        Catch ex As Exception

        End Try


        'Dim img As System.Drawing.Image = GenerateImage(strText, "Arial", bRotate)
        'Dim img As System.Drawing.Image = CreateBitmapImage(strText, bRotate)

        ' Generic error in GDI+
        'img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png)

        'Dim bm As System.Drawing.Bitmap = New System.Drawing.Bitmap(img)
        'bm.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png)

        Using msTempOutputStream As New System.IO.MemoryStream
            'Dim img As System.Drawing.Image = GenerateImage(strText, "Arial", bRotate)
            Using img As System.Drawing.Image = CreateBitmapImage(strText, bRotate, strBGcolor)
                img.Save(msTempOutputStream, System.Drawing.Imaging.ImageFormat.Png)
                msTempOutputStream.Flush()

                context.Response.Buffer = True
                context.Response.ContentType = "image/png"
                context.Response.BinaryWrite(msTempOutputStream.ToArray())
            End Using ' img

        End Using ' msTempOutputStream

    End Sub ' ProcessRequest


    Private Function CreateBitmapImage(strImageText As String) As System.Drawing.Image
        Return CreateBitmapImage(strImageText, True)
    End Function ' CreateBitmapImage


    Private Function CreateBitmapImage(strImageText As String, bRotate As Boolean) As System.Drawing.Image
        Return CreateBitmapImage(strImageText, bRotate, Nothing)
    End Function


    Private Function InvertMeAColour(ColourToInvert As System.Drawing.Color) As System.Drawing.Color
        Const RGBMAX As Integer = 255
        Return System.Drawing.Color.FromArgb(RGBMAX - ColourToInvert.R, RGBMAX - ColourToInvert.G, RGBMAX - ColourToInvert.B)
    End Function



    Private Function CreateBitmapImage(strImageText As String, bRotate As Boolean, strBackgroundColor As String) As System.Drawing.Image
        Dim bmpEndImage As System.Drawing.Bitmap = Nothing

        If String.IsNullOrEmpty(strBackgroundColor) Then
            strBackgroundColor = "#E0E0E0"
        End If

        Dim intWidth As Integer = 0
        Dim intHeight As Integer = 0


        Dim bgColor As System.Drawing.Color = System.Drawing.Color.LemonChiffon ' LightGray
        bgColor = System.Drawing.ColorTranslator.FromHtml(strBackgroundColor)

        Dim TextColor As System.Drawing.Color = System.Drawing.Color.Black
        TextColor = InvertMeAColour(bgColor)

        'TextColor = Color.FromArgb(102, 102, 102)



        ' Create the Font object for the image text drawing.
        Using fntThisFont As New System.Drawing.Font("Arial", 11, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel)

            ' Create a graphics object to measure the text's width and height.
            Using bmpInitialImage As New System.Drawing.Bitmap(1, 1)

                Using gStringMeasureGraphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmpInitialImage)
                    ' This is where the bitmap size is determined.
                    intWidth = CInt(gStringMeasureGraphics.MeasureString(strImageText, fntThisFont).Width)
                    intHeight = CInt(gStringMeasureGraphics.MeasureString(strImageText, fntThisFont).Height)

                    ' Create the bmpImage again with the correct size for the text and font.
                    bmpEndImage = New System.Drawing.Bitmap(bmpInitialImage, New System.Drawing.Size(intWidth, intHeight))

                    ' Add the colors to the new bitmap.
                    Using gNewGraphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmpEndImage)
                        ' Set Background color
                        'gNewGraphics.Clear(Color.White)
                        gNewGraphics.Clear(bgColor)
                        gNewGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
                        gNewGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias


                        ''''

                        'gNewGraphics.TranslateTransform(bmpEndImage.Width, bmpEndImage.Height)
                        'gNewGraphics.RotateTransform(180)
                        'gNewGraphics.RotateTransform(0)
                        'gNewGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault


                        gNewGraphics.DrawString(strImageText, fntThisFont, New System.Drawing.SolidBrush(TextColor), 0, 0)

                        gNewGraphics.Flush()

                        If bRotate Then
                            'bmpEndImage = rotateImage(bmpEndImage, 90)
                            'bmpEndImage = RotateImage(bmpEndImage, New PointF(0, 0), 90)
                            'bmpEndImage.RotateFlip(RotateFlipType.Rotate90FlipNone)
                            bmpEndImage.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipNone)
                        End If ' bRotate

                    End Using ' gNewGraphics

                End Using ' gStringMeasureGraphics

            End Using ' bmpInitialImage

        End Using ' fntThisFont

        Return bmpEndImage
    End Function ' CreateBitmapImage


    ' http://msdn.microsoft.com/en-us/library/3zxbwxch.aspx
    ' http://msdn.microsoft.com/en-us/library/7e1w5dhw.aspx
    ' http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=286
    ' http://road-blogs.blogspot.com/2011/01/rotate-text-in-ssrs.html
    Public Shared Function GenerateImage_CrappyOldReportingServiceVariant(ByVal strText As String, ByVal strFont As String, bRotate As Boolean) As System.Drawing.Image
        Dim bgColor As System.Drawing.Color = System.Drawing.Color.LemonChiffon ' LightGray
        bgColor = System.Drawing.ColorTranslator.FromHtml("#E0E0E0")


        Dim TextColor As System.Drawing.Color = System.Drawing.Color.Black
        'TextColor = System.Drawing.Color.FromArgb(255, 0, 0, 255)

        If String.IsNullOrEmpty(strFont) Then
            strFont = "Arial"
        Else
            If strFont.Trim().Equals(String.Empty) Then
                strFont = "Arial"
            End If
        End If


        'Dim fsFontStyle As System.Drawing.FontStyle = System.Drawing.FontStyle.Regular
        Dim fsFontStyle As System.Drawing.FontStyle = System.Drawing.FontStyle.Bold
        Dim fontFamily As New System.Drawing.FontFamily(strFont)
        Dim iFontSize As Integer = 8 '//Change this as needed


        ' vice-versa, because 270° turn
        'Dim height As Double = 2.25
        Dim height As Double = 4
        Dim width As Double = 1

        ' width = 10
        ' height = 10

        Dim bmpImage As New System.Drawing.Bitmap(1, 1)
        Dim iHeight As Integer = CInt(height * 0.393700787 * bmpImage.VerticalResolution) 'y DPI
        Dim iWidth As Integer = CInt(width * 0.393700787 * bmpImage.HorizontalResolution) 'x DPI

        bmpImage = New System.Drawing.Bitmap(bmpImage, New System.Drawing.Size(iWidth, iHeight))



        '// Create the Font object for the image text drawing.
        'Dim MyFont As New System.Drawing.Font("Arial", iFontSize, fsFontStyle, System.Drawing.GraphicsUnit.Point)
        '// Create a graphics object to measure the text's width and height.
        Dim MyGraphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmpImage)
        MyGraphics.Clear(bgColor)


        Dim stringFormat As New System.Drawing.StringFormat()
        stringFormat.FormatFlags = System.Drawing.StringFormatFlags.DirectionVertical
        'stringFormat.FormatFlags = System.Drawing.StringFormatFlags.DirectionVertical Or System.Drawing.StringFormatFlags.DirectionRightToLeft
        Dim solidBrush As New System.Drawing.SolidBrush(TextColor)
        Dim pointF As New System.Drawing.PointF(CSng(iWidth / 2 - iFontSize / 2 - 2), 5)
        Dim font As New System.Drawing.Font(fontFamily, iFontSize, fsFontStyle, System.Drawing.GraphicsUnit.Point)


        MyGraphics.TranslateTransform(bmpImage.Width, bmpImage.Height)
        MyGraphics.RotateTransform(180)
        MyGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault
        MyGraphics.DrawString(strText, font, solidBrush, pointF, stringFormat)
        MyGraphics.ResetTransform()

        MyGraphics.Flush()

        'If Not bRotate Then
        'bmpImage.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone)
        'End If

        Return bmpImage
    End Function ' GenerateImage



    ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property ' IsReusable


End Class

Zauważ, że jeśli myślisz, że ta część

        Using msTempOutputStream As New System.IO.MemoryStream
            'Dim img As System.Drawing.Image = GenerateImage(strText, "Arial", bRotate)
            Using img As System.Drawing.Image = CreateBitmapImage(strText, bRotate, strBGcolor)
                img.Save(msTempOutputStream, System.Drawing.Imaging.ImageFormat.Png)
                msTempOutputStream.Flush()

                context.Response.Buffer = True
                context.Response.ContentType = "image/png"
                context.Response.BinaryWrite(msTempOutputStream.ToArray())
            End Using ' img

        End Using ' msTempOutputStream

można zastąpić

img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Png)

ponieważ działa na serwerze programistycznym, bardzo się mylisz, zakładając, że ten sam kod nie zgłosi wyjątku ogólnego GDI +, jeśli wdrożysz go na serwerze Windows 2003 IIS 6 ...

następnie użyj tego w ten sposób:

<img alt="bla" src="GenerateImage.ashx?no_cache=123&text=Hello%20World&rotate=true" />
Stefan Steiger
źródło
Zależy to jednak od VB.NET, który również nie jest uniwersalny. (Ale przynajmniej przenosi problem z klientów na serwer.)
Florian Jenn
@Florian Jenn: Cóż, tak, kod VB.NET zależy od VB.NET, ale możesz zrobić to samo z PHP lub Phyton lub Ruby lub co innego :) Swoją drogą, przekonwertuj go na C # i możesz pozwolić mu działać w trybie mono dla Linux lub Mac lub Solaris.
Stefan Steiger
4

Mój pierwszy wkład w społeczność, na przykład obracanie prostego tekstu i nagłówka tabeli, tylko przy użyciu html i css.

wprowadź opis obrazu tutaj

HTML

<div class="rotate">text</div>

CSS

.rotate {
  display:inline-block;
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}

Tutaj przykład w jsfiddle

omardiaze
źródło
Obecnie zaleca się używanie fragmentu zamiast jsfiddle.
matsjoyce
Jeśli dobrze rozumiem, są to aktualne reguły CSS w porównaniu z rozwiązaniem Álvaro G. Vicario?
Florian Jenn
Fragment @matsjoyce zawiera wiele błędów, a także przerywa pracę.
Rajshekar Reddy,
1
Odpowiedź ta działa tylko dla komórek kwadratowych .. rozkłada na komórki prostokątne jsfiddle.net/a2uxgm44/156
Rajshekar Reddy
3

Filtry IE oraz transformacje CSS ( Safari i Firefox ).

IE jest obsługiwana najstarsza, Safari ma [przynajmniej część?] Obsługę w 3.1.2, a Firefox nie będzie obsługiwał aż do 3.1.

Alternatywnie, poleciłbym mieszankę Canvas / VML lub SVG / VML. (Płótno ma szersze wsparcie.)

bez powiek
źródło
Zgadzam się z bez powiek. To wszystko jest teraz w dużym stopniu „hackem”. Nie całkiem gotowy na czas największej oglądalności.
Diodeus - James MacFarlane
2

Oto taki, który działa w przypadku zwykłego tekstu z pewnym przetwarzaniem po stronie serwera:

public string RotateHtmltext(string innerHtml)
{
   const string TRANSFORMTEXT = "transform: rotate(90deg);";
   const string EXTRASTYLECSS = "<style type='text/css'>.r90 {"
                                 + "-webkit-" + TRANSFORMTEXT
                                 + "-moz-" + TRANSFORMTEXT
                                 + "-o-" + TRANSFORMTEXT
                                 + "-ms-" + TRANSFORMTEXT
                                 + "" + TRANSFORMTEXT
                                 + "width:1em;line-height:1ex}</style>";
   const string WRAPPERDIV = "<div style='display: table-cell; vertical-align: middle;'>";

   var newinnerHtml = string.Join("</div>"+WRAPPERDIV, Regex.Split(innerHtml, @"<br */?>").Reverse());

   newinnerHtml = Regex.Replace(newinnerHtml, @"((?:<[^>]*>)|(?:[^<]+))",
                                 match => match.Groups[1].Value.StartsWith("<")
                                             ? match.Groups[1].Value
                                             : string.Join("", match.Groups[1].Value.ToCharArray().Select(x=>"<div class='r90'>"+x+"</div>")),
                                 RegexOptions.Singleline);
   return EXTRASTYLECSS + WRAPPERDIV + newinnerHtml + "</div>";
}

co daje coś takiego:

<style type="text/css">.r90 {
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-o-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
width: 1em;
line-height: 1ex; 
}</style>
<div style="display: table-cell; vertical-align: middle;">
<div class="r90">p</div>
<div class="r90">o</div>
<div class="r90">s</div>
</div><div style="display: table-cell; vertical-align: middle;">
<div class="r90">(</div>
<div class="r90">A</div>
<div class="r90">b</div>
<div class="r90">s</div>
<div class="r90">)</div>
</div>

http://jsfiddle.net/TzzHy/

Cine
źródło
1

Korzystałem z biblioteki Font Awesome i udało mi się osiągnąć ten efekt, dołączając poniższe elementy do dowolnego elementu HTML.

<div class="fa fa-rotate-270">
  My Test Text
</div>

Twój przebieg może się różnić.

Jeff Ancel
źródło
1

Inne rozwiązanie:

(function () {

    var make_rotated_text = function (text)
    {
        var can = document.createElement ('canvas');
        can.width = 10;
        can.height = 10;
        var ctx=can.getContext ("2d");
        ctx.font="20px Verdana";
        var m = ctx.measureText(text);
        can.width = 20;
        can.height = m.width;
        ctx.font="20px Verdana";
        ctx.fillStyle = "#000000";
        ctx.rotate(90 * (Math.PI / 180));
        ctx.fillText (text, 0, -2);
        return can;
    };

    var canvas = make_rotated_text ("Hellooooo :D");
    var body = document.getElementsByTagName ('body')[0];
    body.appendChild (canvas);

}) ();

Absolutnie przyznaję, że jest to dość hakerskie, ale jest to proste rozwiązanie, jeśli chcesz uniknąć nadużywania css.

arkod
źródło
0
-moz-transform: rotate(7.5deg);  /* FF3.5+ */
-o-transform: rotate(7.5deg);  /* Opera 10.5 */
-webkit-transform: rotate(7.5deg);  /* Saf3.1+, Chrome */
filter:  progid:DXImageTransform.Microsoft.BasicImage(rotation=1);  /* IE6,IE7 allows only 1, 2, 3 */
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; /* IE8 allows only 1 2 or 3*/
Rob Pinion
źródło
0

Spójrz na to, znalazłem to, szukając rozwiązania dla IE 7.

całkowicie fajne rozwiązanie dla wibracji tylko dla CSS

Dzięki aiboy za soultion

oto link

a tutaj jest łącze przepełnienia stosu, w którym natknąłem się na ten link miau

         .vertical-text-vibes{

                /* this is for shity "non IE" browsers
                   that dosn't support writing-mode */
                -webkit-transform: translate(1.1em,0) rotate(90deg);
                   -moz-transform: translate(1.1em,0) rotate(90deg);
                     -o-transform: translate(1.1em,0) rotate(90deg);
                        transform: translate(1.1em,0) rotate(90deg);
                -webkit-transform-origin: 0 0;
                   -moz-transform-origin: 0 0;
                     -o-transform-origin: 0 0;
                        transform-origin: 0 0;  
             /* IE9+ */    ms-transform: none;    
                   -ms-transform-origin: none;    
        /* IE8+ */    -ms-writing-mode: tb-rl;    
   /* IE7 and below */    *writing-mode: tb-rl;

            }
James Nicholson
źródło