Я хотел получить некоторые из этих элегантных закругленных углов для веб-проекта, над которым я сейчас работаю.
Я подумал, что попробую сделать это, используя JavaScript, а не CSS, чтобы свести к минимуму запросы на файлы изображений (да, я знаю, что можно объединить все необходимые формы закругленных углов в одно изображение) и Я также хотел иметь возможность изменять цвет фона практически на лету.
Я уже использую jQuery, поэтому я посмотрел на отличный плагин с закругленными углами , и он работал как прелесть в каждом браузере, который я пробовал. Однако, будучи разработчиком, я заметил возможность сделать его немного более эффективным. Сценарий уже содержит код для определения, поддерживает ли текущий браузер закругленные углы webkit (браузеры на основе Safari). Если это так, он использует сырой CSS вместо создания слоев div.
Я подумал, что было бы здорово, если бы можно было выполнить такую же проверку, чтобы увидеть, поддерживает ли браузер специфичные для Gecko свойства -moz-border-radius-*
и если да, то использовать их.
Проверка поддержки webkit выглядит следующим образом:
var webkitAvailable = false;
try {
webkitAvailable = (document.defaultView.getComputedStyle(this[0], null)['-webkit-border-radius'] != undefined);
}
catch(err) {}
Это, однако, не сработало для -moz-border-radius
, поэтому я начал проверять альтернативы.
Мое запасное решение, конечно, заключается в использовании обнаружения браузера, но это далеко от рекомендуемой практики.
Мое лучшее решение пока следующее:
var mozborderAvailable = false;
try {
var o = jQuery('<div>').css('-moz-border-radius', '1px');
mozborderAvailable = $(o).css('-moz-border-radius-topleft') == '1px';
o = null;
} catch(err) {}
Он основан на теории о том, что Gecko "расширяет" составной -moz-border-radius до четырех подсвойств
-moz-border-radius-topleft
-moz-border-radius-topright
-moz-border-radius-bottomleft
-moz-border-radius-bottomright
Есть ли какой-нибудь гуру javascript / CSS, у которого есть лучшее решение?
(Запрос функции для этой страницы на http://plugins.jquery.com/node/3619)