Могу ли я превратить HTML & lt; map & gt; & Lt; & площадь GT; оттенки серого с CSS? [Дубликат]

Когда мы это делаем:

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]
22
задан scarba05 30 July 2011 в 00:46
поделиться

3 ответа

Если вы хотите использовать произвольные формы и по-прежнему использовать стили, считаете ли вы, что пытаетесь выполнить SVG?

Я не являюсь мастером SVG, но вот пример, который я взбивал: http : //jsfiddle.net/tZKuv/3/ . Для производства вы можете захотеть заменить по умолчанию на none, я использовал gray, чтобы вы могли видеть, где он находится.

Недостатком является то, что вы потеряете непринужденность использования / map дает вам, но я думаю, вы можете достичь своей цели, если идете по этому маршруту. Я добавил cursor: pointer в многоугольник, и вы можете добавить обработчики onclick для имитации href из <area>.

Очевидным предостережением является поддержка браузера. Это похоже на работу в Chrome, и я уверен, что он должен работать в IE9 (jsfiddle не работает в IE9 на данный момент), но предыдущие версии IE не поддерживают SVG.

Обновление: сделана быстрая тестовая страница для тестирования IE9. Это действительно работает, как ожидалось. Вот источник .

Обновить снова: это также решит проблему масштабирования, о которой вы просили в другом вопросе.

11
ответ дан Sapph 21 August 2018 в 19:35
поделиться
  • 1
    Спасибо за перекрестные ссылки на мой другой вопрос. Я думаю, SVG был бы идеальным, если бы все мы использовали современные браузеры. Единственный недостаток - вы, вероятно, оставите пользователей, которые все еще находятся в старых браузерах, таких как IE7 и IE6, хотя IE6 официально не поддерживается Microsoft. – peter 18 February 2011 в 10:44
  • 2
    @PeterBZ Вероятно, это вызывает головную боль, но я считаю, что вы можете добавить резервное поведение для браузеров, которые не поддерживают SVG (т. Е. kaizou.org/2009/03/inline-svg-fall ). Компромисс между тем, сколько времени разработки вы хотите потопить, чтобы сделать его полностью кросс-браузерным и насколько легко его реализовать, я полагаю. Удачи! – Sapph 18 February 2011 в 18:45
  • 3
    Проверьте raphael.js - это SVG для всех браузеров IE6 +. Насколько я знаю, он делает все, кроме браузера акций на ранних телефонах Android. – user568458 20 February 2012 в 14:33
  • 4
    Ваш JSfiddle дает мне отличный результат с (Internet Explorer, Chrome) и Firefox, как бы то ни было, Firefox просто печатает верхнюю часть треугольника. – Francisco Corrales Morales 21 January 2014 в 21:15

Нет, нет способа сделать это, как вы описали. Я исследовал его и пытался. То, что вы можете сделать, это настроить события наведения на разные сегменты и заменить некоторые оверлейные изображения, затененные в той же области.

2
ответ дан Diodeus - James MacFarlane 21 August 2018 в 19:35
поделиться

Невозможно с CSS. Однако вы можете проверить плагин Map Hilight jQuery.

EDIT 10.2011 ImageMapster - это более свежий и более мощный плагин, который вы также должны проверить .

15
ответ дан Su' 21 August 2018 в 19:35
поделиться