2013-10-07 1 views
3

Я хочу добавить значок справа от названия поля. Что-то вроде этого:Добавление значка рядом с заголовком легенды и отображением подсказки

Когда вы наводите курсор на значок, должна отображаться всплывающая подсказка. Вот где у меня проблемы. По какой-то причине значок подбрасывается под заголовком (см. Снимок экрана).

enter image description here

Не только это, но из-за моей CSS, то FIELDSET граница вокруг моей подсказке дел. Я хочу, чтобы граница fieldset оставалась прежней, и подсказка всплывала над границей.

Я пробовал играть с div и CSS, чтобы получить желаемый эффект, но ничего не работает для меня.

Таким образом, я хотел бы, чтобы значок отображался справа от названия поля и не располагал границую строку вокруг всплывающей подсказки. Скорее, я хочу, чтобы всплывающая подсказка зависала над границей fieldset.

UPDATE: Если JS - единственный способ выполнить это, то я хотел бы вставить содержимое div в другом месте страницы и относительно расположить div справа от значка. Другими словами, независимо от того, где значок находится на странице, я хочу, чтобы div всегда отображался справа от него.

Живой пример:http://jsfiddle.net/Akyym/3/

HTML:

<fieldset class="GridFacet" > 

<legend>Title 

    <div class="tooltipContainer"> 
    <a class="tooltipIcon" href=""> 
     <img src="/Content/themes/images/info-small-black-13px.png"/> 
    </a> 

     <div class="tooltip"> 
      <strong>A</strong> - CONTENT<br/> 
      <strong>B</strong> - CONTENT<br/> 
      <strong>C</strong> - CONTENT<br/> 
      <strong>D</strong> - CONTENT<br/> 
      <strong>E</strong> - CONTENT<br/> 
     </div> 
    </div> 

</legend> 

     <p class="chkRow"> 
      <input id="H10" type="checkbox" class="chkFacet" value="h10" /> 
      <label for="H10" class="lblFacet"> 
       A</label> 
     </p> 
     <p class="chkRow"> 
      <input id="T3" type="checkbox" class="chkFacet" value="t3" /> 
      <label for="T3" class="lblFacet"> 
       B</label> 
     </p> 
      <p class="chkRow"> 
      <input id="U1" type="checkbox" class="chkFacet" value="u1" /> 
      <label for="U1" class="lblFacet"> 
       C</label> 
     </p> 
      <p class="chkRow"> 
      <input id="U2" type="checkbox" class="chkFacet" value="u2" /> 
      <label for="U2" class="lblFacet"> 
       D</label> 
     </p> 
      <p class="chkRow"> 
      <input id="U3" type="checkbox" class="chkFacet" value="u3" /> 
      <label for="U3" class="lblFacet"> 
       E</label> 
     </p> 
</fieldset> 

CSS:

.GridFacet { 
    width: 50px; 
} 

.tooltipContainer { 
    width: 325px; 
    position: relative; 
} 

.tooltipIcon { 
    text-decoration: none; 
} 

    a.tooltipIcon:hover + div { 
     display:block; 
     float: right; 
    } 

.tooltip { 
    margin: -43px 0 5px 50px; 
    *margin: -12px 0 5px 15px; /* For IE7 and below */ 
    padding: 10px 0 10px 10px; 
    width: 250px; 
    height: 110px; 
    background-color: #e9ebec; 
    position: absolute; 
    border: 2px solid #739e40; 
    display: none; 
    font-size: 1.2em; 
} 

.tooltip:after, .tooltip:before { 
    border: solid transparent; 
    content:' '; 
    height: 0; 
    right: 100%; 
    position: absolute; 
    width: 0; 
} 

.tooltip:after { 
    border-width: 11px; 
    border-right-color: #e9ebec; 
    top: 13px; 
} 

.tooltip:before { 
    border-width: 14px; 
    border-right-color: #739e40; 
    top: 10px; 
} 
+0

Вы против использования JS для отображения всплывающей подсказки? Основная проблема заключается в том, что div 'tooltipcontainer' находится в' легенде', который технически принимает только «фразинг-контент», а не содержимое макета, как у вас: https://developer.mozilla.org/en-US/docs/Web/HTML/ Content_categories? Redirectlocale = en-US & redirectslug = HTML% 2FContent_categories # Phrasing_content. Если вы в порядке с JS, вы можете удалить этот блок и переместить всплывающую подсказку где-то в другом месте и отобразить его с использованием JS и абсолютного позиционирования вместо этого, и это не сработает. В противном случае вам придется использовать один из поддерживаемых элементов, перечисленных выше. – DigTheDoug

+0

@DigTheDoug Нет, я не знаю. Если у вас есть решение JS, тогда все в порядке. – Keven

+0

На самом деле, сделав еще один взгляд, вы все равно сможете сделать это так, как у вас есть, но просто измените div на что-то, поддерживаемое как промежуток, я отправлю скрипку в мгновение ока. – DigTheDoug

ответ

3

Я предполагаю, что главной проблемой является tooltipcontainerdiv в пределах legend технически принимает только «содержание фразировки», который не включает в себя div: MDN

Но если вы измените ваш tooltipcontainerdiv к span элемента, он должен работать нормально:

<legend>Title <span class="tooltipContainer"> 
    <a class="tooltipIcon" href=""> 
     <img src="/Content/themes/images/info-small-black-13px.png"/> 
    </a> 
     <div class="tooltip"> 
      <strong>A</strong> - CONTENT<br/> 
      <strong>B</strong> - CONTENT<br/> 
      <strong>C</strong> - CONTENT<br/> 
      <strong>D</strong> - CONTENT<br/> 
      <strong>E</strong> - CONTENT<br/> 
     </div> 
    </span> 
</legend> 

Here's a fiddle.

+0

Это исправляет мою проблему. Однако я беспокоюсь о проблемах с ним. Как вы думаете, JS будет более «приемлемым» подходом? – Keven

+0

FYI- Этот подход также работает только в Chrome. Я тестировал в IE и в FF, и я мерцаю, когда курсирует над значком. – Keven

+0

Лично мне нравится настраиваемость и удобство приятной JS-библиотеки, но я также понимаю негативный прогноз некоторых людей, особенно если вы представляете его специально и только для чего-то подобного. Однако, поскольку 99% из моих проектов уже используют jQuery и обычно какую-то другую библиотеку стилей, такую ​​как Bootstrap.js, добавление чего-то вроде всплывающей подсказки действительно тривиально, и я думаю, что это выглядит намного приятнее. – DigTheDoug

 Смежные вопросы

  • Нет связанных вопросов^_^