37 | The lightest way to include placeholder pictures in your designs.
38 | All images are lovingly served up as sub-kilobyte, fully optimized
39 | Scalable Vector Graphics (SVG) in any size or color you need.
40 | You can even add a short label to keep track of what goes
41 | where in your designs and mockups.
42 |
The placeholder.pics service uses a simple URL format to define the size, colours, and label used for your image.
87 | The format that image URLs must follow is:
88 |
89 |
90 |
The URL must start with /svg/
91 |
URLs that specify only a single dimension will be square, for example a request to /svg/100 will return an svg that is 100 pixels wide and 100 pixels high
92 |
Width and height is specified via WIDTHxHEIGHT
93 |
/svg/100x100
94 |
Background color can be either a single 3 or 6 character hex color code, or a gradient by defining a start color and stop color with START-STOP
95 |
/svg/100x100/888888
96 |
Foreground text and border color can be specified as a single 3 or 6 character hex color code or two colors separated by a dash TEXT-BORDER. Background color must be defined in order to set a foreground color
97 |
/svg/100x100/888888/EEE
98 |
A label can be defined using the last part of the URL. Labels should be short and take into account the size of the image being requested. Foreground and background colors must be specified first when using a label
99 |
/svg/100x100/888888/My Label
100 |
101 |
102 |
103 |
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/www/css/placeholder-embedded.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'placeholder';
3 | src: url('../font/placeholder.eot?10492122');
4 | src: url('../font/placeholder.eot?10492122#iefix') format('embedded-opentype'),
5 | url('../font/placeholder.svg?10492122#placeholder') format('svg');
6 | font-weight: normal;
7 | font-style: normal;
8 | }
9 | @font-face {
10 | font-family: 'placeholder';
11 | src: url('data:application/octet-stream;base64,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') format('woff'),
12 | url('data:application/octet-stream;base64,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') format('truetype');
13 | }
14 | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
15 | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
16 | /*
17 | @media screen and (-webkit-min-device-pixel-ratio:0) {
18 | @font-face {
19 | font-family: 'placeholder';
20 | src: url('../font/placeholder.svg?10492122#placeholder') format('svg');
21 | }
22 | }
23 | */
24 |
25 | [class^="icon-"]:before, [class*=" icon-"]:before {
26 | font-family: "placeholder";
27 | font-style: normal;
28 | font-weight: normal;
29 | speak: none;
30 |
31 | display: inline-block;
32 | text-decoration: inherit;
33 | width: 1em;
34 | margin-right: .2em;
35 | text-align: center;
36 | /* opacity: .8; */
37 |
38 | /* For safety - reset parent styles, that can break glyph codes*/
39 | font-variant: normal;
40 | text-transform: none;
41 |
42 | /* fix buttons height, for twitter bootstrap */
43 | line-height: 1em;
44 |
45 | /* Animation center compensation - margins should be symmetric */
46 | /* remove if not needed */
47 | margin-left: .2em;
48 |
49 | /* you can be more comfortable with increased icons size */
50 | /* font-size: 120%; */
51 |
52 | /* Uncomment for 3D effect */
53 | /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
54 | }
55 | .icon-photo:before { content: '\e800'; } /* '' */
56 | .icon-twitter:before { content: '\e801'; } /* '' */
57 | .icon-github:before { content: '\e802'; } /* '' */
58 | .icon-linkedin:before { content: '\e803'; } /* '' */
--------------------------------------------------------------------------------
/www/js/jscolor.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * jscolor - JavaScript Color Picker
3 | *
4 | * @link http://jscolor.com
5 | * @license For open source use: GPLv3
6 | * For commercial use: JSColor Commercial License
7 | * @author Jan Odvarko
8 | *
9 | * See usage examples at http://jscolor.com/examples/
10 | */"use strict";window.jscolor||(window.jscolor=function(){var e={register:function(){e.attachDOMReadyEvent(e.init),e.attachEvent(document,"mousedown",e.onDocumentMouseDown),e.attachEvent(document,"touchstart",e.onDocumentTouchStart),e.attachEvent(window,"resize",e.onWindowResize)},init:function(){e.jscolor.lookupClass&&e.jscolor.installByClassName(e.jscolor.lookupClass)},tryInstallOnElements:function(t,n){var r=new RegExp("(^|\\s)("+n+")(\\s*(\\{[^}]*\\})|\\s|$)","i");for(var i=0;is[u]?-r[u]+n[u]+i[u]/2>s[u]/2&&n[u]+i[u]-o[u]>=0?n[u]+i[u]-o[u]:n[u]:n[u],-r[a]+n[a]+i[a]+o[a]-l+l*f>s[a]?-r[a]+n[a]+i[a]/2>s[a]/2&&n[a]+i[a]-l-l*f>=0?n[a]+i[a]-l-l*f:n[a]+i[a]-l+l*f:n[a]+i[a]-l+l*f>=0?n[a]+i[a]-l+l*f:n[a]+i[a]-l-l*f];var h=c[u],p=c[a],d=t.fixed?"fixed":"absolute",v=(c[0]+o[0]>n[0]||c[0]2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},onDocumentMouseDown:function(t){t||(t=window.event);var n=t.target||t.srcElement;n._jscLinkedInstance?n._jscLinkedInstance.showOnClick&&n._jscLinkedInstance.show():n._jscControlName?e.onControlPointerStart(t,n,n._jscControlName,"mouse"):e.picker&&e.picker.owner&&e.picker.owner.hide()},onDocumentTouchStart:function(t){t||(t=window.event);var n=t.target||t.srcElement;n._jscLinkedInstance?n._jscLinkedInstance.showOnClick&&n._jscLinkedInstance.show():n._jscControlName?e.onControlPointerStart(t,n,n._jscControlName,"touch"):e.picker&&e.picker.owner&&e.picker.owner.hide()},onWindowResize:function(t){e.redrawPosition()},onParentScroll:function(t){e.picker&&e.picker.owner&&e.picker.owner.hide()},_pointerMoveEvent:{mouse:"mousemove",touch:"touchmove"},_pointerEndEvent:{mouse:"mouseup",touch:"touchend"},_pointerOrigin:null,_capturedTarget:null,onControlPointerStart:function(t,n,r,i){var s=n._jscInstance;e.preventDefault(t),e.captureTarget(n);var o=function(s,o){e.attachGroupEvent("drag",s,e._pointerMoveEvent[i],e.onDocumentPointerMove(t,n,r,i,o)),e.attachGroupEvent("drag",s,e._pointerEndEvent[i],e.onDocumentPointerEnd(t,n,r,i))};o(document,[0,0]);if(window.parent&&window.frameElement){var u=window.frameElement.getBoundingClientRect(),a=[-u.left,-u.top];o(window.parent.window.document,a)}var f=e.getAbsPointerPos(t),l=e.getRelPointerPos(t);e._pointerOrigin={x:f.x-l.x,y:f.y-l.y};switch(r){case"pad":switch(e.getSliderComponent(s)){case"s":s.hsv[1]===0&&s.fromHSV(null,100,null);break;case"v":s.hsv[2]===0&&s.fromHSV(null,null,100)}e.setPad(s,t,0,0);break;case"sld":e.setSld(s,t,0)}e.dispatchFineChange(s)},onDocumentPointerMove:function(t,n,r,i,s){return function(t){var i=n._jscInstance;switch(r){case"pad":t||(t=window.event),e.setPad(i,t,s[0],s[1]),e.dispatchFineChange(i);break;case"sld":t||(t=window.event),e.setSld(i,t,s[1]),e.dispatchFineChange(i)}}},onDocumentPointerEnd:function(t,n,r,i){return function(t){var r=n._jscInstance;e.detachGroupEvents("drag"),e.releaseTarget(),e.dispatchChange(r)}},dispatchChange:function(t){t.valueElement&&e.isElementType(t.valueElement,"input")&&e.fireEvent(t.valueElement,"change")},dispatchFineChange:function(e){if(e.onFineChange){var t;typeof e.onFineChange=="string"?t=new Function(e.onFineChange):t=e.onFineChange,t.call(e)}},setPad:function(t,n,r,i){var s=e.getAbsPointerPos(n),o=r+s.x-e._pointerOrigin.x-t.padding-t.insetWidth,u=i+s.y-e._pointerOrigin.y-t.padding-t.insetWidth,a=o*(360/(t.width-1)),f=100-u*(100/(t.height-1));switch(e.getPadYComponent(t)){case"s":t.fromHSV(a,f,null,e.leaveSld);break;case"v":t.fromHSV(a,null,f,e.leaveSld)}},setSld:function(t,n,r){var i=e.getAbsPointerPos(n),s=r+i.y-e._pointerOrigin.y-t.padding-t.insetWidth,o=100-s*(100/(t.height-1));switch(e.getSliderComponent(t)){case"s":t.fromHSV(null,o,null,e.leavePad);break;case"v":t.fromHSV(null,null,o,e.leavePad)}},_vmlNS:"jsc_vml_",_vmlCSS:"jsc_vml_css_",_vmlReady:!1,initVML:function(){if(!e._vmlReady){var t=document;t.namespaces[e._vmlNS]||t.namespaces.add(e._vmlNS,"urn:schemas-microsoft-com:vml");if(!t.styleSheets[e._vmlCSS]){var n=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","rect","roundrect","oval","arc","image"],r=t.createStyleSheet();r.owningElement.id=e._vmlCSS;for(var i=0;i=3&&(s=r[0].match(i))&&(o=r[1].match(i))&&(u=r[2].match(i))){var a=parseFloat((s[1]||"0")+(s[2]||"")),f=parseFloat((o[1]||"0")+(o[2]||"")),l=parseFloat((u[1]||"0")+(u[2]||""));return this.fromRGB(a,f,l,t),!0}}return!1},this.toString=function(){return(256|Math.round(this.rgb[0])).toString(16).substr(1)+(256|Math.round(this.rgb[1])).toString(16).substr(1)+(256|Math.round(this.rgb[2])).toString(16).substr(1)},this.toHEXString=function(){return"#"+this.toString().toUpperCase()},this.toRGBString=function(){return"rgb("+Math.round(this.rgb[0])+","+Math.round(this.rgb[1])+","+Math.round(this.rgb[2])+")"},this.isLight=function(){return.213*this.rgb[0]+.715*this.rgb[1]+.072*this.rgb[2]>127.5},this._processParentElementsInDOM=function(){if(this._linkedElementsProcessed)return;this._linkedElementsProcessed=!0;var t=this.targetElement;do{var n=e.getStyle(t);n&&n.position.toLowerCase()==="fixed"&&(this.fixed=!0),t!==this.targetElement&&(t._jscEventsAttached||(e.attachEvent(t,"scroll",e.onParentScroll),t._jscEventsAttached=!0))}while((t=t.parentNode)&&!e.isElementType(t,"body"))};if(typeof t=="string"){var h=t,p=document.getElementById(h);p?this.targetElement=p:e.warn("Could not find target element with ID '"+h+"'")}else t?this.targetElement=t:e.warn("Invalid target element: '"+t+"'");if(this.targetElement._jscLinkedInstance){e.warn("Cannot link jscolor twice to the same element. Skipping.");return}this.targetElement._jscLinkedInstance=this,this.valueElement=e.fetchElement(this.valueElement),this.styleElement=e.fetchElement(this.styleElement);var d=this,v=this.container?e.fetchElement(this.container):document.getElementsByTagName("body")[0],m=3;if(e.isElementType(this.targetElement,"button"))if(this.targetElement.onclick){var g=this.targetElement.onclick;this.targetElement.onclick=function(e){return g.call(this,e),!1}}else this.targetElement.onclick=function(){return!1};if(this.valueElement&&e.isElementType(this.valueElement,"input")){var y=function(){d.fromString(d.valueElement.value,e.leaveValue),e.dispatchFineChange(d)};e.attachEvent(this.valueElement,"keyup",y),e.attachEvent(this.valueElement,"input",y),e.attachEvent(this.valueElement,"blur",c),this.valueElement.setAttribute("autocomplete","off")}this.styleElement&&(this.styleElement._jscOrigStyle={backgroundImage:this.styleElement.style.backgroundImage,backgroundColor:this.styleElement.style.backgroundColor,color:this.styleElement.style.color}),this.value?this.fromString(this.value)||this.exportColor():this.importColor()}};return e.jscolor.lookupClass="jscolor",e.jscolor.installByClassName=function(t){var n=document.getElementsByTagName("input"),r=document.getElementsByTagName("button");e.tryInstallOnElements(n,t),e.tryInstallOnElements(r,t)},e.register(),e.jscolor}());
--------------------------------------------------------------------------------