2017-03-22 2 views
0

이것은 스타일 전문가에게 간단해야합니다. 도면에서 Stay-on-top CSS 툴팁

enter image description here

상기 A와 B는 DIV의 이미지이다. A에서 마우스를 가져 가면 툴팁이 표시되지만 B는이를 숨기고 있습니다. 필요한 결과는 툴팁이 B에 의해 가려져서는 안된다는 것입니다. Relevant CSS

.shops 
{ 
    margin-left: 28%; 
    margin-top: 2%; 
    width:auto; 
    height: 13%; 
    padding: 8px; 
    border-radius: 6px; 
    overflow-y: auto; 
    box-shadow: 1px 1px 1px 1px darkgray; 
} 

.sHeader 
{ 
    background-color: white; 
    padding: 2px; 
    color: darkgray; 
    text-align: left; 
    top: 648px; 
    width: auto; 
    left: 30%; 
    position: fixed; 
} 

.resultsDiv 
{ 
    margin-top: 10px; 
} 

.sFront 
{ 
    width: 110px; 
    height: auto; 
    z-index: 1000; 
    position: relative; 
    top: 0; 
    left: 0; 
} 

.logo-container 
{ 
    display: inline-table; 
    perspective: 1000px; 
    width: 110px; 
    height: auto; 
} 

.logo 
{ 
    margin: 1px; 
    float: left; 
    display: table-cell; 
    flex-flow: row wrap; 
    transition: 0.6s; 
} 

.logo_img 
{ 
    display: block; 
    margin:auto; 
    width: 50%; 
} 

.logo .tooltiptext 
{ 
    visibility: hidden; 
    font-size: 12px; 
    width: 245px; 
    height: auto; 
    background-color: black; 
    color: lightgray; 
    text-align: left; 
    border-radius: 6px; 
    padding: 5px; 
    position: absolute; 
    z-index: -1; 
    left: 80%; 

    opacity: 0; 
    transition: opacity 1s; 
} 

.logo .tooltiptext::after { 
    content: ""; 
    position: absolute; 
    top: 35%; 
    right: 100%; 
    margin-top: -15px; 
    border-width: 5px; 
    border-style: solid; 
    border-color: transparent black transparent transparent; 
} 

.logo:hover .tooltiptext 
{ 
    visibility: visible; 
    display: block; 
    opacity: 1; 
} 

function drawCard(array) 
{ 
    var sResultsDiv = document.getElementById('sResults'); 
    sResultsDiv.innerHTML = ""; 

    var html = [""]; 

    $.each(array, function(cardNum, value) 
    { 
    logoID = "logo" + cardNum; 

    logo = array[cardNum].logo; 
    logo = logo.replace("..", "gs"); 
    name = array[cardNum].name; 
    addr = array[cardNum].address; 
    mob = "Mob.: " + array[cardNum].mobile; 
    ll = "Land: " + array[cardNum].landline; 
    tooltiptext = '<b>' + name + '</b><br/>' + addr + '<br/>' + mob + ' | ' + ll; 

    htmlFString = [ '<div class="logo-container">', 
       '<div>', 
       '<div class="logo sFront" id=sf' + cardNum + '>', 
       '<div class="tooltiptext">' + tooltiptext + '</div>', 
         '<img id="' + logoID + '" src="' + logo + '" class="logo_img">', 
         '</div>', 
         '</div>', 
         '</div>' 
        ].join(''); 
    html += htmlFString; 
    }); 

    sResultsDiv.innerHTML = html; 

} // of drawCard(cardData, cardNum) 

Relevant JavaScript/JQuery

<html> 
<head> 
    <titleMy Website</title> 
    <script src="mywebsite.js"></script> 
    <script src="jq_js/jquery-3.1.1.min.js"></script> 
    <link rel="stylesheet" type="text/css" href="bs/bootstrap.min.css"> 
    <link rel="stylesheet" type="text/css" href="css/mywebsite.css"> 
    <link href='//fonts.googleapis.com/css?family=Lobster' rel='stylesheet'> 
    <link href='//fonts.googleapis.com/css?family=Lobster Two' rel='stylesheet'> 
    <script src="bs/js/bootstrap.min.js"></script> 
</head> 
<body onload = "javascript: isShopperLoggedIn();"> 

    <div class="marginate"> 
    <div id ="headerStrip" class = "bkwhite well well-sm"> 
     <img align="middle" src="images/logo_small.jpg" alt="mywebsite"/> 
     : 
     : 
     : 
     <!-- Shops results --> 

     <div class="shops"> 
     <div class="sHeader"> 
      <p id = "srTitle" class="sTitle"></p> 
     </div> 
     <div id="sResults" class="resultsDiv"> 
     </div> 
     </div> 
    </div> 

    </body> 
    </html> 

Relevant HTML

는 SO에 많은 솔루션을 보았다 그러나 아무도 구체적으로이 문제를 해결할 수 없었다. 제안 된 다른 것들 중에서도 overflow: visible (거의 모든 클래스에 있음)을 사용해 보았습니다.

누락 된 부분을 알려주십시오.

미리 감사드립니다.

+0

'z-index'를 높은 수로 설정하십시오. –

+0

Z- 색인을 무언가로 설정하십시오. 1000 – imprezzeb

+0

@RobbyCornelissen, 감사합니다! 위의 유일한 클래스에서 'z-index : 9999'로 변경했습니다. 행운을 빌어 요 ... –

답변

1

일부 HTML을 보지 않고도 문제가 무엇인지 확실하게 말할 수 없습니다.

나는 바이올린 here을 만들었습니다. 툴팁 텍스트에서 나는 left: 80%을 제거하고 margin-left를 대신 사용했습니다. 확률은 HTML 마크 업이 어떻게 보 였는지 CSS에서 추론 할 수 없기 때문에 이것이 작동하지 않습니다. 질문을 업데이트하면 문제를 더 잘 해결할 수 있습니다.

편집 : 죄송합니다. 코드를 살펴본 후에는 요소를 동적으로 만드는 자바 스크립트에서 약간의 실수가 있습니다. img 요소에 닫는 태그가 없으므로 아무 쓸모가없는 div 요소가 추가 된 것처럼 보입니다. 당신이 툴팁 당신이 그것을이 예상대로 작동하지 않는 이유에

주된 이유에

  1. 때문에 당신의 .logo .tooltiptext (101)와 같은 더 큰 무언가에 z-index:-1 변화를 변경하고 left:80% 20 %를 변경
  2. 에서
  3. 당신의 .logo-containerposition:relative
를 제거하여 .sFrontperspective:1000
  • 을 제거

    당신이 그렇게한다면 당신이 의도 한대로 기능 할 것이라고 생각합니다. 다음은 jsfiddle입니다. 도움이 되길 바랍니다!

  • +0

    고마워요! 네가 한 똑같은 변화, 운이 없었나요? 업데이트 된 질문을 검토해보십시오. 거의 모든 CSS 클래스와 함께 노력하고 있습니다. –

    +0

    감사합니다. @nraduka! 부트 스트랩 툴팁으로 전환되었습니다. 귀하의 제안을 사용하기 전에 언젠가는 허용하십시오. –

    +0

    (최근에 추가 된) 부트 스트랩 항목을 벗겨 내고 변경 사항 (일부 사용자 정의 및 관련없는 수정 사항)을 적용했으며 툴팁은 인접한 이미지 위에 표시됩니다. 그것은 모두 작동합니다. 감사합니다. @nraduka! –