我在将a<div id='divTwo'>
集中到另一个<div id='divOne'>
中时遇到问题。这是正常的,很容易做到,但是在这个例子中,我已经在'divTwo'上应用了transform: scale();
#divOne {
top: 0px;
left: 0px;
width: 100%;
height: 100%;
}
#divTwo {
width: 1024px;
height: 768px;
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
border-left: 131px solid #333333;
border-right: 131px solid #333333;
border-top: 47.5px solid #333333;
border-bottom: 47.5px solid #333333;
border-radius: 55px;
}
如果应用于变换的比例大于outerWidth(),则“divTwo”的居中没有问题。但是,当“divTwo”被缩放并且窗口小于或等于outerWidth()时。div将不再居中,而是将其中心点放在浏览器的右侧,从而导致“divTwo”的一半离开浏览器的右侧。将
transform-origin: 50% 50% 0px;
更改为transform-origin: 50% 50% 0px;
只要不垂直缩放即可,反之亦然。jsfiddle示例:https://jsfiddle.net/yvyz49zp/
谢谢您。我觉得我错过了一些显而易见的东西。
最佳答案
我在jsfiddle中很快就解决了这个问题——不需要javascript。在你得到你喜欢的东西之前,你只需要玩弄这些价值观。
代码:
body {
background: lightblue;
}
#container {
display: inline-block;
position: absolute;
width: 50%;
right: 50%;
top: 50%;
transform: translate(50%, -50%);
}
#dummy {
margin-top: 75%; /* Using the dummy is the trick - it locks the aspect ratio (at 4:3 in this case) */
}
#device {
position: absolute;
top: 10%;
bottom: 10%;
left: 0;
right: 0;
background-color: #333;
border-radius: 10%;
}
#screen {
position: absolute;
width: 70%;
height: 80%;
background: #0f0;
right: 50%;
top: 50%;
transform: translate(50%, -50%);
}
<div id="container">
<div id="dummy"></div>
<div id="device">
<div id="screen"></div>
</div>
</div>