2014-02-06 6 views
4

У меня есть изображение, которое имеет много цветов градиента. Он прокручивается на странице. Поэтому, когда цвет изображения останавливается в центре страницы, изменяется значение цвета эскиза. Как это сделать?Как изменить цвет div при прокрутке градиента?

Я не уверен, поэтому я отправляю jsfiddle только с html и css.

JSFIDDLE

//code 
#colors{ 

    width:123px; 
    height:1360px ; 
    background-image:url('http://s26.postimg.org/p4x2on37t/bgimage.jpg'); 
} 

enter image description here

+0

Я не вижу полоса прокрутки на палитре ... или вы спрашиваете у чтобы сделать один? –

+0

нет необходимости прокрутки. –

+0

И как вы ожидаете, что мы получим цвет от изображения? Для этого потребуется холст и довольно сложный код, который вы должны попытаться написать себе. – adeneo

ответ

2

Что-то подобное должно получить цвет и установить его на эскизе, как вы прокручивать

var bg = $('#colors').css('background-image').replace(/(url\(|\)|\")/g,''); 
var img = new Image(); 
img.onload = function() { 
    console.log('loaded') 
    var canvas = $('<canvas />').get(0); 
    canvas.width = img.width; 
    canvas.height = img.height; 
    var ctx = canvas.getContext('2d'); 
    ctx.drawImage(img, 0, 0, img.width, img.height); 

    $('#wrapper').on('scroll', function() { 
     console.log('test') 
     var top  = $(this).scrollTop(); 
     var height = $(this).outerHeight(); 
     var x   = (height/2) + top; 
     var pixelData = canvas.getContext('2d').getImageData(10, x, 1, 1).data; 
     console.log(pixelData) 

     $('#preview').css('background', 'rgb('+pixelData[0]+', '+pixelData[1]+', '+pixelData[2]+')') 
    }).trigger('scroll'); 
} 
img.src = bg; 
if (img.complete) img.onload(); 

FIDDLE

+0

thank u. это работает только в хроме. не работает в mozilla и IE. Невозможно выбрать цвет из фонового изображения? и почему вы конвертировали jpeg-образ в другой формат. Не могли бы вы объяснить. –

+0

Вы не можете использовать изображение из другого домена в холсте, как это из-за той же политики происхождения, поэтому мне пришлось преобразовать изображение в Base 64, чтобы он работал в JSFiddle, но если изображение находится в том же домене в вашем сайт, вы можете просто использовать изображение, вам не нужно использовать Base 64. – adeneo

+0

Кажется, что другие браузеры не запускают событие onload, попробуйте его на вашей странице с URL-адресом изображения, а не базой 64, так как это похоже, вызывает проблему. – adeneo

Смежные вопросы