Эффективное отображение подсказок HTML (повторное использование подсказок)

Вы не можете передать strcmp() в качестве функции сравнения для bsearch(). Эта функция должна принимать указатели на сравниваемые элементы (в этом случае указатель на указатель на строку, хотя фактический тип аргументов функций должен быть const void *), тогда как strcmp() ожидает указатель на строку , Существует дополнительный слой косвенности, который он не обрабатывает.

Вы не показываете эту функцию, но возможно использовать функцию cstring_cmp(), которую вы используете с qsort().

Первым аргументом функции сравнения bsearch() является указатель, указанный как ключ, второй аргумент - указатель на текущий элемент сравниваемого массива, где с функцией сравнения qsort() оба аргумента являются указателями на элементы. Поэтому, если вы сделаете ключевой аргумент bsearch() указателем на то, что вы ищете, оба будут работать с одной и той же функцией. Другими словами, bsearch(&key, ...) хорош, bsearch(key, ...) - нет. Вы также можете использовать функцию сравнения bsearch(), которая будет работать с этим вторым случаем. См. https://stackoverflow.com/a/15824981/9952196 для примера.

0
задан Brice 31 January 2019 в 21:23
поделиться

1 ответ

Вот довольно быстрое и грязное решение с использованием только CSS.

*[data-tooltip] {
  text-decoration: underline dashed;
  position: relative;
}

*[data-tooltip]:hover:before {
  background: #333;
  border-radius: 4px;
  color: #ccc;
  content: attr(data-tooltip);
  padding: 2px 4px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 4px);
}

*[data-tooltip]:hover:after {
  background: #333;
  content: '';
  width: 6px;
  height: 6px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 1px);
  left: 8px;
  transform: rotate(45deg);
}
foo <span data-tooltip="This field represents what foo needs">bar</span> baz

Если ваш текст всплывающей подсказки известен, вы даже можете избавиться от атрибута data-tooltip, и запекать его в свойство content в CSS:

.tooltip {
  text-decoration: underline dashed;
  position: relative;
}

.tooltip:hover:before {
  background: #333;
  border-radius: 4px;
  color: #ccc;
  padding: 2px 4px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 4px);
}

.tooltip:hover:after {
  background: #333;
  content: '';
  width: 6px;
  height: 6px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 1px);
  left: 8px;
  transform: rotate(45deg);
}

.tooltip.tt-bar:hover:before {
  content: 'This field represents what foo needs';
}
foo <span class="field tooltip tt-bar">bar</span> baz

0
ответ дан p.s.w.g 31 January 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: