css:绝对位置不';你不喜欢右和底的价值吗?

css:绝对位置不';你不喜欢右和底的价值吗?,css,position,positioning,css-position,absolutelayout,Css,Position,Positioning,Css Position,Absolutelayout,我想绝对定位iframe并定义其左、上、右、下偏移: #x { position: fixed; left: 10px; top: 10px; right: 10px; bottom: 10px; width: auto; height: auto; border: 2px solid #aaa; z-index: 100002; background: #abc; display:none }​ 我发现左

我想绝对定位iframe并定义其左、上、右、下偏移:

#x {
    position: fixed;
    left: 10px;
    top: 10px;
    right: 10px;
    bottom: 10px;
    width: auto;
    height: auto;
    border: 2px solid #aaa;
    z-index: 100002;
    background: #abc;
    display:none
}​
我发现左侧和顶部值受到尊重,而右侧和底部值被忽略。如果没有设置左值和顶值,则正确处理右值和底值。检查这把小提琴:

有什么想法吗


注意我不想设置元素的宽度和高度,因为我希望它相对于视口,也不想将宽度和高度设置为百分比,我只想保持边界偏移为固定值,比如“10px”这里。

您可以通过javascript和设置iframe大小后找到容器大小。

您可以通过javascript和设置iframe大小后找到容器大小。

不确定原因,但是,经过一番尝试后,iframe似乎出于某种原因不喜欢这种定位方式

我可以做的一个解决方案是将它封装在一个div中,并将div设置为您想要的大小/位置


此外,尽管是500x500px,但正文背景色将继续填充页面中的所有空间,但div的大小仍然正确。(调整主体的大小以查看它…

不确定原因,但是,经过一段时间的尝试后,iFrame似乎出于某种原因不喜欢这种定位方式

我可以做的一个解决方案是将它封装在一个div中,并将div设置为您想要的大小/位置

此外,尽管是500x500px,但正文背景色将继续填充页面中的所有空间,但div的大小仍然正确。(调整主体大小以检出它…

不能同时设置“左”和“右”或“上”和“下”属性编辑:事实证明,只要你是绝对定位的,你就可以做到这一点,正如我刚刚从这篇文章中学到的:(所有提示都归功于@thirdender!)。不过,iFrame的行为似乎有所不同

您可以通过以下方式实现您的目标:

请注意,不需要绝对定位。我还使用了css3属性框大小调整。您必须添加特定于浏览器的前缀,如下所述

请注意,此解决方案在旧浏览器中不起作用,最终将使用滚动条。如果你想让它与浏览器完全兼容,我想你必须求助于一些js,但是你会遇到与禁用此功能的人的问题。你也可以尝试两者的结合。这完全取决于您的受众以及您如何找到它。

您不能同时设置left和right属性,也不能同时设置top和bottom属性编辑:事实证明,只要你是绝对定位的,你就可以做到这一点,正如我刚刚从这篇文章中学到的:(所有提示都归功于@thirdender!)。不过,iFrame的行为似乎有所不同

您可以通过以下方式实现您的目标:

请注意,不需要绝对定位。我还使用了css3属性框大小调整。您必须添加特定于浏览器的前缀,如下所述


请注意,此解决方案在旧浏览器中不起作用,最终将使用滚动条。如果你想让它与浏览器完全兼容,我想你必须求助于一些js,但是你会遇到与禁用此功能的人的问题。你也可以尝试两者的结合。这一切都取决于你的受众以及你如何找到它……

我在这里找到了这个页面,它解释了一些解决方案,这些解决方案也与只使用CSS的旧IE浏览器兼容。否则,可能需要进行一些JavaScript计算。

我在这里找到了这个页面,它解释了一些解决方案,这些解决方案也与只使用CSS的旧IE浏览器兼容。否则可能需要一些JavaScript计算。

奇怪的是,它不能同时设置左、右、上、下,如果我将“上、左、右、下”设置为“0”,一切都可以。但我喜欢你的答案。CSS规范的一部分是,你可以在绝对位置的元素上同时设置所有四个
顶部
右侧
底部
、和
左侧
属性,只要你不指定固定的宽度或高度。图元的宽度或高度将自动计算。此外,该技术非常可靠,适用于IE7以后的所有浏览器。瞧,@thirden,这对我来说是新鲜事。你的小提琴给我留下了深刻的印象,尽管你把我和你正在使用的非标准css混淆了一点(看起来和我不太习惯的css相似,我想这不会真正影响结果)。你能从原来的问题中更新提琴以达到预期的结果吗?我很好奇,也很想学习…@PeterVR,是的,jsFiddle可以让你使用而不是CSS。我试着用
IFRAME
做同样的把戏,但显然当
width:auto时,它们的行为与
DIV
SPAN
元素不同被使用。它们的行为更像
TABLE
元素,需要特定的宽度,否则它们将根据内容的宽度进行调整(参见此)。我必须把一个额外的
DIV
放在我想要的位置,然后将
IFRAME
放在
DIV
内,设置为
width:100%;身高:100%@第三,你应该将此作为答案发布!你的比我的要好得多(我自己不太喜欢盒子大小),我们应该停止关心-IE7。你会得到我的选票!将更正我的答案和thx的教训和有趣的阅读!奇怪的是,它不能同时设置左、右、上、下,如果我将上、左、右、下设置为“0”,一切都可以。但我喜欢你的答案。CSS规范的一部分是,你可以在绝对位置的元素上同时设置所有四个
顶部
右侧
底部
、和
左侧
属性,只要你不指定固定的宽度或高度。元素的宽度或高度是自动计算的