grid-main.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /**
  2. * 注册命名空间:baidu.grid
  3. */
  4. baidu.namespace.register("baidu.grid");
  5. /**
  6. * 栅格相关处理
  7. * @author zhaoxianlie
  8. */
  9. baidu.grid = (function(){
  10. /**
  11. * 创建栅格
  12. */
  13. var _createGrid = function(){
  14. var box = jQuery('#fe-helper-box');
  15. if(box[0]) { //已经有栅格,则移除
  16. box.remove();
  17. }
  18. //没有栅格,则创建
  19. var gridPng = chrome.extension.getURL('static/img/grid.png');
  20. var $win = jQuery(window);
  21. var $body = jQuery('body');
  22. jQuery('<div id="fe-helper-box"></div>').appendTo('body').css({
  23. position:'static'
  24. });
  25. jQuery('<div id="fe-helper-grid"></div>').appendTo('#fe-helper-box').css({
  26. 'background' : 'url(' + gridPng + ') repeat',
  27. width : $body.width(),
  28. height : Math.max($win.height() , $body.height())
  29. }).mousemove(function(e){
  30. var pos = {};
  31. try{
  32. pos = document.getElementsByTagName('body')[0].getBoundingClientRect();
  33. }catch(err){
  34. pos = {left:0,top:0};
  35. }
  36. //虚线框
  37. jQuery('#fe-helper-g-pos').show().css({
  38. width : e.pageX - pos.left,
  39. height : e.pageY
  40. });
  41. var _t = Math.min(e.pageY,jQuery(window).height() + jQuery('body').scrollTop() - 40) ;
  42. var _l = Math.min(e.pageX,jQuery(window).width() + jQuery('body').scrollLeft() - 200) + 5 - pos.left;
  43. //坐标tooltip
  44. jQuery('#fe-helper-gp-info').show().css({
  45. top : _t,
  46. left : _l
  47. }).html('top = ' + e.pageY + ' px ,left = ' + e.pageX + ' px');
  48. }).mouseout(function(e){
  49. jQuery('#fe-helper-g-pos,#fe-helper-gp-info').hide();
  50. })
  51. //为页面注册按键监听
  52. jQuery('body').keydown(function(e){
  53. if(jQuery('#fe-helper-box')[0]) {
  54. if(e.which == 27) { //ESC
  55. jQuery('#fe-helper-box').remove();
  56. }
  57. }
  58. });
  59. //window.onresize
  60. jQuery(window).resize(function(){
  61. if(jQuery('#fe-helper-box')[0]) {
  62. jQuery('#fe-helper-grid').css({
  63. width : Math.max($win.width() , $body.width()),
  64. height : Math.max($win.height() , $body.height())
  65. })
  66. }
  67. });
  68. jQuery('<div id="fe-helper-g-pos"></div><div id="fe-helper-gp-info"></div>').appendTo('#fe-helper-box');
  69. jQuery('<span id="fe-helper-btn-close-grid">关闭栅格层</span>')
  70. .appendTo('#fe-helper-box').click(function(){
  71. jQuery('#fe-helper-box').remove();
  72. });
  73. //创建页面标尺
  74. _createPageRuler();
  75. };
  76. /**
  77. * 创建页面标尺
  78. */
  79. var _createPageRuler = function(){
  80. if(!jQuery('#fe-helper-box')[0]) {
  81. jQuery('<div id="fe-helper-box"></div>').appendTo('body');
  82. }
  83. jQuery('<div id="fe-helper-ruler-top"></div><div id="fe-helper-ruler-left"></div>').appendTo('#fe-helper-box');
  84. var _t = 0,_h = 20,_w = 20;
  85. var $win = jQuery(window);
  86. var $body = jQuery('body');
  87. var $width = Math.max($win.width() , $body.width());
  88. var $height = Math.max($win.height() , $body.height());
  89. for(var i = 30;i <= $width;i += 10) {
  90. _t = (i % 50) ? 10 : 0;
  91. jQuery('<div class="h-line"></div>').appendTo('#fe-helper-ruler-top').css({
  92. left : i - 1,
  93. top : _t + 5,
  94. height : _h - _t - 5
  95. });
  96. if(_t == 0) {
  97. jQuery('<div class="h-text">' + i + '</div>').appendTo('#fe-helper-ruler-top').css({
  98. left : i + 2
  99. });
  100. }
  101. }
  102. for(var i = 0;i <= $height;i += 10) {
  103. _l = (i % 50) ? 10 : 0;
  104. jQuery('<div class="v-line"></div>').appendTo('#fe-helper-ruler-left').css({
  105. left : _l + 5,
  106. top : i - 1,
  107. width : _w - _l - 5
  108. });
  109. if(_l == 0) {
  110. jQuery('<div class="v-text">' + i + '</div>').appendTo('#fe-helper-ruler-left').css({
  111. top : i + 2
  112. });
  113. }
  114. }
  115. //处理scroll的时候,标尺跟着移动
  116. jQuery(window).scroll(function(e){
  117. if(jQuery('#fe-helper-box')[0]) {
  118. //水平标尺定位
  119. jQuery('#fe-helper-ruler-top').css('left',0 - jQuery('body').scrollLeft());
  120. //垂直标尺
  121. jQuery('#fe-helper-ruler-left').css('top',0 - jQuery('body').scrollTop());
  122. }
  123. });
  124. };
  125. /**
  126. * 执行栅格系统检测
  127. */
  128. var _detect = function(callback){
  129. //创建栅格
  130. _createGrid();
  131. //执行回调
  132. if(callback && typeof callback == "function") {
  133. callback.call(null);
  134. }
  135. };
  136. return {
  137. detect : _detect
  138. };
  139. })();