mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-30 19:00:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			309 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			309 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
| <html>
 | |
| 
 | |
| <style>
 | |
| 
 | |
| .image {
 | |
| 	position: relative;
 | |
| 	display: inline-block;
 | |
| 	vertical-align: middle;
 | |
| 	text-align:left;
 | |
| 	width: 300px;
 | |
| 	height: 300px;
 | |
| 	font-size: 12pt;
 | |
| 	overflow: hidden;
 | |
| 
 | |
| 	box-sizing: border-box;
 | |
| 	color: white;
 | |
| 
 | |
| 	text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
 | |
| 
 | |
| 	background: no-repeat 50% black;
 | |
| 	background-size: contain;
 | |
| 	/* XXX do we need this? */
 | |
| 	border: solid black 5px;
 | |
| 
 | |
| 	-webkit-filter: invert(1);
 | |
| }
 | |
| .current.image {
 | |
| 	background: no-repeat 50% black;
 | |
| 	background-size: contain;
 | |
| 
 | |
| 	/* XXX remove this... */
 | |
| 	border: solid red 5px;
 | |
| }
 | |
| 
 | |
| .ribbon {
 | |
| 	position: relative;
 | |
| 	display: block;
 | |
| 	height: auto;
 | |
| 	min-width: 0px;
 | |
| 	overflow: visible;
 | |
| 	white-space: nowrap;
 | |
| 	font-size: 0;
 | |
| 
 | |
| 	margin-top: 20px;
 | |
| 	margin-bottom: 20px;
 | |
| }
 | |
| .ribbon:empty {
 | |
| 	display: none;
 | |
| }
 | |
| .ribbon:first-child {
 | |
| 	margin-top: 0px;
 | |
| }
 | |
| .ribbon:last-child {
 | |
| 	margin-bottom: 0px;
 | |
| }
 | |
| 
 | |
| 
 | |
| /*********************************************************************/
 | |
| 
 | |
| 
 | |
| .image2:before,
 | |
| .image2 {
 | |
| 	position: relative;
 | |
| 	display: inline-block;
 | |
| 	vertical-align: middle;
 | |
| 	text-align:left;
 | |
| 	font-size: 12pt;
 | |
| 	overflow: visible;
 | |
| 
 | |
| 	color: white;
 | |
| }
 | |
| .image2 {
 | |
| 	width: 290px;
 | |
| 	height: 290px;
 | |
| 	background: no-repeat 50% transparent;
 | |
| 	background-size: contain;
 | |
| 	margin: 5px;
 | |
| 
 | |
| 	-webkit-filter: invert(1);
 | |
| }
 | |
| 
 | |
| .ribbon {
 | |
| 	display: inline-block;
 | |
| 	background: black;
 | |
| }
 | |
| 
 | |
| .current.image2:before {
 | |
| 	position: relative;
 | |
| 	content: "";
 | |
| 	top: -5px;
 | |
| 	left: -5px;
 | |
| 	width: 100%;
 | |
| 	height: 100%;
 | |
| 
 | |
| 	/* XXX this is affected by the filter... */
 | |
| 	border: solid 5px red;
 | |
| }
 | |
| 
 | |
| /*********************************************************************/
 | |
| 
 | |
| .image3 div,
 | |
| .image3 {
 | |
| 	position: relative;
 | |
| 	display: inline-block;
 | |
| 	vertical-align: middle;
 | |
| 	text-align:left;
 | |
| 	width: 300px;
 | |
| 	height: 300px;
 | |
| 	font-size: 12pt;
 | |
| 	overflow: hidden;
 | |
| 
 | |
| 	box-sizing: border-box;
 | |
| 	color: white;
 | |
| 	background: black;
 | |
| 
 | |
| 	text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
 | |
| 
 | |
| 	border: solid black 5px;
 | |
| }
 | |
| .image3 div {
 | |
| 	position: absolute;
 | |
| 
 | |
| 	width: 100%;
 | |
| 	height: 100%;
 | |
| 
 | |
| 	background: no-repeat 50% transparent;
 | |
| 	background-size: contain;
 | |
| 	border: none;
 | |
| 
 | |
| 	-webkit-filter: invert(1);
 | |
| }
 | |
| .current.image3 {
 | |
| 	background: no-repeat 50% black;
 | |
| 	background-size: contain;
 | |
| 
 | |
| 	/* XXX remove this... */
 | |
| 	border: solid red 5px;
 | |
| }
 | |
| 
 | |
| 
 | |
| /*********************************************************************/
 | |
| 
 | |
| .mark {
 | |
| 	display: inline-block;
 | |
| 	position: relative;
 | |
| 	width: 300px;
 | |
| 	height: 300px;
 | |
| 	margin-left: -300px;
 | |
| 	left: 0px;
 | |
| 	box-sizing: border-box;	
 | |
| 	vertical-align: middle;
 | |
| }
 | |
| 
 | |
| /* this is a placeholder -- I'm to lazy to make a real floating element 
 | |
|  * to indicate selection... */
 | |
| .current+.mark {
 | |
| 	border: solid red 5px;
 | |
| }
 | |
| 
 | |
| .mark.select {
 | |
| 	border: dotted blue 5px;
 | |
| }
 | |
| 
 | |
| .mark.tagged,
 | |
| .mark.blue,
 | |
| .mark.red,
 | |
| .mark.yellow {
 | |
| 	width: 0px;
 | |
| 	margin-left: 0px;
 | |
| 	border: none;
 | |
| 	box-sizing: border-box;
 | |
| }
 | |
| .mark.tagged:after,
 | |
| .mark.blue:after,
 | |
| .mark.red:after,
 | |
| .mark.yellow:after {
 | |
| 	display: block;
 | |
| 	position: absolute;
 | |
| 	content: "";
 | |
| 	font-size: 0pt;
 | |
| 	border: none;
 | |
| 
 | |
| 	width: 15px;
 | |
| 	height: 15px;
 | |
| 
 | |
| 	top: auto;
 | |
| 	bottom: 10px;
 | |
| 	left: auto;
 | |
| 	right: 10px;
 | |
| 
 | |
| 	/*box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.7);*/
 | |
| 	box-shadow: 2px 2px 20px -2px rgba(0,0,0,0.7);
 | |
| 
 | |
| 	box-sizing: border-box;
 | |
| 	border-radius: 50%;
 | |
| }
 | |
| 
 | |
| .mark.tagged:after {
 | |
| 	box-shadow: none;
 | |
| 	text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
 | |
| 	font-size: 10pt;
 | |
| 	vertical-align: middle;
 | |
| 	text-align: center;
 | |
| 	content: "T";
 | |
| 	color: white;
 | |
| 	background: none;
 | |
| }
 | |
| .mark.blue:after {
 | |
| 	left: -25px;
 | |
| 	border: solid 3px blue;
 | |
| }
 | |
| .mark.red:after {
 | |
| 	left: -44px;
 | |
| 	background: red;
 | |
| 	border-radius: 50%;
 | |
| }
 | |
| .mark.yellow:after {
 | |
| 	left: -67px;
 | |
| 	background: yellow;
 | |
| }
 | |
| 
 | |
| .ccw270,
 | |
| .cw90 {
 | |
| 	-webkit-transform: rotate(90deg);
 | |
| }
 | |
| .ccw180,
 | |
| .cw180 {
 | |
| 	-webkit-transform: rotate(180deg);
 | |
| }
 | |
| .ccw90,
 | |
| .cw270 {
 | |
| 	-webkit-transform: rotate(270deg);
 | |
| }
 | |
| .ccw0,
 | |
| .cw0 {
 | |
| 	-webkit-transform: rotate(0deg);
 | |
| }
 | |
| 
 | |
| </style>
 | |
| <script src="jquery.js"></script>
 | |
| 
 | |
| <body>
 | |
| 	<details>
 | |
| 	<summary>
 | |
| 		The current structure... (not current anymore)
 | |
| 	</summary>
 | |
| 	<div>
 | |
| 		<div class="image" style="background-image: url(image.jpg)"></div>
 | |
| 		<div class="current image" style="background-image: url(image.jpg)"></div>
 | |
| 	</div>
 | |
| 
 | |
| 	</details>
 | |
| 
 | |
| 	<details>
 | |
| 	<summary>
 | |
| 		Image bg transparent while the ribbon's bg is black...
 | |
| 	</summary>
 | |
| 	<div class="ribbon">
 | |
| 		<div class="image2" style="background-image: url(image.jpg)"></div>
 | |
| 		<div class="current image2" style="background-image: url(image.jpg)"></div>
 | |
| 	</div>
 | |
| 	</details>
 | |
| 
 | |
| 	<details>
 | |
| 	<summary>
 | |
| 		Add a seporate bg tag (rejected)
 | |
| 	</summary>
 | |
| 	- this effectively doubles the number of tags used for a ribbon...<br>
 | |
| 	+ the only API that needs changing is what deals with previews and filters<br>
 | |
| 	+ will simplify different image indicator CSS<br>
 | |
| 	<s>+ will remove LOTS of code dealing with scaling, sizing and rotation...</s> this will not change!<br>
 | |
| 	<div class="ribbon">
 | |
| 		<div class="image3"><div style="background-image: url(image.jpg)"></div></div>
 | |
| 		<div class="current image3"><div style="background-image: url(image.jpg)"></div></div>
 | |
| 	</div>
 | |
| 	<br>
 | |
| 	<!-- XXX this shows that we will still need margin-patching and resizing when rotating...
 | |
| 	<div class="image3" style="width: 400px;"><div style="background-image: url(image.jpg)"></div></div><br>
 | |
| 	<div class="image3" style="width: 400px;"><div style="background-image: url(image.jpg); -webkit-transform: rotate(90deg)"></div></div-->
 | |
| 
 | |
| 	</details>
 | |
| 
 | |
| 	<details open>
 | |
| 	<summary>
 | |
| 		Keep the images on one level and marks outside, after the image...
 | |
| 	</summary>
 | |
| 	+ one tag per UI element and only if that element is present (no dot, no tag), or if we make things a bit more comlicated, up to 3 per tag (self, before and after)<br>
 | |
| 	+ generic and extensible<br>
 | |
| 	- a little bit more complicated mark manipulation during image shifting
 | |
| 	  – potential orphaned or misplaces marks...<br>
 | |
| 	<div class="ribbon">
 | |
| 		<div id="0" class="image2" style="background-image: url(image.jpg)"></div>
 | |
| 		<div class="mark red"></div>
 | |
| 
 | |
| 		<div id="1" class="current image2 cw180" style="background-image: url(image.jpg)"></div>
 | |
| 		<div class="mark"></div>
 | |
| 		<div class="mark blue" title="blue"></div>
 | |
| 		<div class="mark red" title="red"></div>
 | |
| 		<div class="mark yellow" title="yellow"></div>
 | |
| 
 | |
| 		<div id="2" class="image2" style="background-image: url(image.jpg)"></div>
 | |
| 		<div class="mark select"></div>
 | |
| 		<div class="mark tagged" title="tagged"></div>
 | |
| 	</div>
 | |
| 	</details>
 | |
| 
 | |
| </body>
 | |
| </html>
 |