如何定位:在元素之后达到目标元素高度的50%

时间:2016-01-07 11:45:29

标签: javascript css

如何将/api/api_endpoint_x/?time_start=2015-11-20 11:22:15.160983+00:00 元素定位到父元素高度的50%?

我无法通过js访问:after动态更改,这将是一个简单的计算。

元素是:afterdiv的相对绝对位置应该具有div高度的50%的最高值。

3 个答案:

答案 0 :(得分:2)

试试这个:

div {
  height: 200px;
  width: 200px;
  background-color: blue;
  display: table;
}
div:after {
  content: "Hello";
  display: table-cell;
  vertical-align: middle;
}
<div></div>

答案 1 :(得分:1)

您的要求不明确,但一般来说,如果您使用的是绝对定位,那么定位只是百分比问题。这也适用于伪元素的维度。

&#13;
&#13;
div {
  width: 150px;
  height: 150px;
  position: relative;
  margin: 1em auto;
  background: grey;
}
div::after {
  content: 'Hello';
  position: absolute;
  top: 50%;
  left: 0;
  background: #c0ffee;
  height: 50%;
  transform: translateY(-50%); /* vertical center */
  width: 50%;
  text-align: center;
  line-height: 75px;
}
&#13;
<div></div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

如果您的伪元素绝对定位,那么简单地设置top: 50%应该可以将伪元素的上边缘放在父元素的中间。

否则,如果您需要完全垂直中间对齐,则将其转换回50%:

div::after {
    content: "...";
    position: absolute;
    top: 50%; left: 0;
    transform: translateY(-50%);
}

这将首先将伪元素的顶部定位在其元素的中间,然后将其向上平移(在Y坐标中)为其自身高度的一半。

小提琴:https://jsfiddle.net/abhitalks/mmxxwt6f/

<强>段:

div {
	position: relative;
	height: 200px; width: 200px;
	background-color: #66a;
}
div::after {
	content: "Middle";
	position: absolute;
	top: 50%; left: 0;
	transform: translateY(-50%);
}
<div></div>