我无法弄清楚如何旋转元素以使其位于另一个元素下面。下图应说明预期结果。
这是我到目前为止所尝试的内容:
.div1 {
height: 120px;
width: 120px;
float: left;
margin: 20px;
border: solid 1px #000;
overflow: hidden;
}
.div1 button {
width: 48px;
height: 48px;
border: 0;
margin: 0;
padding: 0;
}
.div2 {
background-color: #999;
height: 48px;
line-height: 48px;
box-sizing: border-box;
}
.originFromLeft .div2 {
transform: rotate(90deg);
transform-origin: 24px 24px;
padding-left: 12px;
text-align: left;
}
.div1.originFromRight {
overflow: visible;
}
.originFromRight .div2 {
padding-right: 12px;
text-align: right;
transform: rotate(-90deg);
transform-origin: right top;
}
<div class="div1">
<button>></button>
<div class="div2">HELLO</div>
</div>
<div class="div1 originFromLeft">
<button>></button>
<div class="div2">HELLO</div>
</div>
<div class="div1 originFromRight">
<button>></button>
<div class="div2">HELLO</div>
</div>
第二个例子基本上做了我想要的但是文本的定向方向错误。
我能得到的最接近的是示例3,但我需要将其拉回到左侧。我已经尝试了translate
,但是我无法让它发挥作用,我尝试了100%的负权margin
几乎可以工作,但基本上没有。
答案 0 :(得分:2)
实现预期输出的一种方法是执行以下操作:
button
放在div2
内并将其放在右边缘。div2
放在父容器的底部。div2
(-90deg),变换原点位于左下角。div2
将完全移出容器,因此我们需要在转换堆栈中添加额外的translateY(100%)
。padding-right
(大于按钮的宽度),以使文本远离按钮。div2
的孩子并且为了对抗(即使按钮文本正确显示),我们需要应用反转。现在,在这种方法中,唯一的缺点是,如果文本长度增加超过单行中的值,那么它将环绕到下一行(看看片段中的第二个样本)。
.div1 {
position: relative;
height: 120px;
width: 120px;
float: left;
margin: 20px;
border: solid 1px #000;
overflow: hidden;
}
button {
position: absolute;
display: inline-block;
bottom: 0;
right: 0;
width: 48px;
height: 48px;
border: 0;
margin: 0;
padding: 0;
transform: rotate(90deg);
}
.div2 {
position: absolute;
box-sizing: border-box;
bottom: 0px;
height: 48px;
width: 100%;
padding-right: 60px;
line-height: 48px;
background-color: #999;
text-align: right;
transform: rotate(-90deg) translateY(100%);
transform-origin: left bottom;
}
<div class="div1">
<div class="div2">HELLO
<button>></button>
</div>
</div>
<div class="div1">
<div class="div2">HELLO WORLD!!!!!
<button>></button>
</div>
</div>
答案 1 :(得分:2)
我已经采取了你的第二个例子并反过来旋转元素。 然后用额外的translateX
修复位置
.div1 {
height: 120px;
width: 120px;
float: left;
margin: 20px;
border: solid 1px #000;
overflow: hidden;
}
.div1 button {
width: 48px;
height: 48px;
border: 0;
margin: 0;
padding: 0;
}
.div2 {
background-color: #999;
height: 48px;
line-height: 48px;
box-sizing: border-box;
}
.originFromLeft .div2 {
transform: rotate(-90deg) translateX(-100%);
transform-origin: top left;
padding-left: 12px;
text-align: right;
}
&#13;
<div class="div1 originFromLeft">
<button>></button>
<div class="div2">HELLO</div>
</div>
&#13;