Как получить граничный радиус из элемента с помощью jQuery?
У меня есть div, со следующими HTML и CSS. В попытке сделать код Javascript более надежным, я пытаюсь получить некоторые атрибуты CSS из выбранного элемента.
Я знаю, как использовать .css() getter для получения элементов, но как получить радиус границы с помощью этого метода?
Документация jQuery разрежена.
HTML:
<div id="#somediv"></div>
CSS
#somediv {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
Ответы
Ответ 1
Я предполагаю, что он официально не поддерживается, так как он немного непредсказуем... В Firefox с помощью $("#somediv").css("-moz-border-radius", "20px");
будет задан граничный радиус в порядке, но попытка его прочитать через $("#somediv").css("-moz-border-radius");
возвращает пустую строку... Тем не менее, похоже, что Firefox взрывает радиус границы в своих составных частях, значение $("#somediv").css("-moz-border-radius-topleft");
будет работать (очевидно, только возвращает только один параметр угла).
Edit
Как указывает Tgr $('#foo').css('MozBorderRadius')
позволит вам полностью прочитать его в Firefox. И как отмечает Брэдли Маунтфорд в комментарии ниже, похоже, что вы можете читать Webkit, используя также компоненты (хотя только хром, похоже, похож на border-top-left-radius
, где как Chrome, так и Safari обрабатывают -webkit-border-top-left-radius
...
Итак, суммируя, вы получаете следующее (основанное на настройке 5px
):
В Firefox:
$("#somediv").css("MozBorderRadius"); //"5px 5px 5px 5px"
$("pre").css("-moz-border-radius-topleft"); //"5px"
В Webkit (проверено в Chrome и Safari):
$("pre").css("-webkit-border-top-left-radius"); //"5px 5px"
Ответ 2
В Firefox по крайней мере работает с $('#foo').css('MozBorderRadius')
. $('#foo').css('-moz-border-radius')
не работает, даже если он работает при настройке значения.
Ответ 3
Предыдущие ответы не сработали для меня.
Код ниже работает для меня в Firefox и Chrome и будет обеспечивать радиус границы для каждого угла, но только для элемента с идентификатором. Однако нет jQuery.
Дополнительная информация здесь:]
function getStyle(oElm, css3Prop) {
var strValue = "";
if (window.getComputedStyle) {
strValue = getComputedStyle(oElm).getPropertyValue(css3Prop);
}
//IE
else if (oElm.currentStyle) {
try {
strValue = oElm.currentStyle[css3Prop];
} catch (e) {}
}
return strValue;
}
//call as follows
var brTopLeft = getStyle(document.getElementById("element"), "border-top-left-radius");
var brTopRight = getStyle(document.getElementById("element"), "border-top-right-radius");
var brBottomRight = getStyle(document.getElementById("element"), "border-bottom-right-radius");
var brBottomLeft = getStyle(document.getElementById("element"), "border-bottom-left-radius");
document.getElementById("br-tl").innerHTML = brTopLeft;
document.getElementById("br-tr").innerHTML = brTopRight;
document.getElementById("br-br").innerHTML = brBottomRight;
document.getElementById("br-bl").innerHTML = brBottomLeft;
#element {
height: 50px;
width: 50px;
margin: 20px;
border: 2px solid black;
border-radius: 5px 10px 14px 23px;
}
<div id="element"></div>
<p>Border-radius-top-left: <span id="br-tl"></span>
</p>
<p>Border-radius-top-right: <span id="br-tr"></span>
</p>
<p>Border-radius-bottom-left: <span id="br-bl"></span>
</p>
<p>Border-radius-bottom-right: <span id="br-br"></span>
</p>