css - displaying part of an image with jquery -
i doing visualization, , calculations can return fractions (e.g. 23.43, 4.3, 39.79,...). need show icons every integer in result (e.g. 23 -> 23 icons, 4--> 4 icons, 39 --> 39 icons).
now should break icons of fraction part, maybe in decimals, possibly down quarters. e.g. 23.43 --> 23 icons , 0.4 (or 0.5 if quarters) of horizontal part of icon, 4.3 --> 4 icons , 0.3 (or 0.25) of x part of icon, 39.79 --> 39 icons , 0.8 (or 0.75) of x part of icon, , on.
how this? saw approaches using backgrounds css, doesn't need. i'd prefer jquery way of doing it.
edit: here image of trying do
i set image background-image
of <div>
, , set width
multiple of image's width (eg. 23.4 * width) , background-repeat
repeat-x
.
if refuse usage of background, set overflow
hidden
, use loop
in js document.createelement
specified number of image
s inside div
. way, last 1 can 'half-visible' overflow.
edit:
in order solve this, need set line break. example, seeing image 21px wide, let's maximum number of images in 1 line 20 (840px wide).
let's then, need place 75.5 images.
first, create div
width of 840px , put 75.5 - (75.5 % 20)
images there. should create 3 rows of images. put rest (75.5 % 20 = 15.5 => 16 images
) in new div
width of 15.5 * 21
px , overflow hidden in previous case. again, last 16th image half visible.
edit 2:
if width of images varies, there can new technique: use 1 div
fixed width like. put images it. add new div
after last image
opaque background in colour of pages's:
html:
<div id="wrapper"> <div id="overlay"> </div>
css:
#wrapper { background: blue; width: 700px; } #overlay { background: blue; display: inline-block; position: relative; }
js:
var count = 75.5, ceil = math.ceil(count), image = 'http://jsfiddle.net/img/logo.png', overlay = $('#overlay'), wrapper = $('#wrapper'), hide = ceil - count; for(var = 0; < ceil; i++) { var img = document.createelement('img'); img.src = image; wrapper.prepend(img); } overlay.css({ 'width': img.clientwidth, 'left': -img.clientwidth * hide, 'height': img.clientheight, });
Comments
Post a Comment