#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
, который я тоже не получаю.
Что я могу попытаться решить?
Редактировать
Вот скрипка, отображающая проблему:
Комментарии:
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, вы можете сохранить .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
, уведомление отображается в неправильном месте.