2017-02-05 17 views
0

私はここに来て、JS/jQueryを使った私の練習の小さな部分の解決策を見つけようとしています。私は、ページ全体のフォントサイズを変更しようとしているし、次のコードで実装することができます。私がしたいのは、クリックされた要素自体のフォントサイズを変更するのではなく、#size1、#size2、#size3、実際には "Text size"スパンのテキストです。子要素に影響を与えずに親要素を変更する方法について、別のトピックでいくつかの答えを見たことがありますが、テキストを変更することに関するものであり、私のニーズには適用できませんでした。どんな助けもありがとう。子要素に影響を与えないボディーのフォントサイズを変更する方法

//HTML 
<span>Text size :</span> 
      <a id="small" href="#" style="font-size: 0.8em" onclick="textgr(0.8)">A</a> 
      <a id="middle" href="#" style="font-size: 1em" onclick="textgr(1)">A</a> 
      <a id="large" href="#" style="font-size: 1.2em" onclick="textgr(1.2)">A</a> 


//This works fine to change the font size on the whole page 

function textgr(gr){ 
        document.body.style.fontSize = gr + "em"; 
}  

//I've tried to pack this piece of code in the function above, but it would not do anything at all 

function textgr2(){ 
     document.getElementById(small).style.fontSize = 0.8 + "em"; 
     document.getElementById(middle).style.fontSize = 1 + "em"; 
     document.getElementById(large).style.fontSize = 1.2 + "em"; 
} 
+1

文書のフォントサイズを設定できる「REM」の使用を調査しましたか?そして、将来のすべての使用で、エレメントの親に対するフォントの相対サイズである「em」ではなく、そのバリエーションが可能になります。 – gavgrif

+1

要素のスタイルは変更しないでください。ただし、ボディクラスは変更してください。次に、それを使用して、ページ上の任意の要素に必要なフォントサイズを定義できます。 – skobaljic

+0

あなたのヒントをありがとう、私は 'レム'のdocuページをチェックし、それを使用しようとしましたが、それは私がそれを行うことを期待していないようです。 – Timur

答えて

1

document.getElementById("text-size-controls").addEventListener("click", function(evt) { 
 
    var sz; 
 
    var target = evt.target; 
 
    if (evt.target.hasAttribute('data-size')) { 
 
    sz = evt.target.getAttribute('data-size'); 
 
    document.getElementById("text-area").setAttribute("class",sz); 
 
    } 
 
});
#text-size-controls { 
 
    cursor: pointer; 
 
    list-style-type: none; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
#text-size-controls li { 
 
    display: inline-block; 
 
} 
 

 
.small { 
 
    font-size: 10px; 
 
} 
 

 
.medium { 
 
    font-size: 16px; 
 
} 
 

 
.large { 
 
    font-size: 20px; 
 
} 
 

 
h1 { 
 
    font-size: 2.0em; 
 
} 
 

 
.text { 
 
    font-size: 1.0em; 
 
}
<ul id="text-size-controls"> 
 
    <li data-size="small">Small</li> 
 
    <li data-size="medium">Medium</li> 
 
    <li data-size="large">Large</li> 
 
</ul> 
 
<div id="text-area"> 
 
<h1> 
 
Header 
 
</h1> 
 
<p class="text"> 
 
    This is some text 
 
</p> 
 
</div>

小さな媒体画素にフォントサイズを設定するが、H1の.textクラスということに注意してくださいサイズをに調整しますems。これにより、テキストの基本サイズが確実に設定され、比例的に調整されます。

このソリューションはjQueryを必要としません。あなたの質問のコードはJavaScriptであり、jQueryではないので省略しました。

+0

ありがとうございます。私は正しい方法でそれを説明することができなかったと思います。あなたのコードでは、同じ結果が得られます。小、中、または大をクリックするたびに、自分のサイズも変更されています。 3人とも常に同じサイズを保つ必要があります。 – Timur

+0

@Timur - それについて申し訳ありませんが、コントロールがテキストのdivにないように内容を分割します。 – user2182349

+0

ありがとうたくさんの男!それは仕事をした、まさに私が望んでいた:)あなたは素晴らしいです! – Timur

関連する問題