Этот вопрос ни в коем случае не является ужасным, но это проблема, с которой я столкнулся, и задавался вопросом, как некоторые из экспертов SO ее решат - если есть решение.
У меня есть виджет с фиксированной шириной, который отображает информацию о файле. Я предоставляю возможность редактировать имя файла, нажимая на него и указывая, что у меня есть стиль :hover
, применяемый для изменения цвета шрифта. Первоначально я помещал имя файла в DIV
, но поскольку разные имена файлов различаются по длине, я не могу поместить DIV
в имя файла и сохранить эффект :hover
в тексте. При коротких именах файлов эффект :hover
сохраняется, когда курсор находится над пустой частью DIV
. Это было не то, что я хотел, так как решение я поместил имя файла в SPAN
(наряду с эффектом :hover
). Это решило проблему для коротких имен файлов, но не позволило длинным именам файлов изящно переполняться эллипсом.
В идеале я бы хотел, чтобы решение, которое обеспечивает оба эффекта - эллипс длинных имен файлов и применяет эффект :hover
только при зависании над фактическим текстом. Я все еще довольно новичок в css, поэтому, возможно, я просто не вижу очевидного ответа. Спасибо!
Вот пример страницы, на которой показаны проблемы:
(и на jsfiddle)
Edit: Я решил, что могу выполнить некоторую магию javascript, чтобы закрепить более длинные имена, но надеялся на более простое решение css.
<html>
<head>
<style>
div {
margin:10px;
width:200px;
max-width:200px;
font-size:1.2em;
overflow:hidden;
text-overflow:ellipsis;
}
div.a:hover, span:hover {
color:666;
cursor:pointer;
}
span {
display:inline-block;
}
</style>
</head>
<body>
<!-- This works well for long filenames -->
<div class="a">
ThisIsMyReallyReallyLongFilename.txt
</div>
<!-- ... but fails for the short names -->
<div class="a">
Shortname.txt
</div>
<!-- This fails to show ellipse for long filenames -->
<div>
<span>ThisIsMyReallyReallyLongFilename.txt</span>
</div>
<!-- ... but wraps the text nicely for short names -->
<div>
<span>Shortname.txt</span>
</div>
</body>
</html>