2009-07-15 25 views
2

どのようにh1の色= "青"とすべてのp色= "緑"のように、実行時にCSSの属性値を変更できますか?誰かがそれを知っているなら私を助けてください!asp.netのCSS属性の値を動的に変更します

+0

? JavaScriptを使用して?あなたのコードビハインドで?どの言語を使用していますか? VB? C#? PS:関連性の高いタグが多いほど、正しいスキルセットが得られる人が増えます。 – Peter

答えて

7

(私はあなたがこのサーバー側をしたいと仮定しています)かなり簡単 - にrunat =サーバーとして見出しを宣言し、それをIDを与える:

<h1 runat="server" id="someHeading">Blah</h1> 

その後、プログラムの背後にあるコードでそれを操作することができます以下のようなので:あなたが行う場合があります

<h1 id="someHeading" style="color:blue;">Blah</h1> 

someHeading.Style.Add("color", "blue"); 

これは、次のHTMLをレンダリングしますスタイルシートにスタイルを定義し、実行時にクラスを動的に変更します。あなたが動的に変化しているよう

Update-は、以下がより適切であるかもしれない:私は他の誰かが、クライアント側にそれを行う方法で答えを投稿します確信している

someHeading.Style["color"] = "red"; 

。 :-)

もう1つ(おそらく良い)オプションは、スキンとテーマを使用してサーバー側に表示されます。詳しくは、ASP.NET FAQをご覧ください。

1

jQueryのでは、単にコードのほとんどが実行されると、HTMLのみ生成されるため、複数のHTMLタグにCSSを適用するセレクタを持っていない

$('h1').css("color","blue"); 

のASP.Net分離コードを使用することができます。これはPage_PreRenderイベントで発生します。

あなたができることはレンダリングされたHTMLを取得し、正規表現やプレーン検索置換を使用して検索や変更を行うことです。

Page_PreRenderイベントのレンダリングされたhtmlを変更すると、後で問題が発生する可能性があり、基本的には実行されないため、javascriptを使用してこれを行うことをお勧めします。

+0

サーバー上の複数のコントロールにそれを実行している場合、スキン/テーマを動的に変更することで簡単に行うことができます。 – RichardOD

0

私は彼がページのすべてのアイテムを意味すると信じています。私は、次のコードを使用してインラインスタイルを追加し、ちょうどあなたの現在のスタイルシートの後にヘッダーにリテラルを追加することをお勧めします:

<asp:Literal ID="litInlineStyles" runat="server" EnableViewState="false" Visible="false"> 
    <style type="text/css"> 
    h1 
    { 
    color: {h1Colour} 
    } 
    p 
    { 
    color: {pColour} 
    } 
    </style> 
</asp:Literal> 

私が意図的にビューステートとvisbilityを無効にしてきたあなたがするたびにページを宣言する必要がありますので{h1Colour}と{pColour}を置き換えるものを読み込み、リテラルを表示するように設定します。

正しい方向に向けるのに役立ちます。

+0

これは単一のページのみの修正には理想的ですが、世界全体で何かをしているのであれば、おそらくテーマを使うでしょう。 –

0

以下のコードを試してみてください、私はあなたのために働くだろう:

あなたがこれを行うにはしたくない
someHeading.Attributes.CssStyle.Add(HtmlTextWriterStyle.Color, "red"); 
関連する問題