将元素的Y轴移动50%会将其下移自身高度的50%,而不是像我所期望的那样基于父元素的高度移动50%。我如何告诉一个正在移动的元素以父元素为基础计算其百分比偏移量?还是说我没有理解正确?
将元素的Y轴移动50%会将其下移自身高度的50%,而不是像我所期望的那样基于父元素的高度移动50%。我如何告诉一个正在移动的元素以父元素为基础计算其百分比偏移量?还是说我没有理解正确?
https://codepen.io/trusktr/pen/gOdwWXv
svg, [outer] {
border: 1px solid black;
}
rect {
transform: translate3d(50%, 50%, 0);
}
[inner] {
background: black;
transform: translate3d(50%, 50%, 0);
}
<svg width="100" height="80">
<rect width="20" height="20" />
</svg>
<div outer style="width: 100px; height: 80px;">
<div inner style="width: 20px; height: 20px;"></div>
</div>
transform: translate(50%)
似乎使用了父元素的宽度和高度。 - Atav32您可以使用vw和vh根据视口大小进行转换
@keyframes bubbleup {
0% {
transform: translateY(100vh);
}
100% {
transform: translateY(0vh);
}
}
对我有效的,只使用纯 CSS的方法是:
.child {
position: relative;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
/* Backward compatibility */
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
}
工作原理:
要在translate属性中使用百分比,您需要使用JavaScript:http://jsfiddle.net/4wqEm/27/
HTML代码:
<div id="parent">
<div id="children"></div>
</div>
CSS 代码:
#parent {
width: 200px;
height: 200px;
background: #ff0;
}
#children {
width: 10%;
height: 10%;
background: #f00;
}
Javascript 代码:
parent = document.getElementById('parent');
children = document.getElementById('children');
parent_height = parent.clientHeight;
children_translate = parent_height * 50/100;
children.style.webkitTransform = "translateY("+children_translate+"px)";
我希望我能帮助您,如果您有其他问题,请告诉我。
.parent { container-type: size }
/* shift child down by 50% of parent height */
.child { transform: translateY(50cqh) }
body {
margin: 0;
width: 100%;
height: 100%;
}
body > div {
width: 200px;
height: 200px;
background: #ff0;
position: relative;
}
body > div > div {
width: 10%;
height: 10%;
-webkit-transform: translateY(-50%);
background: #f00;
position: absolute;
top: 50%;
}
<div id="parent">
<div id="childrenWrapper">
<div id="children"></div>
</div>
</div>
CSS应该像这样:
#parent {
position: relative;
width: 200px;
height: 200px;
background: #ff0;
}
#childrenWrapper{
width: 100%;
height: 100%;
}
#children {
width: 10%;
height: 10%;
background: #f00;
}
这是一个与定位相关的分支,需要在以下URL上进行定位: 工作样例
body {
margin: 0;
width: 100%;
height: 100%;
}
body>div {
position: relative;
width: 200px;
height: 200px;
background: #ff0;
}
body>div>div {
position: absolute;
left: 50%;
top: 50%;
width: 10%;
height: 10%;
background: #f00;
transform: translate(-50%, -50%);
}
注意:
body {
margin: 0;
width: 100%;
height: 100%;
}
body > div {
width: 200px;
height: 200px;
background: #ff0;
position: relative;
}
body > div > div {
position: absolute;
top: 50%;
width: 10%;
height: 10%;
/* -webkit-transform: translateY(50%); */
background: #f00;
}