【发布时间】:2015-04-03 14:36:10
【问题描述】:
现在我完全糊涂了。 我创建了一个嵌套在父 div 中的小箭头(带有 css),该 div 隐藏了溢出的想法,在鼠标悬停时将箭头移到其父级上。 父元素水平居中,并且出于(某些其他)充分的理由,它具有绝对定位。
html:
<div id ="arrowContainer">
<div id="arrow" class="arrow_left"></div>
</div>
CSS:
#arrowContainer {
position: absolute;
height: 54px;
width: 13px;
bottom: 4.2%;
left: 50%;
margin-left: -9px;
overflow: hidden;
cursor: pointer;
}
.arrow_left {
position: absolute;
width: 0;
height: 0;
padding: 0;
top: 10px;
right: -4px;
border-top: 13px solid transparent;
border-bottom: 13px solid transparent;
border-right: 13px solid #fff;
opacity: 0.72;
}
结果:
好的。现在我希望父级的鼠标悬停区域向两侧延伸一点。我想,好吧,使用一些填充。所以我改变了父母的CSS:
#arrowContainer {
position: absolute;
height: 54px;
width: 13px;
bottom: 4.2%;
left: 50%;
margin-left: -32px;
padding: 0 24px;
overflow: hidden;
cursor: pointer;
}
这导致了我更意想不到的结果:
1) 不仅我必须在新的 margin-left 值中遇到填充,而且还可以,并不难做到。
2) 但是为什么我的孩子有 right: -4px 值相对于填充的右侧而不是其父级的可见区域(蓝色)?
好的。我知道我可以使用另一个容器来解决这个问题。但是这个我不要!必须有一个常规的方法来解决这个问题,只需要 2 个 div。 我的错误是什么?非常感谢!
【问题讨论】:
-
尝试
right:20px定位箭头。 -
#arrowContainer { 填充:0 24px; },这将您的箭头向右推,尝试使用边距。一个 JSFiddle 在这里会很好。
-
尝试删除
right:-4pxjsfiddle.net/yggc3tfn -
谢谢大家!我看到填充物将 cild 推到了右边。我的问题是:为什么?我一直认为 right 是指 div 的右边框而不是它的填充边缘。不能这样使用时,填充有什么意义?
-
padding 也被认为是
width和height例如如果你设置一个div的宽度并添加padding到宽度会增加
标签: css position parent-child padding