смените абсолютное положение слева направо на теге span в зависимости от класса

Вы проверили RSE (, R проявляет эмоции System Explorer)? Я думаю, что это достаточно близко к тому, чего Вы хотите достигнуть.

сообщение в блоге об этом, со снимками экрана

6
задан Tord 9 November 2009 в 00:25
поделиться

3 ответа

Даже если вы установили right: 0 , ваш left: 0 все еще наследуется. Вам нужно установить left: auto , чтобы переопределить этот стиль для класса поддержки .

5
ответ дан 9 December 2019 в 22:36
поделиться

Судя по тому CSS, вы, кажется, не понимаете его правильно или, по крайней мере, неправильно его используете. Вы можете прочитать статью SitePoint о каскаде, специфичности и наследовании для хорошего введения.

Причина, по которой это не работает, состоит в том, что последние две строки этого CSS применяется к элементам списка с помощью класса поддержки . Предпоследняя строка применяется ко всем всем элементам списка , а последняя строка затем добавляется к этой строке для элементов списка поддержки . Итак, поскольку в этой последней строке нет свойства left , свойство left каскадно спускается вниз от предыдущей строки, делая его left: 0 также .

Когда вы используете класс для обозначения особого случая, вы не должны:

6
ответ дан 9 December 2019 в 22:36
поделиться

Хм, странно. Я не могу сказать вам, почему ваш код не работает, он должен работать, поскольку поддержка: hover span является более конкретным селектором.

Однако нашел исправление: Остались абсолютные позиции элементов: 0; по умолчанию. Если удалить left: 0; из селектора диапазона он будет работать.

Ваш код будет выглядеть так:

#menu{position:relative;}
#menu ul{list-style:none;}
#menu ul li{float:left;}
#menu ul li.support{float:right;}
#menu ul li span{display:none;}
#menu ul li:hover span{display:block; position:absolute; top:30px;}
#menu ul li.support:hover span{display:block; position:absolute; top:30px; right:0}
0
ответ дан 9 December 2019 в 22:36
поделиться