[英]I want a toggling div elemenet, to overlap the underlaying content with z-index. How can I achieve this?
我在方框内有一个简短的介绍性文字,如果用户想进一步阅读,他可以切换一个隐藏的div元素,以显示其余内容。 在此介绍框下,我还有一些其他元素,我一直希望保持在该位置。 我希望切换后的文本“显示在固定内容的上方”,并且我不希望在切换后的div打开时将其向下推。 我尝试了各种z-index值,绝对和相对位置,但无济于事。 是否有基于CSS的干净解决方案? 请帮忙! 这是我正在尝试做的演示:
> <!DOCTYPE html PUBLIC "-//W3C//DTD
> XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html
> xmlns="http://www.w3.org/1999/xhtml"
> xml:lang="en"> <head> <style
> type="text/css"> .container{width:
> 400px;
> height: 500px;
> border: 1px dashed #999;
> } div.container{padding:0; margin:0} #morecontent{
> z-index: 100
> } #morecontent,.introcontent{background: #DFFAFF;} div#fixedcontent{background:
> #FFDFDF;
> z-index: -1;
> position: absolute;
> width: 400px
> } </style> <title>Toggle overlap - test</title> </head> <body>
> <div class="container"> <div id="">
> <script type="text/javascript">
> function toggle(obj){
> var el=document.getElementById('morecontent');
> if (el.style.display !='none'){
> el.style.display='none';
> }
> else {el.style.display='';
> }
> }
> </script>
> <p class="introcontent">Lorem ipsum dolor sit amet, consectetur
> adipiscing elit. Aenean in pede congue
> ipsum sollicitudin pellentesque. Nunc
> t tortor dolor, sagittis nec, placerat
> vel, commodo sed, nunc. Vivamus
> bibendum molestie orci. Duis nec leo
> at libero fermentum molestie. Nam eu
> risus.<br />
> There's more if you press toggle...
>
> </p>
> <a href="JavaScript: toggle(this)">Toggle</a>
> <div id="morecontent" style="display:none;">
> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean in
> pede congue ipsum sollicitudin
> pellentesque. Nunc t tortor dolor,
> sagittis nec, placerat vel, commodo
> sed, nunc. Vivamus bibendum molestie
> orci. Duis nec leo at libero fermentum
> molestie. Nam eu risus.
> </p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
> Aenean in pede congue ipsum
> sollicitudin pellentesque. Nunc
> t tortor dolor, sagittis nec, placerat
> vel, commodo sed, nunc. Vivamus
> bibendum molestie orci. Duis nec leo
> at libero fermentum molestie. Nam eu
> risus.
> </p>
> </div>
>
> <div id="fixedcontent">
> <p>This should stay 'under' the toggled content!</p>
> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean in
> pede congue ipsum sollicitudin
> pellentesque. Nunc t tortor dolor,
> sagittis nec, placerat vel, commodo
> sed, nunc. Vivamus bibendum molestie
> orci. Duis nec leo at libero fermentum
> molestie. Nam eu risus.
> </p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
> Aenean in pede congue ipsum
> sollicitudin pellentesque. Nunc
> t tortor dolor, sagittis nec, placerat
> vel, commodo sed, nunc. Vivamus
> bibendum molestie orci. Duis nec leo
> at libero fermentum molestie. Nam eu
> risus.
> </p>
> </div> </div> </div> </body> </html>
我过去做过的事情:
将您的内容分成两个部分。 显示一个跨度,另一个跨度隐藏。 当用户想要查看其余内容时,请显示其他跨度以及其他文本。
我使用JQuery toggle()命令使其更容易实现。
我没有看到移动z-index比通过更改div上的display属性显示/隐藏内容更好/更有效。 您是否出于某些原因一直想要页面上的所有内容?
我猜您只在使用IE进行测试。 Firefox没有此问题。
这是IE中的已知错误,即z-index错误
如果没有其他方法,z-index是否是迫使元素位于另一个元素之上的唯一方法?
有一个使用javascript http://mahzeh.org/?p=23的“通用”解决方案
但是最好的方法是重新排列元素,以使可扩展元素位于下面的框上方的位置。 尝试将其插入要覆盖HTML的框之后,然后使用绝对定位在视觉上将其定位。
尝试:
#container { position: relative; }
#more { position: absolute; display: none; background-color: White;}
<div id="container">
Lorum <a href="#">click for more</a>
<div id="more">
Lorum
</div>
<div id="under">
Underneath text
</div>
</div>
在事件“ click for more
”上,将#more
设置为display: block;
在这种情况下,由于在文档树中#more
在#under
之前#under
隐含z-index,因此z-index较高
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.