#javascript #html #css
#javascript #HTML #css
Вопрос:
Я пытаюсь выяснить, как извлекать атрибуты из CSS для использования в Javascript. Я так много раз гуглил то, что искал, и во многих отношениях мои пальцы вот-вот отвалятся.
Я хочу изменить размер шрифта на три разных размера шрифта: 15 пикселей, 28 пикселей и 40 пикселей. Это будет переключаться с помощью трех кнопок. Однако, когда вы выбираете размер шрифта, некоторые другие атрибуты CSS необходимо изменить, чтобы изменить размер текста и отступов для выравнивания с элементом «позади», чтобы он не выступал и не выглядел уродливо. Я планирую автоматически изменять размер с помощью Javascript, но, хоть убейте, я не могу понять, как извлечь атрибут «размер текста в пикселях» со страницы, чтобы применить аргумент «if / else». Это нужно было бы сделать в браузере, и я нашел команду .getComputedStyle . Но поскольку я не могу заставить его работать, я не уверен, нужно ли мне это или нет.
<body>
<p id="spaz">Text to be resized.</p>
<button type="button" onclick="txtszl()">large</button>
<button type="button" onclick="txtszm()">medium</button>
<script>
function txtszl(){
document.getElementById("spaz").style.fontSize="40px";
}
function txtszm(){
document.getElementById("spaz").style.fontSize="28px";
}
var $txtelement = document.getElementById("spaz");
var $txtsize = $txtelement.getComputedStyle("fontSize");
if ($txtsize == 40px){
alert("It's forty!");
}else{
alert("Nope!");
}
</script>
</body>
Это то, что я придумал. Любая помощь / ссылки будут с благодарностью!
Ответ №1:
getComputedStyle
Функция возвращает a CSSStyleDeclaration
.
var txtElementStyles = getComputedStyle($txtelement, null),
fontSize = txtElementStyles.getPropertyValue('font-size');
Ответ №2:
Рабочая скрипка: http://jsfiddle.net/wrathchild77/6LJaM /
function txtszl() {
document.getElementById("spaz").style.fontSize = "40px";
check();
}
function txtszm() {
document.getElementById("spaz").style.fontSize = "28px";
check();
}
function check() {
var $txtsize = document.getElementById("spaz").style.fontSize;
if ($txtsize == "40px") {
alert("It's forty!");
} else {
alert("Nope!");
}
}
Комментарии:
1. Это не работает.
style
Элемент ссылается на встроенный стиль и не возвращает значение; он используется для установки стиля, а не для его извлечения.getComputedStyle()
используется для извлечения значений стиля.2. @AstroCB Ну, он вернул бы значение, если бы стиль был установлен встроенным, но он не учитывает унаследованные стили или внешние стили.
3. У меня это работает как шарм! Я бы проголосовал за вас, но на данный момент я недостаточно авторитетен. Спасибо за вашу помощь и время.
4. Нет проблем, вы должны иметь возможность пометить его как ответ, если он сработал для вас, даже если у вас еще нет репутации для голосования.
5. @swestfall Это работает, потому что вы уже используете его для установки размера. Он не учитывает унаследованные или внешние стили, поэтому он не будет работать, если OP изменит CSS для элемента в другом месте . Это безопаснее в использовании
getComputedStyle()
.