2017-09-14 6 views
-2

関連するquestionでは、要素の 'style'タグを編集してメディアクエリを動的に更新できることが示唆されています。 .cssメソッドを使ってjqueryで行うことができますが、スタイルタグ自体を更新する必要があります。プログラムでスタイルタグを追加/変更しますか?

私の究極の目標は、ここで述べたように、.cssのより良いアプローチではできないメディアクエリ全体を追加することです。 .cssを使用すると、画面上のクラスとメディアクエリーはどのように変更されますか。しかし、私はメディアクエリを変更したいだけです。質問は私がスタイル・タグのフォントの色を変えようとしていて、これまでに運がなかったという私の試みです。

私はそれまでのすべての応答を感謝します。ここで

は、私がこれまで試してみましたです:

function myFunction() { 
 
    $('.changeMe').append("<style type='text/css'>color:blue</>") 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button onclick="myFunction()">Click me to change text from black to blue</button> 
 
<p class="changeMe">Change My Color To Blue by adding a style tag</p>

をここでの.cssが、私はしたくない画面上のdivを変更する使用して示したコードスニペットです。ここで

var canvas = document.getElementById("canvas1"); 
 
function draw_a() { 
 
    var context = canvas.getContext("2d"); 
 
// // LEVER 
 

 
//plane 
 
context.fillStyle = '#aaa'; 
 
context.fillRect (25, 90, 2500, 400); 
 

 

 
} 
 

 

 

 

 
function changeScale() { 
 
    
 
    var scale = .1; 
 
    
 
    console.log("scale:" + scale); 
 
    
 
    $('.myDivToPrint').css({ 
 
       '-webkit-transform': 'scale(' + scale + ')', 
 
       '-moz-transform': 'scale(' + scale + ')', 
 
       '-ms-transform': 'scale(' + scale + ')', 
 
       '-o-transform': 'scale(' + scale + ')', 
 
       'transform': 'scale(' + scale + ')', 
 
       
 
      }); 
 

 
} 
 

 
$(document).ready(function(){ 
 
    draw_a(); 
 
    
 
});
div.sizePage { 
 
    color: #333; 
 
} 
 

 
canvas { 
 
    border: 1px dotted; 
 
} 
 

 
.printOnly { 
 
    display: none; 
 
} 
 

 
@media print { 
 
    html, 
 
    body { 
 
    height: 100%; 
 
    background-color: yellow; 
 
    } 
 
    .myDivToPrint { 
 
    background-color: yellow; 
 
    top: 0; 
 
    left: 0; 
 
    margin: 0; 
 
    } 
 
    .no-print, 
 
    .no-print * { 
 
    display: none !important; 
 
    } 
 
    .printOnly { 
 
    display: block; 
 
    } 
 
} 
 

 
@media print and (-ms-high-contrast: active) and (-ms-high-contrast: none) { 
 
    html, 
 
    body { 
 
    height: 100%; 
 
    background-color: pink; 
 
    } 
 
    .myDivToPrint { 
 
    background-color: yellow; 
 
    /* 
 
    -moz-transform: rotate(90deg) scale(0.3); 
 
     -ms-transform: rotate(90deg) scale(0.3); 
 
     -o-transform: rotate(90deg) scale(0.3); 
 
     -webkit-transform: rotate(90deg) scale(0.3); 
 
     transform: rotate(90deg) scale(0.3); /* Standard Property */ 
 
     position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    margin: 0; 
 
    padding: 15px; 
 
    font-size: 14px; 
 
    line-height: 18px; 
 
    position: absolute; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    /* 
 
    -webkit-transform: rotate(90deg); 
 
    -moz-transform: rotate(90deg); 
 
    -o-transform: rotate(90deg); 
 
    -ms-transform: rotate(90deg); 
 
    transform: rotate(90deg); 
 
*/ 
 
    
 
    } 
 
    .no-print, 
 
    .no-print * { 
 
    display: none !important; 
 
    } 
 
    .printOnly { 
 
    display: block; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button onclick="window.print();" class="no-print">Print Canvas</button> 
 
<button onclick="changeScale();" class="no-print>">Change Scale (Want this to only change scale in media query.)</button> 
 
<div class="myDivToPrint"> 
 
<canvas height="2500px" width="4000px" id="canvas1"></canvas> 
 
</div>

、私は私が必要とするメディアクエリを追加すると思うだろうコードスニペットです。

var canvas = document.getElementById("canvas1"); 
 
function draw_a() { 
 
    var context = canvas.getContext("2d"); 
 
// // LEVER 
 

 
//plane 
 
context.fillStyle = '#aaa'; 
 
context.fillRect (25, 90, 2500, 400); 
 

 

 
} 
 

 

 

 

 
function changeScale() { 
 
    
 
    var scale = .1; 
 
    
 
    console.log("scale:" + scale); 
 
    
 
    $('.myDivToPrint').append("<style type='text/css'>@media print and (-ms-high-contrast: active) and (-ms-high-contrast: none){" 
 
        + "-webkit-transform: scale(" + scale + ") translate(100px,100px) rotate(-90deg)," 
 
        + "-moz-transform: scale(" + scale + ") translate(100px,100px) rotate(-90deg)," 
 
        + "-ms-transform: -transform: scale(" + scale + ") translate(100px,100px) rotate(-90deg)," 
 
        + "-o-transform: scale(" + scale + ") translate(100px,100px) rotate(-90deg)," 
 
        + "transform: scale(" + scale + ") translate(100px,100px) rotate(-90deg)," 
 
       + "</style>"); 
 

 
} 
 

 
$(document).ready(function(){ 
 
    draw_a(); 
 
    
 
});
div.sizePage { 
 
    color: #333; 
 
} 
 

 
canvas { 
 
    border: 1px dotted; 
 
} 
 

 
.printOnly { 
 
    display: none; 
 
} 
 

 
@media print { 
 
    html, 
 
    body { 
 
    height: 100%; 
 
    background-color: yellow; 
 
    } 
 
    .myDivToPrint { 
 
    background-color: yellow; 
 
    top: 0; 
 
    left: 0; 
 
    margin: 0; 
 
    } 
 
    .no-print, 
 
    .no-print * { 
 
    display: none !important; 
 
    } 
 
    .printOnly { 
 
    display: block; 
 
    } 
 
} 
 

 
@media print and (-ms-high-contrast: active) and (-ms-high-contrast: none) { 
 
    html, 
 
    body { 
 
    height: 100%; 
 
    background-color: pink; 
 
    } 
 
    .myDivToPrint { 
 
    background-color: yellow; 
 
     position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    margin: 0; 
 
    padding: 15px; 
 
    font-size: 14px; 
 
    line-height: 18px; 
 
    position: absolute; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    
 
    
 
    } 
 
    .no-print, 
 
    .no-print * { 
 
    display: none !important; 
 
    } 
 
    .printOnly { 
 
    display: block; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button onclick="window.print();" class="no-print">Print Canvas</button> 
 
<button onclick="changeScale();" class="no-print>">Change Scale</button> 
 
<div class="myDivToPrint"> 
 
<canvas height="2500px" width="4000px" id="canvas1"></canvas> 
 
</div>

おかげで、 マット

+2

jQuery CSSを動的に適用する正しい方法については、[doc](http://api.jquery.com/css/)をお読みください。 – Andrei

+1

それでは、これをやってテーマを使用しない方が良い設計です.... – epascarello

+0

私は答えOPを残しましたが、なぜjQueryターゲット要素のスタイルを変更するのではなく、メディアクエリを更新したいのですか? – DMcCallum83

答えて

0

あなたは要素に全体のスタイルタグを付加しようとしています。ここでは、jQuery .css()メソッドを使用して色を変更しました。

詳細については、hereをお読みください。

function myFunction() { 
 
    $('.changeMe').css("color", "blue") 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button onclick="myFunction()">Click me to change text from black to blue</button> 
 
<p class="changeMe">Change My Color To Blue by adding a style tag</p>

+0

あなたの答えをありがとう、通常これは正しいでしょう。しかし、私はメディアクエリのCSSを変更する必要があります。私は.cssを使って既存のメディアクエリを修正しようとしましたが、画面CSSのみを修正しました。だから、スタイルタグを追加することは、私の試みでこの問題を回避することです。 –

0

jQueryを使って指定された要素のCSSを変更するには、あなたはそれが.css()関数の使用することができます。

(我々の場合には、それは青だ)関数の最初の値は、あなたが変更したいプロパティを定義(我々の場合には、それは色だ)と第二は、あなたがそれに適用する値である here

それについての詳細を読みます

もっと明確にするために、これはどのCSSでもかなり使用できます。例えば。

//change BG color 
.css('background-color', 'red'); 

//change width 
.css('width', '100px'); 

//change font size 
.css('font-size', '16px'); 
+0

なぜこれが投票されたのですか? – ProEvilz

+0

私はOPがjQueryでメディアクエリを変更する方法を尋ねたので、CSSスタイルを変更するだけではないと思いますか? – DMcCallum83

+0

私はそれをdownvoteしませんでしたが、私はこれを試して問題を述べ、それは私の目的のためにメディアのクエリのCSSを変更することではなく、画面上で動作しませんでしたのでdownvotedだと思う。 –

0

あなたは実際に遠く離れていません。全体のメディアクエリーを追加してみて、それが身体/ヘッドにコンテンツをです(それぞれがこのような状況でどのように動作するかを思い出すことができない):

function myFunction() 
    { 
    $('body').append("<style type='text/css'>@media screen and (min-width: 500px) { /*styling stuff*/ }</style>"); 
    } 

もちろん、あなたがメディアクエリの種類を変更することができます。私は成功と前に使用されているので、幸運を見ました。

+0

私の究極の目標は、ここで指摘したように.cssのより良いアプローチではできないメディアクエリ全体を追加することです。 .cssを使用すると、画面上のクラスとメディアクエリーはどのように変更されますか。しかし、私はメディアクエリを変更したいだけです。質問は私がスタイル・タグのフォントの色を変えようとしていて、これまでに運がなかったという私の試みです。 –

+0

@MatthewDavidJankowskiだから私が正しく理解していれば、メディアクエリの**スタイルを変更したいだけですか? – ProEvilz

+0

@ProEvilz @Mathewそれとも、彼は実際のメディアクエリを更新したいのですか?彼は 'min-width'を変更したり、' max-width'を追加したいかもしれませんか? – DMcCallum83

-1

pタグに追加しようとしています。headにのみ追加されます。あなたの現在の設定では

function myFunction() { 
    $(head).append("<style type='text/css'>color:blue</>") 
} 
+0

これは 'css()'を使うのと同じくらい便利です。これは既に**既存のスタイルタグを変更しないためです** ** OPが**編集したい** – ProEvilz

+0

これは現在のコードの問題を強調しますが、実際に彼の質問に答えるものでも、以前に追加されたスタイルに気づかずに関数が呼び出されるたびに、関数が引き続き追加されるため、実行可能な答えでもありません。 –

1

問題#1それはちょうど、この(あなたは基本的にあなたの段落内で追加されている)が生成されます:あなたの場合はどうなりますか(あなたは問題1を解決した後)

<p class="changeMe">Change My Color To Blue by adding a style tag<style type="text/css">color:blue</></style></p> 

問題#2をユーザーはそのボタンを押し続けますか?これは、ページにスタイル要素とそのターゲットクラスを追加し、ちょうどあなたの既存の要素のクラスを対象とする

<p class="changeMe">Change My Color To Blue by adding a style tag</p> 

これを行うのは良い方法だろうが

に、より多くのスタイルタグを付加していきますと、ただ必要な変化に全体の内容を置き換える:JSで

<style class="changeMe_styles"> 
</style> 

イベント発生の

$(".changeMe_styles").text("@media (min-width: 900px) {.changeMe{ color: blue;}}"); 
関連する問題