Flexbox证明内容与变换比例无法正常工作

时间:2017-03-25 19:13:23

标签: css css3 flexbox css-transforms

我有一个常规无序的项目列表,其中justify-content: space-between.first_item已应用于该项目(因此,.list触及.last_item的左边缘和{{1触及.list)的右边缘:

<ul class='list'>
    <li class='first_item'>Item</li>
    <li class='middle_item'>Item</li>
    <li class='last_item'>Item</li>
</ul>

但是,如果我使用transform: scale(0.5)缩小项目,那么这两个位置现在有一个空格,就好像justify-content: space-between是&#34;不知道&#34;物品已减少。

这是不对的:即使缩小物品,第一个和最后一个物品仍应触及容器的左右边缘。

发生了什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

使用transform缩小元素后,它会自动在其框中居中。

这是因为transform-origin属性的初始值为50%, 50%(即水平和垂直居中)。

结果,这些项目偏离了容器的边缘。

&#13;
&#13;
.list {
  display: flex;
  justify-content: space-between;
  border: 1px dashed black;
  padding: 0;
  list-style: none;
}

li {
  transform: scale(0.5);
  border: 1px solid red;
}
&#13;
<ul class='list'>
  <li class='first_item'>Item</li>
  <li class='middle_item'>Item</li>
  <li class='last_item'>Item</li>
</ul>
&#13;
&#13;
&#13;

您可以使用left上的righttransform-origin来调整已转换元素的位置。

&#13;
&#13;
.list {
  display: flex;
  justify-content: space-between;
  border: 1px dashed black;
  padding: 0;
  list-style: none;
}

.first_item {
  transform: scale(0.5);
  transform-origin: left;
}

.last_item {
  transform: scale(0.5);
  transform-origin: right;
}

li {
  transform: scale(0.5);
  border: 1px solid red;
}
&#13;
<ul class='list'>
  <li class='first_item'>Item</li>
  <li class='middle_item'>Item</li>
  <li class='last_item'>Item</li>
</ul>
&#13;
&#13;
&#13;

规范中的更多详细信息:https://drafts.csswg.org/css-transforms/#transform-origin-property