Подсказка отображается слишком далеко справа от исходного текста

#html #css

#HTML #CSS

Вопрос:

Я попытался создать подсказку внутри ячейки таблицы, чтобы показывать слишком длинный текст при наведении курсора мыши; Я использовал стиль css text-overflow: ellipsis; , чтобы скрыть переполнение длинного текста внутри ячейки таблицы.

Тогда проблема в том, что моя подсказка для длинного текста была слишком далека от исходного текста, даже если я думал, что уже скрыл переполнение текста и вырезал некоторые из них в стиле css.

Вот что я сделал:

 table {  width: 40%;  table-layout: fixed; }  th {  text-align: left; }  td:first-child {  text-align: center; }  td.td-name p.name {  text-overflow: ellipsis;  overflow: hidden;  width: 100%;  white-space: nowrap; }  [data-tooltip]::after {  position: absolute;  /*width: 140px;*/  /*left: calc(50% - 70px);*/  /*bottom: 90%;*/  text-align: center;  box-sizing: border-box;  content: attr(data-tooltip);  background: rgba(0, 0, 0, 0.5);  padding: 8px;  border-radius: 10px;  font-size: 0.9em;  font-weight: bold;  z-index: 200;  color: #fff;  visibility: hidden;  opacity: 0;  transform: translate(-20px, 20px);  transition: all .3s ease-in-out; }  td.td-name:hover [data-tooltip]::after {  opacity: 1;  visibility: visible; } 
 lt;table border="1"gt;  lt;thead style=""gt;  lt;trgt;  lt;th style="width: 5%;"gt;Previewlt;/thgt;  lt;th style="width: 15%;"gt;Namelt;/thgt;  lt;th style="width: 5%;"gt;Sizelt;/thgt;  lt;/trgt;  lt;/theadgt;  lt;tbodygt;  lt;trgt;  lt;td style="width: 50%;"gt;  lt;img src="https://picsum.photos/40" alt=""gt;  lt;/tdgt;  lt;td class="td-name" style="width: 15%;"gt;  lt;p data-tooltip="document-attachment-20211130-41110PM.zip"gt;document-attachment-20211130-41110PM.ziplt;/pgt;  lt;/tdgt;  lt;td style="width: 5%;"gt;  lt;p class="size"gt;  lt;stronggt;28.5 KBlt;/stronggt;  lt;/pgt;  lt;/tdgt;  lt;/trgt;  lt;trgt;  lt;td style="width: 50%;"gt;  lt;img src="https://picsum.photos/40" alt=""gt;  lt;/tdgt;  lt;td class="td-name" style="width: 15%;"gt;  lt;p class="name" data-tooltip="upload-to-cloud-form-design-for-mobile-web-application-upload-to-cloud-form-design-for-mobile-web-application.zip"gt;upload-to-cloud-form-design-for-mobile-web-application-upload-to-cloud-form-design-for-mobile-web-application.ziplt;/pgt;  lt;/tdgt;  lt;td style="width: 5%;"gt;  lt;p class="size"gt;  lt;stronggt;28.5 KBlt;/stronggt;  lt;/pgt;  lt;/tdgt;  lt;/trgt;  lt;/tbodygt; lt;/tablegt; 

Я попытался изменить левое положение всплывающей подсказки, а также установить относительное положение к абзацу самой подсказки, но это не помогло. Большое спасибо.

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

1. В safari я не вижу вашей пользовательской всплывающей подсказки для обрезанного текста. Браузер отображает всплывающую подсказку html, как если бы вы установили title="upload-to-cloud-form-design-for-mobile-web-application-upload-to-cloud-form-design-for-mobile-web-application.zip" вместо этого. Я немного погуглил, и это, похоже, проблема исключительно для safari. Я понимаю, почему появляется всплывающая подсказка, сгенерированная браузером, но кто-нибудь знает, должна ли она переопределять и отменять эффект наведения?

Ответ №1:

Если вы добавите display:flex в свой [data-tooltip]::after , то это должно решить проблему. Оттуда вы можете точно настроить его местоположение.

 table {  width: 40%;  table-layout: fixed; }  th {  text-align: left; }  td:first-child {  text-align: center; }  td.td-name p.name {  text-overflow: ellipsis;  overflow: hidden;  width: 100%;  white-space: nowrap; }  [data-tooltip]::after {  position: absolute;  display: flex;  /*width: 140px;*/  /*left: calc(50% - 70px);*/  /*bottom: 90%;*/  text-align: center;  box-sizing: border-box;  content: attr(data-tooltip);  background: rgba(0, 0, 0, 0.5);  padding: 8px;  border-radius: 10px;  font-size: 0.9em;  font-weight: bold;  z-index: 200;  color: #fff;  visibility: hidden;  opacity: 0;  transform: translate(-20px, 20px);  transition: all .3s ease-in-out; }  td.td-name:hover [data-tooltip]::after {  opacity: 1;  visibility: visible; } 
 lt;table border="1"gt;  lt;thead style=""gt;  lt;trgt;  lt;th style="width: 5%;"gt;Previewlt;/thgt;  lt;th style="width: 15%;"gt;Namelt;/thgt;  lt;th style="width: 5%;"gt;Sizelt;/thgt;  lt;/trgt;  lt;/theadgt;  lt;tbodygt;  lt;trgt;  lt;td style="width: 50%;"gt;  lt;img src="https://picsum.photos/40" alt=""gt;  lt;/tdgt;  lt;td class="td-name" style="width: 15%;"gt;  lt;p data-tooltip="document-attachment-20211130-41110PM.zip"gt;document-attachment-20211130-41110PM.ziplt;/pgt;  lt;/tdgt;  lt;td style="width: 5%;"gt;  lt;p class="size"gt;  lt;stronggt;28.5 KBlt;/stronggt;  lt;/pgt;  lt;/tdgt;  lt;/trgt;  lt;trgt;  lt;td style="width: 50%;"gt;  lt;img src="https://picsum.photos/40" alt=""gt;  lt;/tdgt;  lt;td class="td-name" style="width: 15%;"gt;  lt;p class="name" data-tooltip="upload-to-cloud-form-design-for-mobile-web-application-upload-to-cloud-form-design-for-mobile-web-application.zip"gt;upload-to-cloud-form-design-for-mobile-web-application-upload-to-cloud-form-design-for-mobile-web-application.ziplt;/pgt;  lt;/tdgt;  lt;td style="width: 5%;"gt;  lt;p class="size"gt;  lt;stronggt;28.5 KBlt;/stronggt;  lt;/pgt;  lt;/tdgt;  lt;/trgt;  lt;/tbodygt; lt;/tablegt; 

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

1. большое спасибо, теперь все работает хорошо.