Блог Дмитрия Волотко Подпишись на обновления!

Решение проблемы с длинными заголовками.

Вы наверняка не раз видели, что в колонке, к примеру, с названиями последних топиков на форуме порой происходят неприятные метаморфозы. Выглядит это примерно так (с вашего позволения немного симулирую :)).

  • Проблемы с новым компью…
  • Почему не работает float:le…
  • Как решиться жениться за…

Неопрятно, правда? Есть куча решений, но мне в голову пришло ещё одно (может не только мне?).

Сначала посмотрите реализацию моей идеи. Посмотреть можно нажав сюда.

Теперь выясняем что нам нужно из инструментов:

  1. переменная, к примеру, $nametopic[2];
  2. png’шка (она расположена тут);
  3. средство человеческой обработки PNG для IE5-6 (я использую CSS – expression);
  4. код, который вы увидите ниже;

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

Это простая схема того, как я решил эту задачу. Ниже код.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” >
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<title>absolvo.ru</title>
</style>
<style type=”text/css”>
body {
background:#fff;
}
h2 {
background:#fff;
font:18px verdana, serif;
margin:0;
position: relative;
overflow: hidden;
width: 200px;
white-space:nowrap;
}
div {
background:#fff;
font:18px verdana, serif;

}
h2 span {
position: absolute;
left:100px;
width: 100px;
height: 20px;
background: url(http://absolvo.ru/tmp/1/bg.png);
background-position: right;
background-repeat: no-repeat;

}
.png { filter:expression(PNG(this)) }
</style>
<!– Для любимых IE5-6 –>
<script language=”javascript” src=”png.js”></script>

</head>

<body>
<h2 title=”<?php echo $nametopic[2]; ?>”><span class=”png”></span><?php echo $nametopic[2]; ?></h2>
<div><?php echo $nametopic[2]; ?></div>
</body>
</html>

Мне видится это хорошим решением.

Так же можно почитать:



# 24 March 2008 в 15:13

Corbis

Ваше решение не работает в осле шестом.

# 24 March 2008 в 15:14

Corbis

Хотя нет. Беру слова обратно.
На локале не работает.)

# 24 March 2008 в 15:17

Волотко Дмитрий

2_Corbis
png.js на локалку возьмите – думаю будет и на локали работать.

# 25 March 2008 в 21:10

Волотко Дмитрий

Немного исправил код:
left:100px;
width: 100px;

Вместо:
width: 100%;

# 27 March 2008 в 16:11

Mordraug

Это не решение, а скорее украшение проблемы, чтобы в глаза не бросалось слишком. Красиво, не спорю, но решением было бы при выводе обрезать заголовок не по количеству символов а по концу слова, в котором количество символов привысило лимит.

# 22 May 2009 в 11:28

mihdan

Насколько мне известно данное решение используется в гугле уже давным-давно



* Должны быть заполнены.
Из-за дикого спама, и нежелания ставить капчу оставлять ссылку у комментария вообще нельзя. Точно так же нельзя оставлять ссылки в теле комментария.