2011-07-26 3 views
1

절대적으로 위치한 div가 부동 div 뒤에 숨어있는 문제가 있습니다. 나는 이것에 대한 답을 얻기 위해 스택에서 많은 것을 읽었으며, 나는 아무것도 시도하지 않았다. 그래서 여기에 소스 코드를 놓을 것이다. 내가 뭘 놓치고 있는지 모르겠다.IE7에서 절대적으로 위치가 지정된 요소 오류

"찾아보기"텍스트를 클릭하면 몇 가지 옵션에 대해 jquery 메뉴가 열립니다. 옵션은 절대적으로 위치한 div에 있으며, ie7 모드에서 div 아래에 div 콘텐츠가 표시됩니다. 나는이 결과를 얻기 위해 IE7 모드 + IE7 표준에서 IE9를 사용하고 있습니다.

<!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" lang="en-us"> 
    <head> 
     <title>IE7 Absolutely Positioned Element Issue</title> 
     <style type="text/css"> 
      * { font-family: Tahoma; font-size: 8pt; padding: 0; margin: 0; border: 0 none; } 
      div.section { width: 400px; margin: 0 auto; border: 1px solid #444444; margin-top: 5px; } 
      div.toggleBrowseMenu { cursor: pointer; padding-left: 5px; position: relative; } 
      div.browseMenu { border: 1px solid #E2E2E2; position: absolute; width: auto; height: auto; left: -3px; top: 19px; padding: 0px; background-color: #FFFFFF; display: none; text-align: left; z-index: 10; } 
      div.browseMenu ul { list-style-type: none; } 
      div.browseMenu li { background-color: transparent; padding: 3px 7px; margin: 0px; white-space: nowrap; } 
      div.browseMenu li:hover { text-decoration: underline; } 
     </style> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
    </head> 
    <body> 
     <div class="section" style="position: realtive;"> 
      <div style="float: left; padding-left: 100px;"> 
       Left Content 
      </div> 
      <div class="toggleBrowseMenu" style="float: right; padding-right: 100px;"> 
       Browse 
       <div class="browseMenu"> 
        <ul> 
         <a href="http://www.google.com/"><li>Google</li></a> 
         <a href="http://www.yahoo.com/"><li>Yahoo</li></a> 
         <a href="http://www.bing.com/"><li>Bing</li></a> 
        </ul> 
       </div> 
      </div> 
      <div style="clear: both;"></div> 
     </div> 
     <div class="section"> 
      <div style="position: relative;"> 
       <div style="float: left; width: 40%; padding: 5%;"> 
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque at augue at 
        tellus tristique porta. Nulla rhoncus tincidunt turpis, eu mattis dui 
        scelerisque in. Vivamus lectus velit, consectetur at pellentesque dignissim, 
        faucibus id lacus. Aliquam ut eros at erat convallis tincidunt id vel velit. 
        Pellentesque commodo, nulla sed malesuada convallis, ipsum nulla viverra lorem, 
        et mattis sapien nibh nec magna. Donec a nibh ligula. Suspendisse at convallis 
        libero. Phasellus cursus nibh at mi aliquet venenatis. Donec non tortor vitae 
        sapien facilisis imperdiet. Proin molestie tempor dapibus. Suspendisse potenti. 
        Nulla facilisi. Suspendisse risus est, faucibus sit amet laoreet in, cursus ut 
        augue. Cras mollis venenatis est, nec vehicula massa pellentesque et. 
       </div> 
       <div style="float: left; Peach; width: 40%; padding: 5%;"> 
        Fusce adipiscing odio quis massa placerat euismod. In eu eros orci. Aenean 
        mollis luctus velit ac sollicitudin. Cras elit erat, semper quis fringilla ac, 
        placerat sed justo. Duis sed tellus risus, fermentum pellentesque nunc. 
        Phasellus mollis tempus eros, posuere dictum augue gravida at. Praesent 
        sollicitudin justo ac purus iaculis auctor. Suspendisse potenti. Praesent 
        vehicula fermentum sem in ullamcorper. Donec pharetra ante vitae urna pharetra 
        dignissim. Suspendisse tincidunt felis elementum lorem imperdiet ullamcorper. 
        In malesuada, arcu a porta tincidunt, nisl elit pulvinar lacus, in dictum velit 
        odio eget risus. Integer cursus dapibus tortor ut congue. Nunc mattis mollis 
        justo. Aliquam quis tellus tellus, eu sagittis tellus. Class aptent taciti 
        sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. 
       </div> 
       <div style="clear: both;"></div> 
      </div> 
     </div> 
     <script type="text/javascript"> 
      // Toggle the browse menu. 
      $('.toggleBrowseMenu').click(function() 
      { 
       $(this).find('.browseMenu').toggle(); 
      }); 

      // Hide the browse menu when the mouse leaves the tag. 
      $('.browseMenu').mouseleave(function() 
      { 
       $(this).hide(); 
      }); 
     </script> 
    </body> 
</html> 
+0

확실이'

  • Google
  • 's의의/B 형 '은
  • Google
  • ' –

    +0

    영향을주지 않습니다. – Halcyon

    답변

    1

    괜찮 았어! 여기에 우리가 가진 것이있다.

    <!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" lang="en-us"> 
    <head> 
        <title>IE7 Absolutely Positioned Element Issue</title> 
        <style type="text/css"> 
         * { font-family: Tahoma; font-size: 8pt; padding: 0; margin: 0; border: 0 none; z-index:1;} 
         /* z-index to 1 for everything*/ 
         div.section { width: 400px; margin: 0 auto; border: 1px solid #444444; margin-top: 5px; } 
         div.toggleBrowseMenu { cursor: pointer; padding-left: 5px; position: relative;} 
         div.browseMenu { border: 1px solid #E2E2E2; position: absolute; width: auto; height: auto; left: -3px; top: 19px; padding: 0px; background-color: #FFFFFF; display: none; text-align: left; z-index: 10; } 
         /*set z-index to 10 here! */ 
         div.browseMenu ul { list-style-type: none; } 
         div.browseMenu li { background-color: green; padding: 3px 7px; margin: 0px; white-space: nowrap; } 
         div.browseMenu li:hover { text-decoration: underline; } 
        </style> 
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
    </head> 
    <body> 
        <div class="section"> <!-- you didn't this to be relatively positioned --> 
         <div style="float: left; padding-left: 100px;"> 
          Left Content 
         </div> 
         <div class="toggleBrowseMenu" style="float: right; padding-right: 100px;"> 
          Browse 
          <div class="browseMenu"> 
           <ul> 
            <a href="http://www.google.com/"><li>Google</li></a> 
            <a href="http://www.yahoo.com/"><li>Yahoo</li></a> 
            <a href="http://www.bing.com/"><li>Bing</li></a> 
           </ul> 
          </div> 
         </div> 
         <div style="clear: both;"></div> 
        </div> 
        <div class="section"><!-- removed wrapping div with relative positioning here--> 
         <div style="float: left; width: 40%; padding: 5%;"> 
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque at augue at 
          tellus tristique porta. Nulla rhoncus tincidunt turpis, eu mattis dui 
          scelerisque in. Vivamus lectus velit, consectetur at pellentesque dignissim, 
          faucibus id lacus. Aliquam ut eros at erat convallis tincidunt id vel velit. 
          Pellentesque commodo, nulla sed malesuada convallis, ipsum nulla viverra lorem, 
          et mattis sapien nibh nec magna. Donec a nibh ligula. Suspendisse at convallis 
          libero. Phasellus cursus nibh at mi aliquet venenatis. Donec non tortor vitae 
          sapien facilisis imperdiet. Proin molestie tempor dapibus. Suspendisse potenti. 
          Nulla facilisi. Suspendisse risus est, faucibus sit amet laoreet in, cursus ut 
          augue. Cras mollis venenatis est, nec vehicula massa pellentesque et. 
         </div> 
         <div style="background-color:red; float: left; width: 40%; padding: 5%;"> 
          Fusce adipiscing odio quis massa placerat euismod. In eu eros orci. Aenean 
          mollis luctus velit ac sollicitudin. Cras elit erat, semper quis fringilla ac, 
          placerat sed justo. Duis sed tellus risus, fermentum pellentesque nunc. 
          Phasellus mollis tempus eros, posuere dictum augue gravida at. Praesent 
          sollicitudin justo ac purus iaculis auctor. Suspendisse potenti. Praesent 
          vehicula fermentum sem in ullamcorper. Donec pharetra ante vitae urna pharetra 
          dignissim. Suspendisse tincidunt felis elementum lorem imperdiet ullamcorper. 
          In malesuada, arcu a porta tincidunt, nisl elit pulvinar lacus, in dictum velit 
          odio eget risus. Integer cursus dapibus tortor ut congue. Nunc mattis mollis 
          justo. Aliquam quis tellus tellus, eu sagittis tellus. Class aptent taciti 
          sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. 
         </div> 
         <div style="clear: both;"></div> 
        </div> 
        <script type="text/javascript"> 
         // Toggle the browse menu. 
         $('.toggleBrowseMenu').click(function() 
         { 
          $('.browseMenu').toggle(); 
         }); 
    
         // Hide the browse menu when the mouse leaves the tag. 
         $('.browseMenu').mouseleave(function() 
         { 
          $(this).hide(); 
         }); 
        </script> 
    </body> 
    </html> 
    

    나는 단지 IE7 테스터가 아닌 실제 IE7을 사용하고 있기 때문에 지금이 솔루션에 저를 인용하지 않지만, 보통 날 위해 작동합니다. 현재 오른쪽 영역의 배경색을 빨간색으로 변경했습니다. 너는 그것을 고칠 수있다.

    잘못된 점은 스타일을 지정하기 위해 콘텐츠가 포함 된 섹션 클래스를 "position : relative"로 묶는 여분의 div가 있다는 것입니다. div는 이름이 없으므로 스타일 시트로 참조 할 수 없으므로 삭제했습니다. 또한, 첫 번째 섹션 div 클래스에서 필자는 상대방의 철자가 틀렸기 때문에 필자는 그것을 필요 없기 때문에 완전히 제거했다. 모든 항목 z- 색인을 처음에 1로 설정하고 .browsemenu 클래스의 z- 색인을 10으로 올렸습니다. 또한 "Fusce adipi ...."가 시작되는 단락에서 복숭아라는 단어가 무작위로 포함 된 div 배치가 시작됩니다. 스타일 참조.

    모든 수정 사항에 대한 의견을 남겼습니다. 행운을 빈다. 나는 이것이 도움이되기를 바란다. 목록 항목 태그에서 앵커 태그를 제거

    +0

    이제 작동 중입니다. 나는 상단과 하단에 z- 인덱스를 적용했으며, 상단의 섹션은 하단보다 z- 인덱스가 높았습니다. 도와 주셔서 감사합니다! – Halcyon

    +0

    문제 없습니다. IE7은 사기꾼입니다. – SomeShinyObject

    1

    왜 콘텐츠 위에 메뉴가 나타나야하는지 모르겠습니다. z-index은 형제에게만 적용됩니다. 맨 위 섹션에 z-index을 추가 할 수 있으며 relative의 철자를 올바르게 입력하면 메뉴가 원하는대로 나타납니다.

    +0

    상단에 더 높은 z- 인덱스를 추가하고 상대적으로 배치 된 하단 div를 적용하는 것은 내가해야 할 일이었습니다. – Halcyon

    관련 문제