css - 如何放大以保持对象的中心到位?
问题描述
我试图让它从中心而不是从左上角放大。我试过了transform: scale(2,2)
,而且transform: translateX(-25%) translateY(-25%)
,按照这里,似乎都没有做任何事情。有什么替代方法scale
吗?它似乎在 Chrome 中不起作用。也许它与它所在的容器有关?我不确定。我尝试更改top
和left
坐标以说明动画播放时中心的移动,但这也无济于事。
.box2 {
position: relative;
width: 40em;
height: 20em;
}
.box2 > .content {
-moz-transition: opacity 1s ease;
-webkit-transition: opacity 1s ease;
-ms-transition: opacity 1s ease;
transition: opacity 1s ease;
opacity: 1.0;
margin: 0;
}
.box2.inactive > .content {
opacity: 0;
}
.circle {
position: absolute;
border-radius: 50%;
background: green;
opacity: 1;
}
.circle.circle1 {
top: 4em;
left: 6em;
width: 5em;
height: 5em;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.circle.circle2 {
top: 10em;
left: 20em;
width: 3em;
height: 3em;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.circle:hover {
width: 10em;
height: 10em;
}
<html>
<div class="box2">
<div class="circle circle1"></div>
</div>
</html>
解决方案
您可以设置transform: translate(-50%, -50%);
-.circle
它相对于其起点向左和向上移动圆,从而将点设置在圆心。
.circle {
position: absolute;
border-radius: 50%;
transform: translate(-50%, -50%);
background: green;
opacity: 1;
}
.circle.circle1 {
top: 8em;
left: 12em;
width: 5em;
height: 5em;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.circle:hover {
width: 10em;
height: 10em;
}
<html><div class="circle circle1"></div></html>
推荐阅读
- java - 如何让会员在安卓应用上互相聊天
- html - 上传照片按钮未打开任何窗口以从中选择文件
- node.js - npm config 并添加更多而不是仅使用 default.json
- python - ModelForm在Django中没有指定模型类错误
- azure - Azure DevOps 服务器无法使用作为订阅参与者的服务主体创建 Azure 资源
- javascript - Chartjs:使用 chartjs-plugin-datalabels 在较小的数据集中重叠数据标签
- python - OSError: [WinError 193] %1 在 python 中不是有效的 Win32 应用程序
- android - 从 searchView onClick 开始 Fragment
- pandas - Dataframe groupby 产生一个组两次
- vue.js - Nuxtjs Axios onRequest() 未针对 asnycData 请求执行