2013-06-30 5 views
4

В качестве теста я попытался сделать <div> появлением в виде круга. У <div> есть текст внутри, но в остальном он пуст.«круг» согласованность браузера, граничный радиус

Тогда в JavaScript Я вычислить offsetWidth и offsetHeight, использовать максимум два, и присвоить его переменной с именем diameter (хотя реально ширина, вероятно, всегда будет больше). Я использую diameter, чтобы назначить <div> его ширину, высоту и borderRadius. Результат - это что-то похожее на круг (по крайней мере, в Chrome, Firefox, Opera и Safari. Я не тестировал IE).

Тестирование в Chrome, Firefox, Opera и Safari, я заметил, что это ведет себя по-разному для CSS hover и JavaScript onmousedown когда курсор находится в непосредственной близости от площади круга, но внутри области прямоугольника, который будет виден, если border-radius не было установлено.

Вот результаты, когда курсор находится в этом месте:

  • Chrome: hover и onmousedown влияние вне круга
  • Firefox: hover и onmousedown только затрагиваемой внутри круга
  • оперы: hover и onmousedown пострадавших за пределами круга
  • Сафари: hover и onmousedown пострадавших на улице e circle

Поведение Firefox - это тот, который я хотел бы последовательно использовать, есть ли способ сделать это возможным?

Редактировать: Если вы нашли решение, объясните, что браузер вы используете.

+0

Вы можете написать jsfiddle, чтобы показать вашу проблему? Я предполагаю, что свойство, которое вы используете, только правильно интерпретируется Firefox. Поэтому, выясняя, что это такое, вы должны иметь одинаковое поведение во всех браузерах. –

+0

В ответе Hive7 ниже приведена ссылка jsfiddle, которая иллюстрирует проблему. Добавление '.circle: hover {background: # 0f0;}' покажет проблему 'hover'. – asimes

+0

На моем конце эта работа, как и ожидалось, в Chrome, Firefox, Safari и IE9 +: http: // jsfiddle.net/KLFLG/ –

ответ

2

Кажется, что эта проблема уже исправлена ​​в Chrome 30 Canary. Поэтому предстоящие выпуски Chrome и Opera (которые недавно переключились на механизм рендеринга Chrome) должны вести себя так же, как Firefox. IE10 уже ведет себя таким образом.

+0

В основном это означает, что я не могу полагаться на это, работая для большинства людей в ближайшее время? – asimes

+0

Нет, я имел в виду, что проблема скоро исчезнет, ​​и в конечном итоге это сработает для большинства людей. К сожалению, я не нашел обходного пути для существующих стабильных выпусков Chrome, Safari и Opera. –

+0

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

0

Вы пробовали использовать css-хаки, чтобы вы могли устанавливать определенные типы css в зависимости от используемого вами браузера. Вот сайт, который дает объяснение:

http://www.paulirish.com/2009/browser-specific-css-hacks/

Если не здесь скрипку окружности:

Вот CSS, который я использовал:

.circle { 
    padding: 20px; 
    background: red; 
    width: 20px; 
    border-radius: 20000px; 
    height: 20px; 
} 
+0

Это исчерпывающий выбор CSS, и я не уверен, как его использовать Chrome/Opera/Safari. Пример в ссылке jsfiddle имеет ту же самую проблему, которую я описал, попробуйте добавить '.circle: hover {background: # 0f0;}', чтобы увидеть ее. – asimes

+0

радиус границы может использоваться в разных браузерах в качестве -webkit-border-radius для хрома и сафари, -moz-border-radius для firefox и давать значение радиусу границы: 100% –

+0

Обновили скрипт для работы – Hive7

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