mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-29 18:30:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			618 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			CSS
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			618 lines
		
	
	
		
			14 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);*/
 | |
| }
 | |
| .image-shadows-and-highlights {
 | |
| 	filter: url(#ShadowsAndHilights);
 | |
| }
 | |
| .image-gamma-shadows {
 | |
| 	filter: url(#GammaShadows);
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| /*********************************************************************/
 | |
| 
 | |
| /* scrollbar setup... */
 | |
| .browse-widget ::-webkit-scrollbar {
 | |
| 	width: 10px;
 | |
| 	height: 10px;
 | |
| }
 | |
| .browse-widget * {
 | |
| 	scrollbar-width: thin;
 | |
| 	scrollbar-color: auto;
 | |
| }
 | |
| .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;
 | |
| }
 | |
| 
 | |
| 
 | |
| /* metadata view */
 | |
| /* remove preview text and center image... */
 | |
| .metadata-view .item.index {
 | |
| 	text-align: center;
 | |
| }
 | |
| .metadata-view .item.preview {
 | |
| 	text-align: center;
 | |
| 	opacity: 1;
 | |
| }
 | |
| .metadata-view .index .text,
 | |
| .metadata-view .preview .text {
 | |
| 	float: initial;
 | |
| }
 | |
| .metadata-view .index .text:first-child,
 | |
| .metadata-view .preview .text:first-child {
 | |
| 	left: 50%;
 | |
| 	display: none;
 | |
| }
 | |
| .metadata-view .preview.image {
 | |
| 	border: rgba(200, 200, 200, 0.3) 1px solid;
 | |
| 	visibility: visible !important;
 | |
| }
 | |
| 
 | |
| .metadata-view .text+.text {
 | |
| 	font-style: italic;
 | |
| }
 | |
| .metadata-view .text+.text+.text {
 | |
| 	margin-left: 1em;
 | |
| }
 | |
| .metadata-view small span {
 | |
| 	opacity: 0.7;
 | |
| }
 | |
| .metadata-view small small {
 | |
| 	opacity: 0.5;
 | |
| }
 | |
| 
 | |
| 
 | |
| /* 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 */
 | |
| 
 |