2013-03-30 2 views
0

было много написано здесь об определении цветов фона в javascript, но я не рассматривал этот вопрос: скажем, у меня пустой документ, и ничего больше, никакого стиля. getcomputedstyle для обоих элементов, background-color - «прозрачный». но какой цвет? выбранный пользователем по умолчанию, чаще всего белый, но может быть что угодно. так что нет способа узнать, что это такое? кажется дефектом в DOM.любой способ определить прозрачный цвет фона CSS

+0

Эффективный цвет зависит от элементов под ним. На просторах прозрачного элемента может быть несколько разных цветов фона. – Pointy

+0

@Pointy, я, возможно, не понял, что здесь задают, можете ли вы немного помочь? – gdoron

+0

Его 'белый' (обычно) в случае' body' и других элементов принимает цвет 'parent' – Jashwant

ответ

2

Проверьте tricks this guy used. Эфирно единственный способ получить истинный цвет - это продолжать обработку родительских элементов, пока не найдете тот, который обеспечивает определение цвета.

Методы выше будет возвращать 'прозрачными' при вызове для элемента с ID someid, с двумя исключениями:

Сафари возвратит "RGBA (0, 0, 0, 0)", который означает прозрачность, , потому что четвертое значение означает непрозрачность, равную 0. Konqueror 3.5 вернет «# 000000», что является черным и одновременно является известной ошибкой Konqueror. Я пытался использовать getPropertyCSSValue, но , что один BORKED полностью ...

Теперь, если вы хотите получить «реальный» цвет фона элемента, то есть не рекурсивно двигаться вверх по иерархии, пока вы найдите элемент, который не имеет прозрачного фона. У вас должно быть остановка, однако на document.body и предположить белый цвет фона.

+1

... и эта техника падает, как только элементы располагаются с 'fixed',' absolute' или 'relative'. – Pointy

+0

@Pointy Что в коде вызовет технику с ошибкой на этих элементах? –

+1

проблема заключается в том, что просто просмотр DOM не говорит вам, какие элементы фактически расположены за прозрачным элементом. Сам элемент может находиться где угодно на странице, независимо от того, что говорит DOM, и элементы, которые не являются предками прозрачного элемента, могут быть за ним. – Pointy

0

прозрачный цвет rgba(0,0,0,0). Это любой RGB с A = 0, то есть Alpha должен быть установлен в 0.

Смежные вопросы