Advertisement
Guest User

Untitled

a guest
Feb 21st, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <html>
  2.   <head>
  3.     <meta charset="UTF-8">
  4.  
  5.     <meta name="title" content="travelus">
  6.     <meta name="description" content="edi-edi-travelus">
  7.     <meta name="author" content="upisfree">
  8.     <meta name="copyright" content="upisfree">
  9.  
  10.     <meta name="apple-mobile-web-app-capable" content="yes">
  11.     <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  12.  
  13.     <link rel="icon" type="image/png" href="./favicon.png" sizes="32x32">
  14.  
  15.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
  16.     <meta name="viewport" content="width=device-width, user-scalable=no">
  17.  
  18.     <title>yura-prostavlyayetza</title>
  19.    
  20.     <style>
  21. .container {
  22.   text-align: center;
  23. }
  24.  
  25. .container img {
  26.   display: inline-block;
  27. }
  28.  
  29.  
  30. .selection-container {
  31.   position: absolute;
  32.   top: 0;
  33.   left: 0;
  34. }
  35.  
  36. .selection-view {
  37.   position: absolute;
  38.   border: 3px solid rgba(0, 0, 0, 0.5);
  39.   background: rgba(0, 0, 0, 0.25);
  40. }
  41.    </style>
  42.   </head>
  43.  
  44.   <body>
  45.     <h1>yura-prostavlyayetza</h1>
  46.  
  47.     <div class="container">
  48.       <img src="https://pp.userapi.com/c621126/v621126982/97f9/Md7037IVaAc.jpg">
  49.       <img class="selection" src="https://pp.userapi.com/c621126/v621126982/97f9/Md7037IVaAc.jpg">
  50.     </div>
  51.  
  52.     <script>
  53. var Selection = {
  54.   init: function() {
  55.     var els = document.getElementsByClassName(this.baseClass);
  56.  
  57.     document.getElementsByTagName('body')[0].addEventListener('mouseup', this.mouseup.bind(this));
  58.  
  59.     for (var i = 0; i < els.length; i++) {
  60.       els[i].addEventListener('mousedown', this.mousedown.bind(this));
  61.       els[i].addEventListener('mousemove', this.mousemove.bind(this)); // TODO: переделать через requestAnimationFrame
  62.     }
  63.  
  64.     this._selectionBlocksContainer = document.createElement('div');
  65.     this._selectionBlocksContainer.className = this.containerClass;
  66.     document.getElementsByTagName('body')[0].appendChild(this._selectionBlocksContainer);
  67.   },
  68.   // TODO: переделать через requestAnimationFrame
  69.   // tick: function() {
  70.   //   if (this._isMouseDown) {
  71.   //     var s = this._selectionBlocks[this._selectionBlocks.length - 1];
  72.   //     // s.style.width =
  73.   //   }
  74.   // },
  75.   mousedown: function(e) {
  76.     e.preventDefault();
  77.  
  78.     this._isMouseDown = true;
  79.  
  80.     var s = document.createElement('div');
  81.     s.className = this.selectionViewClass;
  82.     s.style.left = e.pageX;
  83.     s.style.top = e.pageY;
  84.     this._selectionBlocksContainer.appendChild(s);
  85.     this._selectionBlocks.push(s);
  86.  
  87.     this._startX = e.pageX;
  88.     this._startY = e.pageY;
  89.   },
  90.   mouseup: function(e) {
  91.     this._isMouseDown = false;
  92.  
  93.     console.log('up!');
  94.   },
  95.   mousemove: function(e) {
  96.     console.log(this._isMouseDown);
  97.  
  98.     if (this._isMouseDown) {
  99.       var s = this._selectionBlocks[this._selectionBlocks.length - 1];
  100.       s.style.width = e.pageX - this._startX;
  101.       s.style.height = e.pageY - this._startY;
  102.     }
  103.   },
  104.  
  105.   // config
  106.   baseClass: 'selection',
  107.   multipleSelectionClass: 'multiple',
  108.   selectionViewClass: 'selection-view',
  109.   containerClass: 'selection-container',
  110.  
  111.   // tmp
  112.   _isMouseDown: false,
  113.   _startX: 0,
  114.   _startY: 0,
  115.   _selectionBlocks: [],
  116.   _selectionBlocksContainer: null,
  117. }
  118.  
  119. Selection.init();
  120.     </script>
  121.   </body>
  122. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement