Проблема ширины на самом деле проистекает из ширины, заданной здесь на верхнем уровне:
ul#menu > li {
display: block;
float: left;
background: url(img/menuitem.png) top left;
width: 104px; /* here's the issue */
height: 36px;
margin-right: 1px;
text-align: center;
position: relative; /* add this */
}
Поскольку для него задано width
, а его дочерний элемент находится в нормальном потоке, его дочерний элемент подчиняется его ширина, а не масштабирование само по себе.Что вы можете сделать, это вывести ребенка из потока, добавив position: realtive;
, как у меня в вышеприведенном стиле, а затем дать ребенку <ul>
a position: absolute
, например:
ul#menu > li ul {
position: absolute;
top: 36px; /* top <li> is 36px, go down that much */
}
Затем, наконец, чтобы якорный текст получил полный фон, задайте ему правило white-space
, например:
ul#menu > li > a, ul#menu > li > ul a {
display: block;
text-decoration: none;
white-space: nowrap;
}
Вот как выглядит результат: alt text http://img189.imageshack.us/img189/3817/menuye.jpg