Содержимое Div не отображается

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

У меня есть меню, в котором при определенных обстоятельствах некоторые элементы отображают маленькую красную рамку (например, количество друзей в Facebook).

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

Это простой div, подобный этому:

 <div id="request-count" class="noticount"></div>
  

CSS выглядит так:

 .noticount {
    background: none repeat scroll 0 0 #E43C03;
    color: #FFFFFF;
    font-size: 0.6em;
    font-weight: bold;
    position: absolute;
    top: 3px;
    left: 3px;
    text-align: center;
}
  

Я проверил страницу sounce, и мой javascript правильно устанавливает значение, поэтому div в конечном итоге выглядит так:

 <div id="request-count" class="noticount">1</div>
  

Единственный способ, которым я могу заставить это действительно отображаться, — это вручную взломать live CSS и установить ширину и высоту, после чего он отображается без проблем.

Действительно странным является то, что содержимое «1» также никогда не отображается в div. Очень смущен этим и действительно не знаю, что попробовать.

Не уверен, является ли это значительным или странным для FireBug, но иногда этот div появляется в представлении кода слегка непараметрическим, что обычно указывает на то, что элемент display:none , который я тоже не получаю.

Что я могу попытаться решить?

Редактировать

Вот скрипка, отображающая проблему:

http://jsfiddle.net/UYa5Z/

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

1. Можете ли вы воспроизвести это в скрипке?

2. итак, когда вы проверяете его, 1 отображается или не отображается в div?

3. Где ваш jQuery?

4. работает here:jsfiddle.net/NRZ3J

5. .noticount является абсолютно позиционированным, поэтому он будет находиться в левом верхнем углу окна браузера, если только он не находится внутри какого-либо блока, содержащего предка, который не расположен статически. Нам действительно нужно увидеть немного больше HTML / CSS, чтобы оценить проблему.

Ответ №1:

Не уверен в точной причине, но похоже, что форматирование вашего размера шрифта работает не так, как предполагалось. В примере, который вы связали, если вы просто измените font-size noticount класс с em based на px based, это, похоже, решит проблему.

 .noticount {
    background: none repeat scroll 0 0 #E43C03;
    color: #FFFFFF;
    font-size: 10px; /* this instead of font-size: 0.6em */
    font-weight: bold;
    position: absolute;
    top: 3px;
    left: 3px;
    text-align: center;
}
  

JSFiddle

Редактировать:

Основываясь на моем втором комментарии ниже, я исследовал проблему дальше. Как показывает этот JSFiddle, вы можете сохранить .noticount ‘s font-size relative, если удалите font-size: 0; из обоих ul#moomenu и ul#moomenu li . Я не уверен, какова цель их установки 0 , но, учитывая, что вы используете px (вместо em ) on ul#moomenu a , и ul#moomenu ul a я бы предложил использовать мое первое предложенное исправление, поскольку оно согласуется с другими размерами шрифтов, которые вы устанавливаете в своем css.

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

1. Хороший! Это только усилило путаницу, но действительно устраняет проблему.

2. @Jammer, я полностью согласен… Я дам вам знать, если смогу найти какие-либо исследования или выяснить, почему существует эта проблема.

3. Должно быть, происходит какое-то сумасшедшее странное взаимодействие.

4. вы пробовали использовать rem вместо em ?

5. @AndrewKoroluk, раньше нет. Но, возвращаясь к исходному JSFiddle от @Jammer, это также устраняет проблему. Основываясь на этой статье, это наводит меня на мысль, что Niet the Dark Absol был на правильном пути к поиску корня этой проблемы (60% от 0 равно 0). Учитывая это, где-то вы устанавливаете какой-то родительский элемент div 0 (намеренно или иным образом). Если вы хотите сохранить относительный размер шрифта, я бы посоветовал пересмотреть все, где вы устанавливаете размер шрифта в вашем CSS (и, возможно, в вашем JS) файле.

Ответ №2:

Убедитесь, что родительский элемент .noticount имеет relative позицию, которая решит проблему

 .noticountParent{
     position:relative;
}

.noticount{
     position:absolute;
}
  

HTML:

 <article class=noticountParent>
    <div id="request-count" class="noticount">1</div>
</article>
  

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

1. Родительский элемент уже находится в относительном положении, вот что меня смущает.

Ответ №3:

Ваш ul#moomenu и ul#moomenu li определить font-size:0

Поскольку .noticount имеет font-size:0.6em , результирующий размер шрифта равен… 0

Размер шрифта, равный нулю, невидим.

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

1. Есть ли у вас пример JSFiddle (или аналогичной службы), работающий с этим изменением? Я удалил font-size:0 то, на что вы ссылаетесь, и все еще вижу описанную проблему OP.

2. @user3507600, по-видимому, есть другое место. Подождите.

3. Исправлено , но обратите внимание, что, поскольку элементы списка не имеют правильного position:relative , уведомление отображается в неправильном месте.