0

ウェイトリフティングバーを表す画像があります。

ここに画像の説明を入力してください

バーの左側と右側の両方に フルブロックUnicode文字(プレートを表すなど)を配置したいと思います。

私は3つのdivでこれを行おうとしています:

  1. バーベル左:バーの左側にあるプレート、右寄せ
  2. バーベルミドル:何も空白のままにしない
  3. バーベル右:バーの右側にあるプレート、左揃え

これは、プレートを使用したdivの専門的な表現です。 ここに画像の説明を入力してください

フロートとdiv幅のパーセンテージでこれを行うことができると思いましたが、運がありません。

これがjsフィドルでの私の最近の試みです。


アップデート

希望する答えが得られましたが、コメントに基づいて、Canvasを使用する方が良い方法であることがわかりました。

私はこのhtmlでより良い結果を達成することができました:

<div data-role="page" id="p1">
    <div  data-role="header"><h1>Header Page 1</h1></div>

    <div  data-role="content">
        <div class="bar-canvas">
            <canvas id="_barCanvas"></canvas>
        </div>
    </div>
    </div>

    <div  data-role="footer"><h4>Footer</h4></div>
</div> 

そしてこのjs:

var WIDTH_FACTOR    =    .8; //80% of screen size
var HEIGHT_FACTOR    =    .1; //10% of height size
var WEIGHT_SPACER    =     2;
var ctx = $("#_barCanvas")[0].getContext("2d");

ctx.canvas.width  = (window.innerWidth    *    WIDTH_FACTOR);
ctx.canvas.height = (window.innerHeight    *    HEIGHT_FACTOR);

var bar_width    =    ctx.canvas.width * .8;
var bar_height    =    ctx.canvas.height * .1;
var bar_x        =    (ctx.canvas.width - bar_width)
var bar_y        =    (ctx.canvas.height * .5)    

var plate_stop_width    =    bar_width * .01;
var plate_stop_height    =    bar_height * 4;
var plate_stop_y        =    bar_y - ((plate_stop_height - (bar_y / 2)));
var rubber_plate_height    =    bar_height * 8;
var rubber_plate_y        =    (ctx.canvas.height / 2) - (rubber_plate_height/2) + (bar_height/2);
var small_plate_height    =    plate_stop_height;
var small_plate_y        =    plate_stop_y;
var left_plate_stop_x    =    bar_x + (bar_width * .3);
var right_plate_stop_x    =    bar_x + (bar_width * .7);

//Draw Bar
ctx.fillStyle = "black";
ctx.fillRect (bar_x, bar_y, bar_width, bar_height);

//Draw Plate stop left
ctx.fillStyle = "black";
ctx.fillRect (left_plate_stop_x, plate_stop_y, plate_stop_width, plate_stop_height);

//Draw Plate stop right
ctx.fillStyle = "black";
ctx.fillRect (right_plate_stop_x, plate_stop_y, plate_stop_width, plate_stop_height);

//Draw 45 lb Plates
var plate_width      = bar_width * .04;
var current_plate_height     = 0;

ctx.fillStyle    =    'red';
ctx.fillRect(left_plate_stop_x - plate_width, rubber_plate_y, plate_width, rubber_plate_height);

ctx.fillStyle    =    'red';
ctx.fillRect(right_plate_stop_x + plate_stop_width, rubber_plate_y, plate_width, rubber_plate_height);
4

1 に答える 1

1

マークアップとCSSを少し変更しました。

デモ(Chrome 22でのみテスト済み)

HTML:

<div data-role="page" id="p1"> 
    <div  data-role="header"><h1>Header Page 1</h1></div> 

    <div  data-role="content">
    <div class="barbell-background">
        <div class="barbell-left">&#x2588;</div>
        <div class="barbell-right">&#x2588;</div>
    </div>
    </div> 

    <div  data-role="footer"><h4>Footer</h4></div> 
</div> 

CSS:

.barbell-background
{
    font-size:3em;
    line-height:1.4em;
    height:1.4em;
    position:relative;

    background-image:url('http://i.stack.imgur.com/ZmFY4.png');
    background-repeat:    no-repeat;
    background-position: center;
}
.barbell-left, .barbell-right
{
    position:absolute;
    color:red;
}
.barbell-left
{
    right:50%;
    margin-right:146px;
}
.barbell-right
{
    left:50%;
    margin-left:145px;
}​

Joachim Sauerが言ったように、赤い四角にdivを使用する方がおそらく簡単で一貫性があります...

別のデモ

HTML:

<div data-role="page" id="p1"> 
    <div  data-role="header"><h1>Header Page 1</h1></div> 

    <div  data-role="content">
    <div class="barbell-background">
        <div class="barbell-left"></div>
        <div class="barbell-right"></div>
    </div>
    </div> 

    <div  data-role="footer"><h4>Footer</h4></div> 
</div> 

CSS:

.barbell-background
{
    font-size:3em;
    line-height:1.3em;
    height:1.3em;
    position:relative;

    background-image:url('http://i.stack.imgur.com/ZmFY4.png');
    background-repeat:    no-repeat;
    background-position: center;
}
.barbell-left, .barbell-right
{
    position:absolute;
    background:red;
    width:0.5em;
    height:100%;
}
.barbell-left
{
    right:50%;
    margin-right:146px;
}
.barbell-right
{
    left:50%;
    margin-left:144px;
}​

どちらのデモでも、ピクセルが「ぐらつく」ことがわかります。赤い四角の内容を知っているので、修正してみることができます。

于 2012-10-08T13:39:03.227 に答える