/** * jQuery.Ruler v0.9 * Add Photoshop-like rulers and mouse position to a container element using jQuery. * http://ruler.hilliuse.com * * Dual licensed under the MIT and GPL licenses. * Copyright 2013 Hillius Ettinoffe http://hilliuse.com */ ;(function( $ ){ $.fn.ruler = function(options) { var defaults = { vRuleSize: 18, hRuleSize: 18, showCrosshair : true, showMousePos: true };//defaults var settings = $.extend({},defaults,options); var hRule = '
', vRule = '
', corner = '
', vMouse = '
', hMouse = '
', mousePosBox = '
x: 50%, y: 50%
'; if (!Modernizr.touch) { // Mouse crosshair if (settings.showCrosshair) { $('body').append(vMouse, hMouse); } // Mouse position if (settings.showMousePos) { $('body').append(mousePosBox); } // If either, then track mouse position if (settings.showCrosshair || settings.showMousePos) { $(window).mousemove(function(e) { if (settings.showCrosshair) { $('.vMouse').css("top",e.pageY-($(document).scrollTop())+1); $('.hMouse').css("left",e.pageX+1); //-($(window).scrollTop()) } if (settings.showMousePos) { $('.mousePosBox').html("x:" + (e.pageX-settings.vRuleSize) + ", y:" + (e.pageY-settings.hRuleSize) ).css({ top: e.pageY-($(document).scrollTop()) + 16, left: e.pageX + 12 }); } }); } } //resize $(window).resize(function(e){ var $hRule = $('.hRule'); var $vRule = $('.vRule'); $hRule.empty(); $vRule.empty().height(0).outerHeight($vRule.parent().outerHeight()); // Horizontal ruler ticks var tickLabelPos = settings.vRuleSize; var newTickLabel = ""; while ( tickLabelPos <= $hRule.width() ) { if ((( tickLabelPos - settings.vRuleSize ) %50 ) == 0 ) { newTickLabel = "
" + ( tickLabelPos - settings.vRuleSize ) + "
"; $(newTickLabel).css( "left", tickLabelPos+"px" ).appendTo($hRule); } else if ((( tickLabelPos - settings.vRuleSize ) %10 ) == 0 ) { newTickLabel = "
"; $(newTickLabel).css("left",tickLabelPos+"px").appendTo($hRule); } else if ((( tickLabelPos - settings.vRuleSize ) %5 ) == 0 ) { newTickLabel = "
"; $(newTickLabel).css( "left", tickLabelPos+"px" ).appendTo($hRule); } tickLabelPos = (tickLabelPos + 5); }//hz ticks // Vertical ruler ticks tickLabelPos = settings.hRuleSize; newTickLabel = ""; while (tickLabelPos <= $vRule.height()) { if ((( tickLabelPos - settings.hRuleSize ) %50 ) == 0) { newTickLabel = "
" + ( tickLabelPos - settings.hRuleSize ) + "
"; $(newTickLabel).css( "top", tickLabelPos+"px" ).appendTo($vRule); } else if (((tickLabelPos - settings.hRuleSize)%10) == 0) { newTickLabel = "
"; $(newTickLabel).css( "top", tickLabelPos+"px" ).appendTo($vRule); } else if (((tickLabelPos - settings.hRuleSize)%5) == 0) { newTickLabel = "
"; $(newTickLabel).css( "top", tickLabelPos+"px" ).appendTo($vRule); } tickLabelPos = ( tickLabelPos + 5 ); }//vert ticks });//resize return this.each(function() { var $this = $(this); // Attach rulers // Should not need 1 min padding-top of 1px but it does // will figure it out some other time $this.css("padding-top", settings.hRuleSize + 1 + "px"); if (settings.hRuleSize > 0) { $(hRule).height(settings.hRuleSize).prependTo($this); } if (settings.vRuleSize > 0) { var oldWidth = $this.outerWidth(); $this.css("padding-left", settings.vRuleSize + 1 + "px").outerWidth(oldWidth); $(vRule).width(settings.vRuleSize).height($this.outerHeight()).prependTo($this); } if ( (settings.vRuleSize > 0) && (settings.hRuleSize > 0) ) { $(corner).css({ width: settings.vRuleSize, height: settings.hRuleSize }).prependTo($this); } var $hRule = $this.children('.hRule'); var $vRule = $this.children('.vRule'); // Horizontal ruler ticks var tickLabelPos = settings.vRuleSize; var newTickLabel = ""; while ( tickLabelPos <= $hRule.width() ) { if ((( tickLabelPos - settings.vRuleSize ) %50 ) == 0 ) { newTickLabel = "
" + ( tickLabelPos - settings.vRuleSize ) + "
"; $(newTickLabel).css( "left", tickLabelPos+"px" ).appendTo($hRule); } else if ((( tickLabelPos - settings.vRuleSize ) %10 ) == 0 ) { newTickLabel = "
"; $(newTickLabel).css("left",tickLabelPos+"px").appendTo($hRule); } else if ((( tickLabelPos - settings.vRuleSize ) %5 ) == 0 ) { newTickLabel = "
"; $(newTickLabel).css( "left", tickLabelPos+"px" ).appendTo($hRule); } tickLabelPos = (tickLabelPos + 5); }//hz ticks // Vertical ruler ticks tickLabelPos = settings.hRuleSize; newTickLabel = ""; while (tickLabelPos <= $vRule.height()) { if ((( tickLabelPos - settings.hRuleSize ) %50 ) == 0) { newTickLabel = "
" + ( tickLabelPos - settings.hRuleSize ) + "
"; $(newTickLabel).css( "top", tickLabelPos+"px" ).appendTo($vRule); } else if (((tickLabelPos - settings.hRuleSize)%10) == 0) { newTickLabel = "
"; $(newTickLabel).css( "top", tickLabelPos+"px" ).appendTo($vRule); } else if (((tickLabelPos - settings.hRuleSize)%5) == 0) { newTickLabel = "
"; $(newTickLabel).css( "top", tickLabelPos+"px" ).appendTo($vRule); } tickLabelPos = ( tickLabelPos + 5 ); }//vert ticks });//each };//ruler })( jQuery );