Html 位置相对列表项内的位置绝对div-剪裁问题-ie7
我在IE7中遇到了一个奇怪的问题 我在每个列表项中都有绝对位置div。但绝对div隐藏在IE7中的div中。最后一节似乎还可以 屏幕截图 JSFIDDLE: HTMLHtml 位置相对列表项内的位置绝对div-剪裁问题-ie7,html,css,position,absolute,internet-explorer-7,Html,Css,Position,Absolute,Internet Explorer 7,我在IE7中遇到了一个奇怪的问题 我在每个列表项中都有绝对位置div。但绝对div隐藏在IE7中的div中。最后一节似乎还可以 屏幕截图 JSFIDDLE: HTML <div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div> <
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="container">
<div class="listitem">
<div class="wrapper">
<div class="layer">I'm a layer</div>
</div>
Some long content here bla bla blaaaaaaa baaaaaaaaaaa
</div>
....
</div>
你知道如何在IE7中解决这个问题吗
提前感谢。您可以尝试将溢出添加到类中。列表项:
overflow:visible;
但是,如果希望div与项目精确对齐,请确保列表高度和div高度相等(包括填充)
例如,如果项目高度为40px,则填充设置为10px的div高度必须为20px。取下顶部:10px
.layer {
position:absolute;
top:-1px;
right:10px;
padding:5px;
background:#993300;
border:solid 1px #FFF;
z-index:100;
overflow:visible;
height:20px;
}
在本例中,我将填充设置为5px以保持文本中心垂直。高度设置为20px(2x填充+高度=项目高度)。顶部设置为-1px以处理1px边界
希望能有帮助 这是一个有效的解决方案:(在IE10、FF、Chrome、IE10上使用IE7/IE8/IE9模式进行测试) 解决方案是使用脚本为
listitem
元素提供不同的z-index
。添加包装器元素
如果编辑HTML源代码是一个选项,那么在侧内容周围添加一个包装器元素,并将其放在主文本内容之前。然后将position:relative
添加到包装器元素,而不是将其添加到.listitem
。这会将本地堆栈上下文(在IE7中不方便的时候创建)移动到一个不会造成伤害的元素
HTML
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="listitem"> Some long content here bl a bla blaaaaaaa baaaaaaaaaaa <div class="layer">I'm a layer</div> </div>
<div class="container">
<div class="listitem">
<div class="wrapper">
<div class="layer">I'm a layer</div>
</div>
Some long content here bla bla blaaaaaaa baaaaaaaaaaa
</div>
....
</div>
jQuery
如果编辑HTML源代码不是一个选项,那么使用jQuery有几个选项可用
.listitem
的z索引设置为一个递减的小值)。这种方法的缺点是,它颠倒了侧元素相对于彼此的分层顺序,这可能是可以接受的,也可能是不可以接受的.container
设置为位置:相对,而不是.listitem
。使用jQuery计算.container
中每个.listitem
元素的相对位置,并基于此设置每个边元素的顶部
位置。这种方法的缺点与解决方案2相同
.container {
width:900px;
margin:0 auto;
}
.listitem {
position:relative;
background:#00CC00;
border-bottom:1px solid #FFF;
min-height:30px;
}
.layer {
position:absolute;
top:10px;
right:10px;
padding:10px;
background:#993300;
border:solid 1px #FFF;
z-index:100;
overflow:visible;
}
.listitem {
/* position: relative; */ /* Removed here */
....
}
.wrapper {
position: relative; /* Added here */
height: 0;
}
.listitem {z-index:99;}
.listitem + .listitem {z-index:98;}
.listitem + .listitem + .listitem {z-index:97;}
...
结论
简而言之,当前的HTML不支持IE7中的这种布局。唯一优雅的解决方案是将HTML源代码更改为支持它的代码。任何jQuery解决方案都会以这样或那样的方式变得笨拙。我无法对齐其中的层。里面的内容可能会增加,所以在保持listitem高度不变的情况下,应该可以在外面看到。read@avrahamcool这与我的问题有什么关系?soory。我的意思是错误的链接。@avrahamcool该解决方案对我不起作用。更改HTML源代码是一种选择吗?这种方法的缺点是,相对于其他元素,边元素现在按相反的顺序分层,这可能是可以接受的,也可能是不可以接受的。如果这是他的布局问题,我们总能找到一种类似的方法来解决他的特殊情况。“非常感谢,”马特·考格林说