rotate设置后position的操作

在网上看见有人需要做一个功能,将竖着接收的图片,旋转-90度或者270度,使图片与包裹它的div重合。大概意思是要将黄色部分旋转后与蓝色部分重合。
在这里插入图片描述

初始样式:

<!DOCTYPE html>
<html>
<head>
<style>
.one{
    margin:40px;
    width:200px;
    height:100px;
    background-color:blue;
}
.two{
    width:100px;
    height:200px;
    background-color:yellow;
}
</style>
</head>
<body>
<div class="one">
    <div class="two">Hello World</div>
</div>
</body>
</html>

第一反应可能会是这么写:

.one{
	position:relative;
    margin:30px;
    width:200px;
    height:100px;
    background-color:blue;
    z-index:1;
}
.two{
    width:100px;
    height:200px;
    background-color:yellow;
    transform:rotate(-90deg);
    position:absolute;
    top:0px;
    left:0px;
    z-index:99;
}

但是结果是这样:
在这里插入图片描述
要使黄色部分和蓝色部分重合。此时需要将黄色部分旋转,但是旋转之后并不能使黄色部分和蓝色重合,原因是黄色部分的宽高和蓝色部分相反,而又是相对定位,所以看上一图,黄色中心点的坐标相对蓝色为(50,0),所以当它旋转后中心点还是(50,0)。此时再设置绝对定位top:0;left:0;还是不能重合,原因是这个定位是作用于没有旋转之前的元素,而没有旋转之前的元素的左上角顶点是与蓝色元素左上角顶点重合的。

所以我们需要在旋转前移动黄色元素的中心点,让黄色元素的中心与蓝色元素中心重合。

如图,我们需要将黄色中心点移至蓝色中心点重合。得出公式(x,-y)=(X-Y)/2。这里(x,-y)代表黄色(子级)绝对定位的left和top值,(X-Y)代表蓝色(父级)的宽高。
在这里插入图片描述
最终样式:

.one{
	position:relative;
    margin:30px;
    width:200px;
    height:100px;
    background-color:blue;
    z-index:1;
}
.two{
	width:100px;
	height:200px;
	background-color:yellow;
	transform:rotate(-90deg);
	position:absolute;
	top:-50px;
	left:50px;
	z-index:99;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现类似微信聊天气泡操作框弹出的效果,可以使用uniapp提供的弹窗组件 `uni-popup` 和 `uni-icons`。 以下是一个示例代码: ```html <template> <view> <button @click="showPopup">显示气泡</button> <uni-popup v-model="show" position="bottom" :style="{height: popupHeight + 'px'}"> <view class="popup-container"> <view class="popup-arrow"></view> <view class="popup-content"> <text>复制</text> <uni-icons type="copy" size="20"></uni-icons> </view> <view class="popup-content"> <text>删除</text> <uni-icons type="trash"></uni-icons> </view> <view class="popup-content"> <text>转发</text> <uni-icons type="share"></uni-icons> </view> </view> </uni-popup> </view> </template> <script> export default { data() { return { show: false, popupHeight: 120 }; }, methods: { showPopup() { this.show = true; } } }; </script> <style> .popup-container { background-color: #fff; border-radius: 10px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); padding: 10px; } .popup-arrow { position: absolute; top: -10px; left: 50%; transform: translateX(-50%); width: 20px; height: 20px; background-color: #fff; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); transform: rotate(45deg); } .popup-content { display: flex; align-items: center; padding: 10px; } .popup-content uni-icons { margin-left: 10px; } </style> ``` 在上面的示例中,我们使用 `uni-popup` 组件实现了气泡的弹出效果。通过设置 `position="bottom"`,可以让气泡从底部弹出。我们还设置了一个 `style` 属性,用来指定气泡的高度。 在气泡的容器中,我们使用了 `uni-icons` 组件来显示图标。通过设置不同的 `type` 属性,可以显示不同的图标。 在样式中,我们设置了气泡容器的样式,以及气泡箭头的样式。通过设置 `transform: rotate(45deg)`,可以让箭头旋转45度,使其看起来像一个气泡的箭头。 你可以根据自己的需求,调整气泡的样式和内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值