Всплывающая подсказка на значке svg не будет отображаться

#html #css

#HTML #css

Вопрос:

Пытаюсь добавить всплывающую подсказку, используемую в этом руководстве, к значку информации. Это codepen. Когда я добавляю соответствующие классы в svg, всплывающая подсказка не отображается. Как я могу использовать эту же всплывающую подсказку на значке svg info вместо этого? Спасибо.

 body {
  background-color: beige;
}

.tooltip {
  position: relative;
  display: inline-block;
  /*   border-bottom: 1px dotted black; */
}

.tooltip .tooltiptext {
  visibility: hidden;
  width: 120px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 5px 0;
  position: absolute;
  z-index: 1;
  bottom: 125%;
  left: 50%;
  margin-left: -60px;
  opacity: 0;
  transition: opacity 0.3s;
}

.tooltip .tooltiptext::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: #555 transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
  visibility: visible;
  opacity: 1;
}  
 <div>
  <form>
    <label for="phone">Phone</label>
    <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-info-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
      <path d="M8.93 6.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588z"/>
      <circle cx="8" cy="4.5" r="1"/>
    </svg>
    <div>
      <input type='tel' pattern="d{11}|d{3}-d{3}-d{4}" id="phone">
    </div>
    <input type="submit">
  </form>
</div>
<div class="tooltip">Hover over me
  <span class="tooltiptext">Tooltip text</span>
</div>  

Ответ №1:

Вам, очевидно Hover over me , нужно заменить значок SVG… Что вы пробовали, если не это?

 body {
  background-color: beige;
  padding-top: 30px;
}

.tooltip {
  position: relative;
  display: inline-block;
  /*   border-bottom: 1px dotted black; */
}

.tooltip .tooltiptext {
  visibility: hidden;
  width: 120px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 5px 0;
  position: absolute;
  z-index: 1;
  bottom: 125%;
  left: 50%;
  margin-left: -60px;
  opacity: 0;
  transition: opacity 0.3s;
}

.tooltip .tooltiptext::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: #555 transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
  visibility: visible;
  opacity: 1;
}  
 <div>
  <form>
    <label for="phone">Phone</label>
    <div class="tooltip">
      <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-info-circle" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
      <path d="M8.93 6.588l-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246-.275 0-.375-.193-.304-.533L8.93 6.588z"/>
      <circle cx="8" cy="4.5" r="1"/>
    </svg>
      <span class="tooltiptext">Tooltip text</span>
    </div>
    <div>
      <input type='tel' pattern="d{11}|d{3}-d{3}-d{4}" id="phone">
    </div>
    <input type="submit">
  </form>
</div>  

Комментарии:

1. Я помещал класс всплывающей подсказки внутри элемента svg. Вы заключили svg в div и применили класс к этому div. Это сработало. Спасибо.