我正在尝试制作一个90deg
价格标签,但是我不确定为什么它没有按照我的意愿去做,我希望该标签与顶部和右侧(顶部:0:右:0)。
不是那样做的, 代码
<div class='box'>
<div class='price-tag'>
$23.12
</div>
</div>
.box{
margin:10em;
height:100px;
width:100px;
position:relative;
background:red;
}
.box .price-tag{
background:yellow;
position:absolute;
top:0;
right:0;
display:inline-block;
transform:rotate(90deg) translate(50%, 0%);
}
答案 0 :(得分:2)
另一种方法是通过调整writing-mode
.box {
height: 100px;
width: 100px;
position: relative;
background: red;
}
.box .price-tag {
background: yellow;
position: absolute;
top: 0;
right: 0;
writing-mode: vertical-rl; /* tb-rl if you want old browser support*/
}
<div class='box'>
<div class='price-tag'>
$23.12
</div>
</div>
答案 1 :(得分:1)
将任何元素旋转90度时,您需要的是:
transform: rotate(90deg) translate(calc(50% - (height/ 2)), calc(50% - (width/ 2)))
或更具体的情况:
transform: rotate(90deg) translate(calc(50% - (18px / 2)), calc(50% - (44px / 2)))
这是因为旋转时,您希望水平轴和垂直轴上的translate
偏离50%
,以便将其定位到以前的位置。但是,这只会将角落放置在先前位置。
要纠正此问题,您还需要从新的水平偏移量中减去height
的一半,并从{{1}中减去一半 },然后使用 calc()
函数。
这可以在以下方法中看到:
width
.box {
/*margin: 10em;*/ /* -- Removed for demo fiddle */
height: 100px;
width: 100px;
position: relative;
background: red;
}
.box .price-tag {
background: yellow;
position: absolute;
top: 0;
right: 0;
display: inline-block;
transform: rotate(90deg) translate(calc(50% - (18px / 2)), calc(50% - (44px / 2)))
}
答案 2 :(得分:1)
问题出在您的transform-origin
上,您需要将其设置为top right
.box {
margin: 10em;
height: 100px;
width: 100px;
position: relative;
background: red;
}
.box .price-tag {
background: yellow;
position: absolute;
top: 0;
right: 0;
display: inline-block;
transform-origin: top right;
transform: rotate(90deg) translateX(100%);
}
<div class='box'>
<div class='price-tag'>
$23.12
</div>
</div>