20

我试图弄清楚如何制作将位于右上角并旋转 90 度的购物车选项卡。旋转自然地混合了位置,但也许有一种解决方法可以包装到不同的包装器等......

如果不需要定义宽度,则加分。我不在乎旧的浏览器

4

4 回答 4

35

怎么用transform-origin?见演示

相关CSS:

#box {
    position: relative;
}
.bg {
    right: 40px; /* same as height */
    height: 40px;
    transform: rotate(-90deg);
    transform-origin: 100% 0;
    position: absolute;
    line-height: 40px; /* same as height, for vertical centering */
}
于 2012-08-15T16:59:17.670 回答
16

Ana 的回答非常好,并为我指明了正确的方向,但我意识到您可以实现相同的效果,而无需显式设置要移动的元素的高度、行高和位置 - 相反,只需设置translate(0, -100%)

body {
  margin: 0;
}

#box {
  position: relative;
}

.bg {
	right: 0;
	padding: 1em;
	transform: rotate(-90deg) translate(0, -100%);
	transform-origin: 100% 0;
	position: absolute;
	background: #FF1493;
}
<div id="box">
	<div class="bg">        
		<div class="txt">He's not the Messiah. He's a very naughty boy.</div>
	</div>
</div>

...和一个很好的衡量标准的jsFiddle

于 2016-04-01T12:58:54.300 回答
6

要使用 CSS 将文本旋转 90°,请考虑使用writing-mode.

在父 div 上设置position: relative;,然后在旋转的元素上使用类似的东西:

#rot {
    position: absolute; /* only handy here because its parent is set to `position: relative;` */
    left: 0;
    top: 0px;
    /* writing-mode: sideways-lr;   /* Webkit browsers don't support `sideways-lr` yet */
    writing-mode: vertical-rl;  /* `vertical-rl` and a rotation will achieve the same effect */
    transform: scaleX(-1) scaleY(-1);
    height: 100%;

    background: rgba(0, 0, 0, 0.1);
    text-align: center;
    line-height: 2.85;
    color: white;
    font-weight: bold;
}

您最终会在父 div 的一侧堆叠一个 div,文本呈 90° 角。

这样您就不必考虑旋转原点。

于 2018-05-09T07:50:51.830 回答
0

如果您需要定位包装器 div.并旋转子 div 使其始终垂直和水平居中,请尝试这样的事情!

.togglewrap{
position:relative;
float:left;left:20%;top:0;
width:30px; 
height:120px;
background-color: #ffde21;
}
.sbartoggle {
    background:#f5f5f5;
    position:absolute;
    left:0;
    top:0;
    right:0;
    bottom:0;
    margin:auto;
    width:100%; 
    height:30px;/*equal to parent width*/
    line-height:30px;/*center text*/
    transform: rotate(-90deg);
    background-size:10px 10px;
    }
于 2019-10-24T09:09:10.650 回答