Как исправить эту проблему с белыми точками в выпадающем меню? - PullRequest
16 голосов
/ 05 мая 2011

В раскрывающемся меню моего веб-сайта верхняя, левая и правая границы элемента имеют серый цвет, а нижняя - белый. Это прекрасно работает в FF3, Chrome, чтобы получить красивое выпадающее меню с непрерывной рамкой.

Но я вижу белую точку на левой стороне от FF4 + и в IE9 +

Думаю, проблема в том, что в FF3 нижнему левому пикселю был присвоен тот же цвет, что и левой границе. Но в FF4 нижний левый пиксель имеет тот же цвет, что и нижняя граница!

Это выглядит ужасно. Как это исправить, чтобы вся левая часть выпадающего меню представляла собой одну непрерывную серую линию?

То, что я делаю здесь, это то, что подменю имеет полную серую рамку. Я хочу убрать серую границу между «Проектами» и самим подменю, чтобы все это выглядело как единое целое с непрерывной границей без делений между ними. Поэтому я сделал белую нижнюю границу «Проекты» и установил ее наложение на подменю на 1 пиксель. Таким образом, часть серой границы подменю исчезает и выглядит непрерывной. Но в FF4 и IE9 нижний левый и нижний правый пиксели соответственно запутывают.

Наведите указатель мыши на меню Projects в http://www.softinternals.com, и вы можете увидеть это на левой боковой границе в FF4.

Вот скриншоты выпадающего меню:

Firefox 4:

Firefox 4 Screenshot

Internet Explorer 9

IE9 Screenshot


Я провел больше исследований и нашел это:

При применении границы толщиной в один пиксель каждый браузер и каждая версия одного и того же браузера, похоже, имеют разные представления о том, какой цвет выбрать для угловых пикселей.

Firefox 3

Это то, что я хочу :) Это подходит для моего выпадающего меню, так как нижний левый цвет взят от левой границы.

  • Нижний левый и нижний правый угловые пиксели принимают цвет левой и правой границ соответственно.
  • Оба угла сверху принимают цвет верхней границы.
  • Цвет нижней границы не берется ни за какой угол.

Firefox 3


Firefox 4

Это не то, что я хочу: (

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

Firefox 4


Internet Explorer 8

Тоже не то, что я хочу.

  • Аналогично FF3, но слева ничего не требуется. Право берет все. Верхний и нижний угол каждый.

IE8


Chrome 11

Несколько близко к тому, что я хочу :)

  • Цвет каждого углового пикселя является интерполированным значением цветов смежных границ.

Chrome


Internet Explorer 9

У меня не было доступа к IE9 при создании снимков экрана, но он также должен был работать по-другому с нижним правым пикселем.


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

Чтобы все мое выпадающее меню имело 1 непрерывную границу, я хочу, чтобы нижний левый и нижний правый пиксели принимали цвет левой и правой границ соответственно. Есть ли способ сделать это в основных браузерах?

Если нет, глядя на мое раскрывающееся меню, можете ли вы предложить какой-нибудь другой способ обвести эту единую непрерывную границу вокруг всего объекта без белых точек или разрывов где-либо?

Ответы [ 2 ]

8 голосов
/ 06 мая 2011

Попробуйте:

  • Снять нижнюю границу
  • Установить нижний отступ 1px (или добавить 1px к существующему нижнему заполнению)
  • Установить цвет фона на белый

Это должно расширить левую и правую границы до нижней части элемента, в то время как белый фоновый цвет должен покрывать верхнюю границу подменю.

0 голосов
/ 05 мая 2011

Я обнаружил, что эта проблема связана с тем, что border-bottom установлен на #FFF в:

.hover-menu
{
    ...
    border-bottom: solid 1px #FFF !important;
    ...
}

Я решил изменить на:

.hover-menu
{
    ...
    border-bottom: solid 0 #FFF !important;
    ...
}

или

.hover-menu
{
    ...
    border-bottom: none !important;
    ...
}
...