mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-04 05:10:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			574 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			CSS
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			574 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			CSS
		
	
	
		
			Executable File
		
	
	
	
	
/**********************************************************************
 | 
						|
* 
 | 
						|
* This module is intended for quick and dirty tests and CSS experiments
 | 
						|
*
 | 
						|
* For production move the code from here to a more appropriate location
 | 
						|
* 
 | 
						|
*
 | 
						|
**********************************************************************/
 | 
						|
 | 
						|
 | 
						|
body {
 | 
						|
	margin: 0;
 | 
						|
	/* this will prevent odd blur effects when blurring out specific 
 | 
						|
		elements... */
 | 
						|
	background: black;
 | 
						|
}
 | 
						|
 | 
						|
/* show image gid... */
 | 
						|
.visible-gid .image:after {
 | 
						|
	content: attr(gid);
 | 
						|
	display: block;
 | 
						|
	position: relative;
 | 
						|
	color: red;
 | 
						|
	margin: 10px;
 | 
						|
	width: 20px;
 | 
						|
	height: 20px;
 | 
						|
	text-align: center;
 | 
						|
	border: solid 2px red;
 | 
						|
	border-radius: 50%;
 | 
						|
	background: black;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
.image.current {
 | 
						|
	border-color: red;
 | 
						|
}
 | 
						|
*/
 | 
						|
 | 
						|
.shadow {
 | 
						|
	margin: 0px;
 | 
						|
	z-index: 4000;
 | 
						|
}
 | 
						|
.ui-bounds-indicators {
 | 
						|
	z-index: 5000;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.viewer:not(.no-transitions) .range-offscreen-indicator:not(.no-transitions) {
 | 
						|
	transition: all 0.1s linear;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/* basic animation... */
 | 
						|
.viewer:not(.no-transitions) {
 | 
						|
	-webkit-transition: background-color 0.8s ease;
 | 
						|
	-moz-transition: background-color 0.8s ease;
 | 
						|
	-ms-transition: background-color 0.8s ease;
 | 
						|
	-o-transition: background-color 0.8s ease;
 | 
						|
	transition: background-color 0.8s ease;
 | 
						|
}
 | 
						|
 | 
						|
.viewer:not(.no-transitions) .ribbon-set:not(.no-transitions) {
 | 
						|
	-webkit-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	-moz-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	-ms-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	-o-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
}
 | 
						|
.viewer:not(.no-transitions) .ribbon-locator:not(.no-transitions) {
 | 
						|
	-webkit-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	-moz-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	-ms-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	-o-transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
	transition: all 0.1s linear, transform 0.1s linear;
 | 
						|
}
 | 
						|
 | 
						|
.viewer:not(.no-transitions) .ribbon:not(.no-transitions) {
 | 
						|
	-webkit-transition: all 0.1s ease-out;
 | 
						|
	-moz-transition: all 0.1s ease-out;
 | 
						|
	-ms-transition: all 0.1s ease-out;
 | 
						|
	-o-transition: all 0.1s ease-out;
 | 
						|
	transition: all 0.1s ease-out;
 | 
						|
}
 | 
						|
 | 
						|
/* XXX not 100% sure about this...
 | 
						|
*/
 | 
						|
:not(.no-transitions) .current-marker:not(.no-transitions) {
 | 
						|
	-webkit-transition: transform 0.1s ease-out;
 | 
						|
	-moz-transition: transform 0.1s ease-out;
 | 
						|
	-ms-transition: transform 0.1s ease-out;
 | 
						|
	-o-transition: transform 0.1s ease-out;
 | 
						|
	transition: transform 0.1s ease-out;
 | 
						|
}
 | 
						|
 | 
						|
/* XXX should this be !important */
 | 
						|
.no-transitions {
 | 
						|
	-webkit-transition: none !important;
 | 
						|
	-moz-transition: none !important;
 | 
						|
	-ms-transition: none !important;
 | 
						|
	-o-transition: none !important;
 | 
						|
	transition: none !important;
 | 
						|
}
 | 
						|
 | 
						|
/* XXX think of a way not to use !important */
 | 
						|
.single-image-mode .ribbon,
 | 
						|
.single-image-mode .ribbon-set {
 | 
						|
	-webkit-transition: none !important;
 | 
						|
	-moz-transition: none !important;
 | 
						|
	-ms-transition: none !important;
 | 
						|
	-o-transition: none !important;
 | 
						|
	transition: none !important;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/* TEST: this is mostly speed limited... */
 | 
						|
.ribbon {
 | 
						|
	box-shadow: 5px 5px 50px -5px rgba(0, 0, 0, 0.2); 
 | 
						|
 | 
						|
	-webkit-transition: box-shadow 0.8s ease;
 | 
						|
	-moz-transition: box-shadow 0.8s ease;
 | 
						|
	-ms-transition: box-shadow 0.8s ease;
 | 
						|
	-o-transition: box-shadow 0.8s ease;
 | 
						|
	transition: box-shadow 0.8s ease;
 | 
						|
}
 | 
						|
.current.ribbon {
 | 
						|
	box-shadow: 5px 5px 60px -5px rgba(0, 0, 0, 0.3); 
 | 
						|
}
 | 
						|
 | 
						|
.single-image-mode .ribbon {
 | 
						|
	box-shadow: none; 
 | 
						|
}
 | 
						|
 | 
						|
.viewer .lock-clicks {
 | 
						|
	position: absolute;
 | 
						|
	display: block;
 | 
						|
	width: 100%;
 | 
						|
	height: 100%;
 | 
						|
	background: transparent;
 | 
						|
	cursor: auto;
 | 
						|
	z-index: 10000;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/*********************************************************************/
 | 
						|
 | 
						|
.image-bw {
 | 
						|
	/*filter: saturate(0);*/
 | 
						|
	filter: grayscale(1);
 | 
						|
}
 | 
						|
.image-show-shadows {
 | 
						|
	filter: contrast(0.8) brightness(3) contrast(1.5);
 | 
						|
}
 | 
						|
.image-show-highlights {
 | 
						|
	filter: contrast(0.8) brightness(0.6) contrast(1.2);
 | 
						|
}
 | 
						|
.image-edge-detect {
 | 
						|
	filter: url(#EdgeDetect);
 | 
						|
	/* XXX this does not work in chrome + local file... */
 | 
						|
	/*filter: url(filters.svg#EdgeDetect);*/
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/*********************************************************************/
 | 
						|
 | 
						|
/* scrollbar setup... */
 | 
						|
.browse-widget ::-webkit-scrollbar {
 | 
						|
	width: 10px;
 | 
						|
	height: 10px;
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-scrollbar-button {
 | 
						|
	display: none;
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-scrollbar-track {
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-scrollbar-track-piece {
 | 
						|
	background: transparent;
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-scrollbar-track-piece {
 | 
						|
	background: rgba(0, 0, 0, 0.05);
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-scrollbar-thumb {
 | 
						|
	background: rgba(0, 0, 0, 0.15);
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-scrollbar-thumb:hover {
 | 
						|
	background: rgba(0, 0, 0, 0.3);
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-scrollbar-corner {
 | 
						|
}
 | 
						|
.browse-widget ::-webkit-resizer {
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.keyboard-shortcut {
 | 
						|
	text-decoration: none !important;
 | 
						|
	position: relative;
 | 
						|
	display: inline-block;
 | 
						|
}
 | 
						|
.keyboard-shortcut:after {
 | 
						|
	content: "";
 | 
						|
	position: absolute;
 | 
						|
	display: block;
 | 
						|
	width: 100%;
 | 
						|
	margin-top: -0.2em;
 | 
						|
	border-top: solid 0.1em silver;
 | 
						|
	opacity: 1;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.browse-widget.cloud-view .list .item {
 | 
						|
	font-size: small;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/* browse pinned items... */
 | 
						|
.browse-widget .list .item:not(.pinned) .pin-set {
 | 
						|
	display: none;
 | 
						|
}
 | 
						|
.browse-widget .list .item.pinned .pin-unset {
 | 
						|
	display: none;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.browse-widget .list .item .sort-handle {
 | 
						|
	display: inline-block;
 | 
						|
	float: left;
 | 
						|
 | 
						|
	padding-left: 0.2em;
 | 
						|
	padding-right: 0.5em;
 | 
						|
 | 
						|
	opacity: 0.2;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/*
 | 
						|
.browse-widget .list .item.pinned + :not(.pinned) {
 | 
						|
    border-top: solid 1px rgba(255, 255, 255, 0.3);
 | 
						|
}
 | 
						|
*/
 | 
						|
.browse-widget .list .pinned-separator:first-child,
 | 
						|
.browse-widget .list .pinned-separator:last-child {
 | 
						|
	display: none;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/* Metadata viewer */
 | 
						|
.item-value-view .text:first-child,
 | 
						|
.browse-widget.table-view .list .item .text:first-child {
 | 
						|
	width: 50%;
 | 
						|
	font-weight: bold;
 | 
						|
}
 | 
						|
.item-value-view .text:nth-child(2),
 | 
						|
.browse-widget.table-view .list .item .text:nth-child(2) {
 | 
						|
	font-style: italic;
 | 
						|
 | 
						|
	-moz-user-select: auto;
 | 
						|
	-webkit-user-select: auto;
 | 
						|
	-o-user-select: auto;
 | 
						|
	-ms-user-select: auto;
 | 
						|
	user-select: auto;
 | 
						|
 | 
						|
	cursor: text;
 | 
						|
}
 | 
						|
 | 
						|
/* Collection list */
 | 
						|
.browse-widget.collection-list .list .item .text[cropped]:after {
 | 
						|
	content: "(cropped)";
 | 
						|
	margin-left: 5px;
 | 
						|
	opacity: 0.5;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
.browse-widget.collection-list .list .item .text[unsaved]:after {
 | 
						|
	content: "*";
 | 
						|
	margin-left: 0px;
 | 
						|
	opacity: 0.5;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
.browse-widget.collection-list .list .item .text[unsaved][cropped]:after {
 | 
						|
	content: "* (cropped)";
 | 
						|
	margin-left: 0px;
 | 
						|
	opacity: 0.5;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
 | 
						|
/* Feature list */
 | 
						|
.browse-widget.feature-list .list .item[root="true"] .text:after {
 | 
						|
	content: "*";
 | 
						|
	margin-left: 0px;
 | 
						|
	opacity: 0.5;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
 | 
						|
/* External Editor List */
 | 
						|
.browse-widget.editor-list .list .item:first-child .text:after {
 | 
						|
	content: "(primary)";
 | 
						|
	margin-left: 5px;
 | 
						|
	opacity: 0.5;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
/* XXX this is ugly -- use a class... */
 | 
						|
.browse-widget.editor-list .list .item:first-child .button:nth-child(4) {
 | 
						|
	opacity: 0.1;
 | 
						|
}
 | 
						|
.browse-widget.editor-list .list .item:nth-child(2):not(:last-child) .text:after {
 | 
						|
	content: "(secondary)";
 | 
						|
	margin-left: 5px;
 | 
						|
	opacity: 0.5;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
/* XXX this is ugly -- use a class... */
 | 
						|
.browse-widget.editor-list .list .item:nth-child(2) .button:nth-child(3) {
 | 
						|
	opacity: 0.1;
 | 
						|
}
 | 
						|
 | 
						|
/* slideshow interval list... */
 | 
						|
.browse-widget.tail-action .list .item:last-child {
 | 
						|
	margin-top: 0.2em;
 | 
						|
	border-top: solid 1px rgba(255,255,255, 0.2);
 | 
						|
}
 | 
						|
.browse-widget.tail-action .list .item:last-child .text {
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
.browse-widget.tail-action .list .item:last-child .button {
 | 
						|
	display: none;
 | 
						|
}
 | 
						|
 | 
						|
/* do not show top border if after another action or separator... */
 | 
						|
.browse-widget .list>.warn {
 | 
						|
	background-color: yellow !important;
 | 
						|
	color: red !important;
 | 
						|
	font-weight: bolder !important;
 | 
						|
}
 | 
						|
 | 
						|
/* Dialog highlight experiment... */
 | 
						|
.browse-widget {
 | 
						|
	border-bottom: solid 7px rgba(100, 100, 100, 0.5);
 | 
						|
}
 | 
						|
/*
 | 
						|
.light .browse-widget {
 | 
						|
	border-bottom: solid 7px rgba(100, 100, 100, 0.5);
 | 
						|
}
 | 
						|
.dark .browse-widget {
 | 
						|
	border-bottom: solid 7px rgba(100, 100, 100, 0.5);
 | 
						|
}
 | 
						|
*/
 | 
						|
 | 
						|
.browse-widget.file-browser {
 | 
						|
	border-bottom: solid 7px rgba(255, 255, 0, 0.5);
 | 
						|
}
 | 
						|
/*
 | 
						|
.light .browse-widget.file-browser {
 | 
						|
	border-bottom: solid 7px rgba(255, 255, 0, 0.5);
 | 
						|
}
 | 
						|
.dark .browse-widget.file-browser {
 | 
						|
	border-bottom: solid 7px rgba(255, 255, 0, 0.5);
 | 
						|
}
 | 
						|
*/
 | 
						|
/* XXX not sure about these... */
 | 
						|
.browse-widget.save-history,
 | 
						|
.browse-widget.location-history {
 | 
						|
	border-bottom: solid 7px rgba(0, 0, 255, 0.2);
 | 
						|
}
 | 
						|
 | 
						|
/* XXX experimental key mappings... */
 | 
						|
.browse-widget.show-keys .list .item:after {
 | 
						|
	display: inline;
 | 
						|
	position: relative;
 | 
						|
	content: attr(keys);
 | 
						|
 | 
						|
	float: right;
 | 
						|
	margin-left: 0.5em;
 | 
						|
	margin-right: 0.5em;
 | 
						|
 | 
						|
	opacity: 0.3;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
.browse-widget.show-keys .list .item.disabled:after {
 | 
						|
	opacity: 0.5;
 | 
						|
}
 | 
						|
 | 
						|
.browse-widget.show-keys .list .item:hover:after {
 | 
						|
	opacity: 0.5;
 | 
						|
}
 | 
						|
.browse-widget.show-keys .list .item.disabled:hover:after {
 | 
						|
	opacity: 1;
 | 
						|
}
 | 
						|
 | 
						|
/* make buttons a bit different in action browser... */
 | 
						|
.browse-widget.browse-actions .list .button {
 | 
						|
	background-color: rgba(0, 0, 0, 0.12);
 | 
						|
}
 | 
						|
.dark .browse-widget.browse-actions .list .button {
 | 
						|
	background-color: rgba(255, 255, 255, 0.2);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/* key binding editor... */
 | 
						|
.browse-widget.key-bindings .list .item:not(.selected):not(.mode):nth-child(even) {
 | 
						|
	background: rgba(0, 0, 0, 0.03);
 | 
						|
}
 | 
						|
.browse-widget.key-bindings .list .item .button {
 | 
						|
	background-color: rgba(0, 0, 0, 0.12);
 | 
						|
}
 | 
						|
 | 
						|
.browse-widget.key-bindings .list>.drop-list .text:first-child {
 | 
						|
	font-weight: bold;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
.browse-widget.key-bindings .list>.special-action .text:first-child {
 | 
						|
	font-style: italic;
 | 
						|
	font-weight: bold;
 | 
						|
}
 | 
						|
.browse-widget.key-bindings .list>.info {
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
 | 
						|
.browse-widget.key-bindings .list .item .text:not(:first-child) {
 | 
						|
	display: inline;
 | 
						|
	position: relative;
 | 
						|
 | 
						|
	float: right;
 | 
						|
	margin-left: 1em;
 | 
						|
	margin-right: 1em;
 | 
						|
 | 
						|
	opacity: 0.8;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
/* NOTE: the last element is a space... */
 | 
						|
.browse-widget.key-bindings.browse .list .item .text:last-child {
 | 
						|
	margin-right: 0em;
 | 
						|
}
 | 
						|
 | 
						|
/* key doc... */
 | 
						|
.browse-widget.key-bindings .list>.key[doc]:after {
 | 
						|
	display: inline;
 | 
						|
	content: " -- " attr(doc);
 | 
						|
	font-style: italic;
 | 
						|
	opacity: 0.5;
 | 
						|
	margin-left: 0.5em;
 | 
						|
}
 | 
						|
.browse-widget.key-bindings.edit .list>.key.non-action:before {
 | 
						|
	display: inline;
 | 
						|
	content: " (non-action) ";
 | 
						|
	opacity: 0.5;
 | 
						|
	margin-left: 0.5em;
 | 
						|
	float: none;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.browse-widget.key-bindings .list>.new {
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
.browse-widget.key-bindings .list>.new:not(.selected) {
 | 
						|
	opacity: 0.3;
 | 
						|
}
 | 
						|
.browse-widget.key-bindings .list>.new.selected {
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/* dark theme... */
 | 
						|
.dark .browse-widget.key-bindings .list .item:not(.selected):not(.mode):nth-child(even) {
 | 
						|
	background: rgba(255, 255, 255, 0.03);
 | 
						|
}
 | 
						|
 | 
						|
/* light theme... */
 | 
						|
.light .browse-widget.key-bindings .list>.key[doc]:after {
 | 
						|
	opacity: 0.7;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/* help... */
 | 
						|
.help-dialog {
 | 
						|
	max-width: 80vw;
 | 
						|
	max-height: 80vh;
 | 
						|
 | 
						|
	overflow: auto;
 | 
						|
 | 
						|
	padding: 1em;
 | 
						|
	padding-bottom: 2em;
 | 
						|
 | 
						|
	background: white;
 | 
						|
}
 | 
						|
 | 
						|
/* scrollbar setup... */
 | 
						|
.help-dialog::-webkit-scrollbar {
 | 
						|
	width: 10px;
 | 
						|
	height: 10px;
 | 
						|
}
 | 
						|
.help-dialog::-webkit-scrollbar-button {
 | 
						|
	display: none;
 | 
						|
}
 | 
						|
.help-dialog::-webkit-scrollbar-track {
 | 
						|
}
 | 
						|
.help-dialog::-webkit-scrollbar-track-piece {
 | 
						|
	background: transparent;
 | 
						|
}
 | 
						|
.help-dialog::-webkit-scrollbar-track-piece {
 | 
						|
	background: rgba(0, 0, 0, 0.05);
 | 
						|
}
 | 
						|
.help-dialog::-webkit-scrollbar-thumb {
 | 
						|
	background: rgba(0, 0, 0, 0.15);
 | 
						|
}
 | 
						|
.help-dialog::-webkit-scrollbar-thumb:hover {
 | 
						|
	background: rgba(0, 0, 0, 0.3);
 | 
						|
}
 | 
						|
.help-dialog::-webkit-scrollbar-corner {
 | 
						|
}
 | 
						|
.help-dialog::-webkit-resizer {
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
.help-dialog .comment {
 | 
						|
	color: gray;
 | 
						|
	font-style: italic;
 | 
						|
}
 | 
						|
.help-dialog .warning {
 | 
						|
	color: blue;
 | 
						|
	background: yellow;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/* DEBUG stuff... */
 | 
						|
.container-center {
 | 
						|
	position: absolute;
 | 
						|
	top: 50%;
 | 
						|
	left: 50%;
 | 
						|
	width: 10px;
 | 
						|
	height: 10px;
 | 
						|
 | 
						|
	border-top: solid 1px black;
 | 
						|
	border-left: solid 1px black;
 | 
						|
}
 | 
						|
.container-center:after {
 | 
						|
	content: "";
 | 
						|
	position: absolute;
 | 
						|
	top: -11px;
 | 
						|
	left: -11px;
 | 
						|
	width: 10px;
 | 
						|
	height: 10px;
 | 
						|
 | 
						|
	border-top: none;
 | 
						|
	border-left: none;
 | 
						|
	border-bottom: solid 1px black;
 | 
						|
	border-right: solid 1px black;
 | 
						|
}
 | 
						|
.point {
 | 
						|
	position: absolute;
 | 
						|
	width: 4px;
 | 
						|
	height: 4px;
 | 
						|
	border: solid 1px blue;
 | 
						|
	margin-top: -2px;
 | 
						|
	margin-left: -2px;
 | 
						|
 | 
						|
	background: yellow;
 | 
						|
 | 
						|
	transition-origin: 50% 50%;
 | 
						|
 | 
						|
	z-index: 9999;
 | 
						|
}
 | 
						|
.point {
 | 
						|
	-webkit-transition: all 0.2s linear;
 | 
						|
	-moz-transition: all 0.2s linear;
 | 
						|
	transition: all 0.2s linear;
 | 
						|
}
 | 
						|
/* DEBUG end */
 | 
						|
 |