旋转CSS块时的挑战(transform:rotate)- 宽度自适应

11

我在使用CSS变换将一个块旋转90度时遇到了一点问题。

问题在于如下:

旋转的块位于40px的垂直列内。这意味着自动模式下旋转块的宽度不超过40px。因此,文本块不会放置在一条连续线上,而是出现了换行符。

为了更好地可视化这个问题,请查看我创建的这个fiddle: http://jsfiddle.net/F7CEX/

#open_nav {
    font-family: 'Exo', sans-serif;
    font-weight: 300;
    font-size: 1em;
    display: block;
    color: #333333;
    text-decoration: none;
    background: url("img/menu-s.png") no-repeat 18px -30px transparent;
    padding-left: 50px;
    padding-right: 19px;
    line-height: 40px;
    position: absolute;
    bottom: 18px;
    -webkit-transform: rotate(-90deg);
    -webkit-transform-origin: 20px;
    -moz-transform: rotate(-90deg);
    -moz-transform-origin: 20px;
    -ms-transform: rotate(-90deg);
    -ms-transform-origin: 20px;
    -o-transform: rotate(-90deg);
    -o-transform-origin: 20px;
    transform: rotate(-90deg);
    transform-origin
}

我只需要这段文本成为一行。有任何想法吗?

3个回答

18

如果这是您想要的

演示链接

这里的 CSS 仅添加了空格。它以连续的行呈现。如果我漏掉了什么,请您指出。

这是 CSS:

#sidebar-small {
width: 40px;
height: 100%;
position: fixed;
left: 0;
top: 0;
}

#open_nav {
white-space:nowrap;
font-family: 'Exo', sans-serif;
font-weight: 300;
font-size: 1em;
display: block;
color: #333333;
text-decoration: none;
background: url("img/menu-s.png") no-repeat 18px -30px transparent;
padding-left: 50px;
padding-right: 19px;
line-height: 40px;
position: absolute;
bottom: 18px;
-webkit-transform: rotate(-90deg);
-webkit-transform-origin: 20px;
-moz-transform: rotate(-90deg);
-moz-transform-origin: 20px;
-ms-transform: rotate(-90deg);
-ms-transform-origin: 20px;
-o-transform: rotate(-90deg);
-o-transform-origin: 20px;
transform: rotate(-90deg);
transform-origin: 20px;
}

请检查并告诉我是否遗漏了什么。


经过这么多年,这正是我所需要的。非常干净的解决方案,可能是最干净的。您的 white-space:nowrap 强制内容为一行,而 bottom: ...px 帮助我调整起始点,最后 transform-origin 帮助我调整开始转换的位置。 - Mycodingproject

0

只需从CSS中删除Position属性:

#sidebar-small {
width: 40px;
height: 100%;
left: 0;
top: 0;
}

在这种情况下,您需要再次为open_nav容器指定宽度; - N.P. SINGH
是的,但这意味着按钮内不再存在可变宽度内容!那么我的问题就没有解决方案了吗? - user796443

0

我认为我们可以通过使用以下样式来解决问题

#sidebar-small {
height: 250px;
left: 0;
position: fixed;
top: 0;
width: 250px;
}

在上述样式中,如果我们希望标题占据整个屏幕,我们可以将宽度设置为100%。
#open-nav{
bottom: 8px;
left: 10px;
position: absolute;
color: #333333;
font-family: 'Exo',sans-serif;
font-size: 1em;
line-height: 40px;
padding-left: 20px;
padding-right: 20px;
text-decoration: none;
-webkit-transform: rotate(-90deg);
-webkit-transform-origin: 20px;
-moz-transform: rotate(-90deg);
-moz-transform-origin: 20px;
-ms-transform: rotate(-90deg);
-ms-transform-origin: 20px;
-o-transform: rotate(-90deg);
-o-transform-origin: 20px;
transform: rotate(-90deg);
transform-origin: 20px;
}

以上样式适用于锚标签。


将侧边栏的宽度视为给定。通过更改设计来解决问题并不是真正的解决方案。此外,我在我的论文中提到了这个解决方案,解释了宽度是问题所在。 - user796443

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接