【问题标题】:CSS3 transform rotate text, fixed position left and right, vertically centeredCSS3变换旋转文本,左右固定位置,垂直居中
【发布时间】:2013-02-24 16:59:31
【问题描述】:

我正在尝试将一个元素放置在浏览器窗口的左侧和右侧,两者都包含带有 CSS 变换旋转的 ul。我设法将.rotate-left 及其ul 定位在左侧,但我无法将ul 定位在右侧.rotate-right 内。 (如果不支持转换,则需要在从右到左的水平线上可见。)

CSS:

.rotate-left ul li,
.rotate-right ul li {
    display: inline;
}

.rotate-left {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: 10em;
    white-space: nowrap;
    background: silver;
}

.rotate-left ul {
    display: inline-block;
    position: fixed;
    top: 0;
    bottom: 0;
    height: 1.5em;
    margin: auto;
    background: red;
    -webkit-transform-origin: 0 50%;
       -moz-transform-origin: 0 50%;
    -webkit-transform: rotate(-90deg) translate(-50%, 50%);
       -moz-transform: rotate(-90deg) translate(-50%, 50%);
}

.rotate-right {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 10em; 
    white-space: nowrap;
    background: silver;
}

.rotate-right ul {
    position: fixed;
    top: 0;
    bottom: 0;
    right: 0;
    height: 1.5em; 
    margin: auto;
    background: red;
    -webkit-transform-origin: 0 50%;
       -moz-transform-origin: 0 50%;
    -webkit-transform: rotate(90deg) translate(-50%, 50%);
       -moz-transform: rotate(90deg) translate(-50%, 50%);
}

HTML:

<div class="rotate-left">
    <ul>
        <li>left</li>
        <li>left</li>
        <li>left</li>
    </ul>
</div>
<div class="rotate-right">
    <ul>
        <li>right</li>
        <li>right</li>
        <li>right</li>
    </ul>
</div>

-

演示:http://codepen.io/anon/pen/FtyEG

我已经建立在这个 100% height block with vertical text 之上。

【问题讨论】:

    标签: css position transform vertical-alignment css-transforms


    【解决方案1】:

    我认为我或多或少是正确的。应该是:

    .rotate-right ul {
        -webkit-transform-origin: 78% 100%;
        -webkit-transform: rotate(90deg) translate(0%, 0%);
    

    如果选择 ok 变换原点则不需要翻译;到 78% 将补偿 li 宽度

    【讨论】:

    • 我刚刚注意到我忘记在ul 上添加padding: 0;,抱歉。我已经更新了演示。您的解决方案仍然很接近。垂直约 30px。
    【解决方案2】:

    我解决了它并清理了一些代码。

    .left,
    .right {
        position: fixed;
        top: 0;
        bottom: 0;
        height: 1.5em;
        margin: auto;
    }
    
    .left {
        left: 0;
        -webkit-transform-origin: 0 50%;
           -moz-transform-origin: 0 50%;
            -ms-transform-origin: 0 50%;
             -o-transform-origin: 0 50%;
                transform-origin: 0 50%;
        -webkit-transform: rotate(-90deg) translate(-50%, 50%);
           -moz-transform: rotate(-90deg) translate(-50%, 50%);
            -ms-transform: rotate(-90deg) translate(-50%, 50%);
             -o-transform: rotate(-90deg) translate(-50%, 50%);
                transform: rotate(-90deg) translate(-50%, 50%);
    }
    
    .right {
        right: 0;
        -webkit-transform-origin: 100% 50%;
           -moz-transform-origin: 100% 50%;
            -ms-transform-origin: 100% 50%;
             -o-transform-origin: 100% 50%;
                transform-origin: 100% 50%;
        -webkit-transform: rotate(90deg) translate(50%, 50%);
           -moz-transform: rotate(90deg) translate(50%, 50%);
            -ms-transform: rotate(90deg) translate(50%, 50%);
             -o-transform: rotate(90deg) translate(50%, 50%);
                transform: rotate(90deg) translate(50%, 50%);
    }
    

    演示:http://codepen.io/anon/pen/LHeaB

    【讨论】:

    • 这是一个出色的解决方案,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2013-02-14
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    相关资源
    最近更新 更多