scss チップラボ:deveiceLightイベントを使ってみる

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scss チップラボ:deveiceLightイベントを使ってみる相关的知识,希望对你有一定的参考价值。

チップラボ: deveiceLightイベントを使ってみる
-----------------------------
画像を読み込む。
AndroidのFireFox限定で暗い時にだけ、画像が見えるようになる。明るい場所では体を動かそう

A [Pen](https://codepen.io/kiyoshidainagon/pen/WOawYx) by [Shinnosuke](http://codepen.io/kiyoshidainagon) on [CodePen](http://codepen.io/).

[License](https://codepen.io/kiyoshidainagon/pen/WOawYx/license).
#wrapperMan
    input(type="file", id="selectFile")
    canvas#myCanvas
    #text
import Sample from './lib/Sample';
import $ from 'jquery';

const sample = new Sample({
    name: 'world'
});

const wrapper = document.getElementById('wrapperMan');
const canvas = document.getElementById('myCanvas');
const fileObject = document.getElementById('selectFile');


class ShowingImageDark {
  constructor(opts={}) {
    this.canvas = opts.target;
    this.canvas.width = wrapper.clientWidth;
    this.canvas.height = wrapper.clientHeight;
    this.ctx = this.canvas.getContext('2d');
    this.image = opts.image;
    this.dataUrl = '';
    this.initListener();
    this.lightVal = 0;
  }
  initListener() {
    this.image.addEventListener('change', () => {
      const file = this.image.files;
      const reader = new FileReader();
      reader.readAsDataURL(file[0]);
      reader.addEventListener('load', () => {
        this.dataUrl = reader.result;
        this.canvasFunc(this.dataUrl);
      });
    });
    window.addEventListener('devicelight', (event) => {
      this.lightVal = event.value;
      const text = document.getElementById('text');
      text.innerHTML = `${event.value} : ${this.value}`;
    });
  }
  canvasFunc(_data) {
    const img = new Image();
    img.src = _data;
    img.addEventListener('load', () => {
      this.drawingCanvas(img);
    });
  }
  drawingCanvas(_img) {
    const that = this;
    function loop() {
        that.ctx.clearRect(0, 0, that.canvas.width, that.canvas.height);
        if(that.lightVal > 300) {
            that.ctx.globalAlpha = 0;
        } else {
            that.ctx.globalAlpha = 1 - that.setRange(that.lightVal, 0, 300, 0, 1);
        }
        that.value = that.ctx.globalAlpha;
        that.ctx.drawImage(_img, 0, 0, that.canvas.width, that.canvas.width * _img.height / _img.width );
        window.requestAnimationFrame(loop);
    }
    window.requestAnimationFrame(loop);

  }
  setRange(value, low1, high1, low2, high2) {
    return low2 + (high2 - low2) * (value - low1) / (high1 - low1);
  }
}
const showingImageDark = new ShowingImageDark({
  target: canvas,
  image: fileObject
});
body {
    background: #000;
}
#wrapperMan {
  width: 100%;
  height: 100vh;
}
#selectFile {
  position: absolute;
  top: 0;
  left: 0;
}

以上是关于scss チップラボ:deveiceLightイベントを使ってみる的主要内容,如果未能解决你的问题,请参考以下文章

csharp [WPF]文字が见切れたらツールチップで全文字列表示するテキストボックス

scss スプライト生成,座标取得,视网膜対応のSass.Compass关数のメモ

名探偵コナンロマンチックセレクション1

java ▼Gitの基本やコラボレート方法,マージコンフリクトについて

名探偵コナンロマンチックセレクション2

名探偵コナンロマンチックセレクション4