2016-10-11 4 views
0

したがって、固定されたツールバーの下に座る必要がある要素があります。そして、ツールバーの下に置くために必要な上部パディングの量は、ビューポートの幅に基づいて変化します。だから私は2560pxから320pxまでの任意の時点で必要とされるパディングトップの割合を決定する式を開発しました。これは私たちのソフトウェアが満たす最大のビューポート幅と最小のビューポート幅ですが、実際にはCSSスタイル。JQuery Idセレクタで.css()メソッドに入力される入力のタイプを指定する

これは私が今作業しているものです。

getTopPadding =(): void => { 
     var x: number = $(window).width(), 
      paddingPercent: number = ((0.007589 * (2560 - x))); 
     if (paddingPercent < 5) { 
      paddingPercent += 5; 
     } 

     $('#appendHere').css('padding-top', paddingPercent); 
    }; 

このように、現在の幅とパディングトップが必要なものを取り出すこの式があります。したがって、たとえば、320PXの幅に、パディングをする必要があり、

padding-top: 17%; 

paddingPercentだけで罰金数17を計算しますが、私はの.css()メソッドの値としてだけpaddingPercentに渡した場合、それが来ますアウトこの

padding-top: 17px; 

のようなので、私は外で見つけようとしているものを、私が渡している値は、ピクセル、EM、VW、または%であるべきであるかどうかを指定する方法はありますか?私はあなたがの.css()メソッドの中に文字列を渡すことができますので、おそらく数を取り、最後に文字列を追加すると、私は必要な%記号を追加し、値を文字列化だろうと考え

$('#appendHere').css('padding-top', (paddingPercent + '%')); 

を試してみました。しかし、もっと考えてみると、文字列を受け入れる理由は、私がやっていることではなく、色の指定などのためのものであると分かりました。タイプキャストと実行について考えました

しかし、それはNaNで戻ってくるので、ここからどこに行くのかはわかりません。誰かが洞察力を提供できると願っています。

+1

私は最後の部分を理解していますが、問題を過度に思っているように聞こえるかもしれません。文字列として 'paddingPercent'に%記号を追加するだけでうまくいくはずです。あなたはそれを試してみた、それは動作しませんでしたか? –

+0

実際には:[.css() '](http://api.jquery.com/css/)のドキュメントを参照してください。 "数値が値として渡されると、jQueryはそれを文字列に変換し、その文字列の最後にpxを追加します。プロパティにpx以外の単位が必要な場合は、値を文字列に変換し、メソッドを呼び出す前に適切な単位を追加してください。 –

+0

私はこの行を使っていました。 $( '#appendHere')。css( 'padding-top'、(paddingPercent + '%')); しかし、Idを持っていた要素にスタイルを追加していませんでした。パッディングトップは文字列を値として受け入れなかったので、私はそれがわかっていました。 – Chris

答えて

1

コンソールでwindow.widthの値を確認したところ、数字だけのように見えましたが、.css()にインクルードされている場合は、何も指定されていなければpxの値が追加されます。私の側でそれを解決するために見える何

は自分の.cssを実行する前に、

paddingPercent = paddingPercent + '%'; 

を行っている()、これはそれを行う必要があります。私があなたの質問を誤解した場合は、私に知らせてください。私はこれを単純なファイルで試してみましたが、それはトリックでした。

+0

Gotcha、何をしたのですか? var x:number = $(window).width()、 paddingPercent:number =((17 /(2560 - 320))*(2560 - x))); if(paddingPercent <5){ paddingPercent + = 5; } var stringify:string = paddingPercent + '%!important'; console.log( 'stringify value ='、stringify); // '17%!important 'になる $('#appendHere ')。css('パディングトップ '、ストリング); しかし、私は実行時に表示されるスタイルをまだ得ていません – Chris

+0

Oh jeez、それはうっすらで、フォーマットがありませんでした。基本的にpaddingPercent変数をとり、最後に '%!important'という文字列を追加し、stringifyという別の変数に格納し、その変数を.css()メソッドに渡しました。しかし、私はまだすべてが起動するときに表示されるスタイルを取得していません。理由は分かりません。 – Chris

+0

私のコメントを誤って削除しました。だから、css関数の呼び出しの前に、文字列= paddingPercent + '%'を実行してから、次のようにcss関数を呼び出します:.css( 'padding-top'、 'string'、 'important'); –

関連する問題