- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 container
,里面有两个元素,el
和一个绝对定位的元素 pp
。 el
与 container
共享相同的宽度和高度,并且它们的宽度可以动态更改。
pp
应该以 el
和 container
为中心。我在 pp
div 的中间有一个红色标记来标记它的中心。
container
和 el
的宽度为 30px,以居中 pp
我使用的 translateX(-50%)
。根据我的理解,这应该使 pp
居中到 el
。但实际结果并非如此。 -50% 将 div 向左移动一点。调整 -43% 时,红色标记居中。但是这个 -43% 不适用于另一个宽度不同的 el
div。
如何始终使用 translateX
将 pp
容器置于任意大小的另一个 div 中。
.container {
width: 30px;
margin: 0 auto;
}
.el {
width: 30px;
height: 30px;
background-color: pink;
border-radius: 100%;
}
.pp {
position: absolute;
max-width: 300px;
background-color: yellow;
}
.pp1 {
transform: translateX(-50%);
}
.pp2 {
transform: translateX(-43%);
}
Not centered when translateX is -50%
<br />
<br />
<div class="container">
<div class="el">
elem
</div>
<div class="pp pp1">
<div style="width:10px; height: 10px; margin: 0 auto; background-color: red;"></div>
popoverasdasd asjdjasd sdfsdfsdfsdf
</div>
</div>
<br />
<br />
<br />
<br />
Expected result comes when translateX is -43%
<br />
<br />
<div class="container">
<div class="el">
elem
</div>
<div class="pp pp2">
<div style="width:10px; height: 10px; margin: 0 auto; background-color: red;"></div>
popoverasdasd asjdjasd sdfsdfsdfsdf
</div>
</div>
fiddle :https://jsfiddle.net/v6o5z8a0/
最佳答案
所以我稍微更改了代码以查看它在做什么。
评论是正确的,你必须做一个left: 50%
和一个transform: translateX(-50%);
。
left:50%
会将内部元素的左侧移动到父元素的中间。而 transform: translateX(-50%);
会将内部元素向后移动其宽度的 50%。这将使对象在父对象中居中。
您的示例中的部分问题是:
position: relative
。.el
和 .pp
规则中的 left: 50%
。.container {
height: 80px;
outline: 1px dashed red;
position: relative;
}
.el {
background-color: pink;
border-radius: 100%;
height: 30px;
left: 50%;
outline: 1px dashed blue;
position: absolute;
transform: translateX(-50%);
width: 30px;
}
.pp {
bottom: 0;
position: absolute;
left: 50%;
max-width: 300px;
background-color: yellow;
}
.pp1 {
transform: translateX(-50%);
}
.pp2 {
transform: translateX(-43%);
}
Not centered when translateX is -50%
<br />
<br />
<div class="container">
<div class="el">
elem
</div>
<div class="pp pp1">
<div style="width:10px; height: 10px; margin: 0 auto; background-color: red;"></div>
popoverasdasd asjdjasd sdfsdfsdfsdf
</div>
</div>
<br />
<br />
<br />
<br />
Expected result comes when translateX is -43%
<br />
<br />
<div class="container">
<div class="el">
elem
</div>
<div class="pp pp2">
<div style="width:10px; height: 10px; margin: 0 auto; background-color: red;"></div>
popoverasdasd asjdjasd sdfsdfsdfsdf
</div>
</div>
关于html - 使用 translateX(-50%) 将位置绝对元素居中不会使 div 居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48563179/
我正在使用 css 属性 translateX 将 Sprite 围绕某个点旋转 360 度。 Sprite 按预期围绕该点旋转,但我想知道如何在 Sprite 旋转时获得“左”和“顶”值。使用 tr
我制作了一个无限幻灯片,看起来像猫头鹰旋转木马“中心”(https://owlcarousel2.github.io/OwlCarousel2/demos/center.html)。 我的问题是,当第
我用 CSS transform-translateX 编写了一个测试。动画有效,但对象不保持最终位置,返回到原始位置。 如何保持最终位置? 这里是 CSS: @-webkit-keyframes m
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-top
我正在尝试使用更多的 css 和更少的 Javascript 来制作动画。我遇到了动画三个不同盒子的问题。我通过添加 fadeShow 类使不透明度为 1,使框以不透明度淡入淡出。但是,我希望框看起来
我正在尝试构建一个照片 slider 。现在我不介意我做这件事的方式是否那么好。我想知道的是,为什么在我通过 jQuery 更改 TranslateX 值并将其打印到控制台后,它不会打印更改后的值?
我正在尝试为移动 webkit 创建一个图片库, 它实际上足够快的唯一方法是使用硬件加速的 translateX 。 我的问题是 div 在动画结束时收回了它的初始位置。我在左侧按钮上添加了 slid
body{ height: 100vh; display: flex; justify-content: center; align-items: center; } div {
$(document).ready(function() { var $window = $(window), $overlay = $('.example2'), rotatio
问题是,translateX 在动画之前没有改变它的位置。在示例中有问题的幻灯片是 #slide2,我在设置动画之前更改它的位置,但它仍然从错误的一侧设置动画。 如何解决该行为?使用 css left
TranslateX(-50%) 而不是将元素(.heading)放在中心,而是将它放在最左边 .heading { position: relative; top: 50%; left: 50%;
在我一直致力于开发的网站 (www.koa-de.nl) 上,我使用了以下代码来使导航栏居中: left: 50%; transform: translateX(-50%); 我使用它是因为 marg
我正在尝试将一组跨度元素(使用 ng-repeat 创建)推送到 x 轴上的某个计算位置。 这是在指令中完成的,其中每个元素的位置是根据一些启发式计算的。 但是,这些元素并未居中,而是左对齐。当存在需
我希望这个问题不要太具体,这样它就可以与其他问题相关... 我有两个元素,一个子元素和一个父元素,子元素使用 CSS 动画围绕父元素旋转。 月亮动画设置为使月亮在同一位置加载到行星顶部,但使用
我会获得如下效果:我可以通过 translateX 更改的全屏部分(从左到右)。 不幸的是,我第一次尝试移动整个包装器而不是它的内容: https://codepen.io/anon/pen/WPzB
我遇到了 translateX 属性的问题。 我希望导航菜单隐藏在右侧,当用户点击菜单图标时,导航 translateX 从右到左轻松过渡,当然导航菜单会在点击前隐藏。它以某种方式不起作用,这是代码:
这个问题在这里已经有了答案: Transform: translate(-50%, -50%) (2 个答案) How to apply multiple transforms in CSS? (
我正在尝试制作不同的类以进行对齐。 我希望能够像 class="left bottom" 使用 transform:translate 属性那样组合它。 问题是该属性正在被彼此覆盖。 如果您查看我的
我正在尝试在单击菜单项时为屏幕上的多个元素设置动画...除一个以外的所有动画都按需要工作。我想从右向左移动页面的主要内容(部分),而不是在其中滑动,只是出现而没有任何过渡。这是相关的 CSS 代码:
我想向右进行 5px 的短 translateX 过渡。我想我的显示器有问题。所有其他过渡都有效,只有这个无效... 这是我的代码: #content a.shake { display: inl
我是一名优秀的程序员,十分优秀!