2012-03-02 22 views
3

youtube.com用のユーザースクリプトを作成していて、YouTubeページの他のボタンと同じルックアンドフィールのボタンを挿入したいと考えています。過去はうまくいっていましたが、突然停止しました。 は、任意のユーチューブ映像の上にこの画像のボタンを見てください:このウェブサイトはどのようにイメージをレンダリングしますか?

YoutubeTopButtons

だから、僕はこれらのボタンは、テキストと画像のサブノードを含む、Firebugの中で一つのことに気づいたが、レンダリングされていませんソース画像URLを与えるだけの単純な画像です。これらの画像の 'src'属性(「プラス記号」画像または「下向き矢印」画像)または他のすべての画像には、正確に同じURL(1 x 1画像)://s.ytimgがあります。 com/yt/img/pixel-vfl3z5WfW.gif。しかし、最終的には、これらのすべての異なるイメージとしてレンダリングされます。その結果、私のボタンで同じことをすると、他のすべてのCSSプロパティは正常に動作しますが、画像は空白になります。

私はちょうどHTML/JavaScriptの/ CSSの専門家から知ってほしい -

  1. どのように彼らはこれをやっていますか?
  2. これらを最終的にCSS/javascriptでレンダリングするにはどうすればいいですか?

ありがとう!

P.S. :
- 司会者がこの質問を終了したい場合は、プログラミングに関する質問ではありません。どのようにこの種の '検出不可能な' htmlイメージを実現できるのか、あるいはjavascript/html/cssを通してどうやってそのイメージを取り込むことができるのか知るために。
- 司会者が(youtube.comについて)それがあまりにも具体的であるというこの質問を終了したい場合、そうではありません。 HTMLに関する一般的な質問ですが、これまでのところYouTubeだけでしか実装されていません。私は初心者です。

おかげで、
Piyush

+0

あり答えの多くはここにありますが、基本的にあなたがする必要があるすべてはあなたのボタンのCSSクラスを与えることです'yt-uix-button'。下の私の答えを見てください。 –

+0

GGG、私はすでに完璧に働いていましたが、最近働いていませんでした。したがって、この質問。 –

+0

あなたはそうです、申し訳ありません、CSSクラス名として 'yt-uix-button'と' yt-uix-button-default'の両方を追加する必要があります。私は私の答えを更新します。 –

答えて

7

この技術は、CSSスプライトと呼ばれています。これは、HTTP要求の量を減らすために使用されます。

基本的に、すべてのアイコンを持つ画像は1つのみです(サーバーから1つの画像を読み込むだけです)。あなたは、CSSのプロパティbackground-positionで表示して再生するアイコンのサイズに定義された幅/高さを持つ要素の背景画像としてこの画像を使用し、背景をアイコンの上/左に配置して背景画像。

だから、重要な部分は以下のとおりです。

  • は背景
  • として画像を設定し、あなたの要素にサイズを設定します。イメージはバックグラウンドとして使用されるので、暗黙のうちにイメージのサイズを持たないでしょう!
  • は、バックグラウンド位置規則
を設定

YouTubeの次の画像を使用している:http://s.ytimg.com/yt/imgbin/www-refresh-vflmpZ5kj.png

enter image description here

画像であるに16px/16pxに大きさと "プラス" アイコンの左上/位置97px/66pxにあるので、次の背景位置値を使用します。

background-image: url(//s.ytimg.com/yt/imgbin/www-refresh-vflmpZ5kj.png); 
background-position-x: -97px; 
background-position-y: -66px; 
width: 16px; 
height: 16px; 

深い読み:

ジェネレータ:

+0

コマンドラインツール[glue](http://glue.readthedocs.org/ja/latest/index.html)を使用して簡単にスプライトを作成することができます –

+0

三角形は境界線を使用した純粋なCSSです。 http://css-tricks.com/snippets/css/css-triangle/ – blackpla9ue

+0

こんにちはディディエ、詳細な回答にはおかげさまです。今私はそれを理解する! :) –

4

この技術は、 "CSSスプライト" と呼ばれている。

彼らはone image with all the backgroundsを使用して、要素の高さと幅を設定し、そのように背景を配置するためにCSSを使用していますその一部だけが明らかにされています。

YouTubeのケースでは、1x1の空白の<img>が表示され、imgタグ自体に背景画像が設定されています。

+0

Aah。それはMadmartiganの別の有用な情報のセットです。どうもありがとう。学習は素晴らしいです:) –

0

そのタグのCSS宣言を見てください。例えば、のようなボタンは、このHTMLを持っています

<button onclick=";return false;" title="I like this" type="button" class="start yt-uix-tooltip-reverse yt-uix-button yt-uix-button-default yt-uix-tooltip" id="watch-like" data-button-toggle="true" data-button-action="yt.www.watch.actions.like" role="button" data-tooltip-text="I like this"> 
    <img class="yt-uix-button-icon yt-uix-button-icon-watch-like" src="//s.ytimg.com/yt/img/pixel-vfl3z5WfW.gif" alt="I like this"><span class="yt-uix-button-content">Like </span> 
</button> 

とCSSで宣言があります:

#watch-actions .yt-uix-button-icon-watch-like { 
    background: no-repeat url(//s.ytimg.com/yt/imgbin/www-refresh-vflmpZ5kj.png) -75px -102px; 
    width: 13px; 
    height: 15px; 
} 

WWW-リフレッシュvflmpZ5kj.pngはスプライトで、背景の宣言はでそれを配置します - サムスンアップアイコンの位置である75ピクセルと-102ピクセルです。

+0

treefaceありがとう、私は実際にそれを探して、独自の種類のCSSを使用していましたが、yt-uix-buttonクラスの他にyt-uix-button-デフォルトクラスも! - 彼らが最近変わったもの。 –

1

私はyoutube.comのユーザースクリプトを作成し、YouTubeページの他のボタンと同じルックアンドフィールのボタンを挿入したいと考えています。

ボタンにクラスyt-uix-button yt-uix-button-defaultを与えて、他のボタンと同じ外観と感じるようにします。自分のYouTubeユーザースクリプトでも同じことをしています。

過去には機能していましたが、突然停止しました。

ええ、彼らは最後の大きなアップデートの間に少しでもクラス名を変更しました。

以前は、あなたのコメントで指摘したとおり、クラスはちょうどyt-uix-buttonだったので、yt-uix-button-defaultも追加する必要があります。


ここに私のカスタムボタンは、ちょうどそれが動作を示すために、です;)

enter image description here

+0

こんにちはGGG、ありがとう。私はまた、CSSのクラス名が変更されていることに気付きましたが、変更してもそれは機能しませんでした。私はもう一度やり直します。私はすでにyt-uix-buttonを使っていました。 –

+0

@PiyushSoni 'class =" yt-uix-button yt-uix-button-default "'私のために働く、私はちょうどそれをテストしました。それは 'yt-uix-button-default'なしでは動作しません。 –

+0

あなたは素晴らしいです! :)はい、私は 'デフォルト'のものを追加するとすぐに、以前と同じように動作し始めました!素晴らしい。ありがとう非常に:) –

関連する問題