3

黒のオーバーレイ(ある程度の不透明度)を備えたiPhoneのスクリーンショット(jpegの背景)があります。黒い背景をオーバーライドして、より見やすくするために、特定の半径を持つ丸いステンシルを動的に追加する必要があります。

動的とは、x、y 座標を必要なものに設定する必要があることを意味します。

CSS

#img {
    display: block;
    width: 480px;
    height: 720px;
    background: url('iphone.jpg') no-repeat center center
}
div.overlay {
    display: block;
    width: 480px;
    height: 720px;
    background-color: #000;
    filter: alpha(opacity=65);
    -khtml-opacity: 0.65;
    -moz-opacity: 0.65;
    opacity: 0.65;
}
div.stencil {
    /* ??? */
}

HTML

<div id="img">
    <div class="overlay"></div>
    <div class="stencil"></div>
</div>

ここに私が達成しようとしているものの例があります:

黒いオーバーレイが表示された iPhone のスクリーンショット

出来ますか?ありがとう。

4

1 に答える 1

3

2 つの例を示します。DIV をオーバーレイとして使用し、HTML5キャンバスを使用します。

DIV オーバーレイ:

LIVE DEMO

各コーナーに 4 つの 1/4 円の穴がある大きな正方形の不透明な .png を作成することをお勧めします。
の繰り返し背景として設定し.overlayます。その DIV を設定するよりもpackground-position: Xpx , Ypx;、正確な中心にある任意の領域を完全にターゲットにすることができます。

HTML:

<div id="img">
    <div class="overlay"></div>
</div>

CSS:

#img {    
    position:relative;
    overflow:hidden;
    width: 199px;
    height: 390px;
    background: url('iphone.jpg') no-repeat center center;
}

.overlay {
    position:absolute;
    height:100%;
    width:100%;
    background:url(http://i.stack.imgur.com/ohb0l.png);
    /* PLAY HERE: */
    background-position: 120px 130px;
}

ここに画像の説明を入力


それ以外の場合はキャンバスを使用してください:)

globalCompositeOperation = 'destination-out';トリックを行います:

次のコードは、画像の上にマスクを配置し、マスクから円弧を削除します。

LIVE DEMO

HTML:

<canvas id="iphone"></canvas>

JS:

var cirsleSize = 30 ,  // circle radius
    circleX = 120 ,    // X pos
    circleY = 130 ;    // Y pos

// ---------------------------------------------

var canvas = document.getElementById('iphone'),
    ctx = canvas.getContext('2d'),
    img = new Image();

canvas.height=390;
canvas.width=199;

img.onload = function() {

   ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
   ctx.fillStyle = "rgba(255,255,255,0)";
   ctx.fillRect(0, 0, canvas.width, canvas.height);
   var mask = document.createElement('canvas');
   mask.width = canvas.width;
   mask.height = canvas.height;
   var maskCtx = mask.getContext('2d');
   maskCtx.fillStyle = "rgba(0,0,0,0.6)";
   maskCtx.fillRect(0, 0, mask.width, mask.height);
   maskCtx.globalCompositeOperation = 'destination-out';
   maskCtx.arc(circleX, circleY, cirsleSize, 0, 2*Math.PI);
   maskCtx.fill();
   ctx.drawImage(mask,0,0);
      
};

img.src = 'iphone_199x390.jpg';
于 2013-06-06T22:05:22.900 に答える