Когда мы это делаем:
def foo(a=[]):
...
... мы присваиваем аргумент a
списку unnamed , если вызывающий объект не передает значение a .
Чтобы упростить эту дискуссию, давайте временно присвоим неназванному списку имя. Как насчет pavlo
?
def foo(a=pavlo):
...
В любое время, если вызывающий абонент не сообщает нам, что a
, мы повторно используем pavlo
.
Если pavlo
изменен (модифицируется), а foo
заканчивает его модификацию, эффект, который мы замечаем в следующий раз, foo
вызывается без указания a
.
Итак, это то, что вы видите (помните, pavlo
инициализируется в []):
>>> foo()
[5]
Теперь pavlo
- [5].
Вызов foo()
снова снова изменяет pavlo
:
>>> foo()
[5, 5]
Задание a
при вызове foo()
гарантирует, что pavlo
не коснется.
>>> ivan = [1, 2, 3, 4]
>>> foo(a=ivan)
[1, 2, 3, 4, 5]
>>> ivan
[1, 2, 3, 4, 5]
Итак, pavlo
все еще [5, 5]
.
>>> foo()
[5, 5, 5]
Если вы хотите использовать произвольные формы и по-прежнему использовать стили, считаете ли вы, что пытаетесь выполнить SVG?
Я не являюсь мастером SVG, но вот пример, который я взбивал: http : //jsfiddle.net/tZKuv/3/ . Для производства вы можете захотеть заменить по умолчанию на none
, я использовал gray
, чтобы вы могли видеть, где он находится.
Недостатком является то, что вы потеряете непринужденность использования / map дает вам, но я думаю, вы можете достичь своей цели, если идете по этому маршруту. Я добавил cursor: pointer
в многоугольник, и вы можете добавить обработчики onclick
для имитации href
из <area>
.
Очевидным предостережением является поддержка браузера. Это похоже на работу в Chrome, и я уверен, что он должен работать в IE9 (jsfiddle не работает в IE9 на данный момент), но предыдущие версии IE не поддерживают SVG.
Обновление: сделана быстрая тестовая страница для тестирования IE9. Это действительно работает, как ожидалось. Вот источник .
Обновить снова: это также решит проблему масштабирования, о которой вы просили в другом вопросе.
Нет, нет способа сделать это, как вы описали. Я исследовал его и пытался. То, что вы можете сделать, это настроить события наведения на разные сегменты и заменить некоторые оверлейные изображения, затененные в той же области.
Невозможно с CSS. Однако вы можете проверить плагин Map Hilight jQuery.
EDIT 10.2011 ImageMapster - это более свежий и более мощный плагин, который вы также должны проверить .