【问题标题】:Vertical text in IE7, IE8, IE9, and IE10 with CSS onlyIE7、IE8、IE9 和 IE10 中的竖排文本,仅使用 CSS
【发布时间】:2013-06-24 23:15:27
【问题描述】:

有谁知道如何在 IE7、IE8、IE9 和 IE10 中仅使用 CSS 成功实现竖排文本? (垂直文本,我指的是逆时针旋转90度的文本)

这是我今天实现的,我认为应该是正确的:

.counterclockwise-text {

/* Chrome/Safari */
-webkit-transform: rotate(-90deg);
-webkit-transform-origin: 50% 50%;

/* Firefox */
-moz-transform: rotate(-90deg);
-moz-transform-origin: 50% 50%;

/* IE9 */
-ms-transform: rotate(-90deg);
-ms-transform-origin: 50% 50%;

/* This should work for IE10 and other modern browsers that do not need vendor prefixes */
transform: rotate(-90deg);
transform-origin: 50% 50%;

/* IE8 or less - using the "\9" CSS hack so that other browsers will ignore these lines */
zoom: 1\9;
writing-mode: tb-rl\9;
filter: flipv fliph;

}

但是,IE10 并没有忽略“\9” CSS hack——它会获取这些值并将文本再旋转 90 度。一个有用的解决方案是一种在 IE8 及以下不会被 IE10 拾取的垂直文本的方法。我真的想避免使用仅限 IE8 的样式表,或者使用媒体查询来检测 IE10。我只是在寻找一种方法来修改上面的 CSS 以在所有浏览器中都有垂直文本。谢谢!

编辑:

为了它的价值,我还尝试了下面的代码,它使用过滤器来旋转文本。这可能适用于大多数情况,但在我的例子中,很多文本被包装元素的受限(非旋转?)约束切断。

.counterclockwise-text {

/* Chrome/Safari */
-webkit-transform: rotate(-90deg);
-webkit-transform-origin: 50% 50%;

/* Firefox */
-moz-transform: rotate(-90deg); 
-moz-transform-origin: 50% 50%;

/* IE9 */
-ms-transform: rotate(-90deg);
-ms-transform-origin: 50% 50%;

/* IE10 and other modern browsers that do not need vendor prefixes */
transform: rotate(-90deg);
transform-origin: 50% 50%;

/* IE8 */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);

/* IE7 or less */
*zoom: 1;
*writing-mode: tb-rl;
*filter: flipv fliph;

}

我仍然没有找到一种方法来使用纯 CSS 来满足 IE10 和 IE8 的要求。

【问题讨论】:

    标签: css internet-explorer-10 vertical-text


    【解决方案1】:

    这是纯 CSS(每个文本 + 1 个额外的 div)解决方案

    适用于所有 IE 版本 IE7-10

    /** 
     * Works everywere ( IE7+, FF, Chrome, Safari, Opera )
     */
    .rotated-text {
        display: inline-block;
        overflow: hidden;
        width: 1.5em;
    }
    .rotated-text__inner {
        display: inline-block;
        white-space: nowrap;
        /* this is for shity "non IE" browsers
           that doesn'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;
    }
    .rotated-text__inner:before {
        content: "";
        float: left;
        margin-top: 100%;
    }
    
    /* mininless css that used just for this demo */
    .container {
      float: left;
    }
    

    HTML 示例

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=utf-8 />
    <title>JS Bin</title>
    </head>
    <body>
      <div class="container">
        <div class="rotated-text"><span class="rotated-text__inner">Easy</span></div>
      </div>
       <div class="container">
        <div class="rotated-text"><span class="rotated-text__inner">Normal</span></div>
         </div>
       <div class="container">
        <div class="rotated-text"><span class="rotated-text__inner">Hard</span></div>
    </div>
    </body>
    </html>
    

    来源:https://gist.github.com/obenjiro/7406727

    【讨论】:

    • 效果很好。我从 IE5、IE7-IE11 测试。
    【解决方案2】:

    您应该对旧版 IE 使用条件注释。
    他们的目的是什么,它不会伤害也不会破坏 (ing head) s :)

    【讨论】:

    • 我了解条件 cmets 总体上可能是更好的解决方案,但我要求使用纯 CSS 的解决方案。
    【解决方案3】:

    遇到同样的问题,但旋转文本的可读性较差,我建议不要使用:

    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);

    适用于 IE9 或 IE 8。

    这对我有用:

    p.css-vertical-text {
        color:#333;
        border:0px solid red;
        writing-mode:tb-rl;
        -webkit-transform:rotate(90deg);
        -moz-transform:rotate(90deg);
        -o-transform: rotate(90deg);
        white-space:nowrap;
        display:block;
        bottom:0;
        width:20px;
        height:20px;
        font-family: ‘Trebuchet MS’, Helvetica, sans-serif;
        font-size:24px;
        font-weight:normal;
        text-shadow: 0px 0px 1px #333;
    }
    

    来自http://scottgale.com/css-vertical-text/2010/03/01/

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2011-07-18
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      相关资源
      最近更新 更多