1 /* Copyright (c) 2014 The Chromium Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. */ 4 5 body { 6 -webkit-user-select: none; 7 font-family: Noto Sans UI, sans-serif; 8 font-size: 84%; 9 margin: 0; 10 } 11 12 input:focus, button:focus { 13 outline: 1px solid rgb(77, 144, 254); 14 } 15 16 input[type='checkbox'] { 17 width: 15px; 18 height: 15px; 19 background: -webkit-image-set( 20 url(../../file_manager/foreground/images/common/checkbox_white_unchecked.png) 1x, 21 url(../../file_manager/foreground/images/common/2x/checkbox_white_unchecked.png) 2x) 22 -1px -1px; 23 -webkit-appearance: none; 24 display: inline-block; 25 margin: 1px 6px 1px 1px; 26 vertical-align: text-bottom; 27 } 28 29 input[type='checkbox']:checked { 30 background: -webkit-image-set( 31 url(../../file_manager/foreground/images/common/checkbox_white_checked.png) 1x, 32 url(../../file_manager/foreground/images/common/2x/checkbox_white_checked.png) 2x) 33 -1px -1px; 34 } 35 36 .gallery, 37 .gallery .content { 38 bottom: 0; 39 left: 0; 40 overflow: hidden; 41 position: absolute; 42 right: 0; 43 top: 0; 44 } 45 46 /* Common background for both mosaic and slide mode. */ 47 .gallery .content { 48 background-color: black; 49 } 50 51 /* Image container and canvas elements */ 52 53 .gallery .image-container { 54 cursor: none; /* Only visible when the toolbar is active */ 55 height: 100%; 56 position: absolute; 57 width: 100%; 58 } 59 60 .gallery[tools] .image-container[cursor='default'] { 61 cursor: default; 62 } 63 64 .gallery[tools] .image-container[cursor='move'] { 65 cursor: -webkit-image-set( 66 url(../images/100/cursor_move.png) 1x, 67 url(../images/200/cursor_move.png) 2x) 15 15, auto; 68 } 69 70 .gallery[tools] .image-container[cursor='crop'] { 71 cursor: -webkit-image-set( 72 url(../images/100/cursor_crop.png) 1x, 73 url(../images/200/cursor_crop.png) 2x) 15 15, auto; 74 } 75 76 .gallery[tools] .image-container[cursor='n-resize'], 77 .gallery[tools] .image-container[cursor='s-resize'] { 78 cursor: -webkit-image-set( 79 url(../images/100/cursor_updown.png) 1x, 80 url(../images/200/cursor_updown.png) 2x) 15 15, auto; 81 } 82 83 .gallery[tools] .image-container[cursor='e-resize'], 84 .gallery[tools] .image-container[cursor='w-resize'] { 85 cursor: -webkit-image-set( 86 url(../images/100/cursor_leftright.png) 1x, 87 url(../images/200/cursor_leftright.png) 2x) 15 15, auto; 88 } 89 90 .gallery[tools] .image-container[cursor='nw-resize'], 91 .gallery[tools] .image-container[cursor='se-resize'] { 92 cursor: -webkit-image-set( 93 url(../images/100/cursor_nwse.png) 1x, 94 url(../images/200/cursor_nwse.png) 2x) 15 15, auto; 95 } 96 97 .gallery[tools] .image-container[cursor='ne-resize'], 98 .gallery[tools] .image-container[cursor='sw-resize'] { 99 cursor: -webkit-image-set( 100 url(../images/100/cursor_swne.png) 1x, 101 url(../images/200/cursor_swne.png) 2x) 15 15, auto; 102 } 103 104 .gallery .image-container > .image { 105 pointer-events: none; 106 position: absolute; 107 /* Duration and timing function are set in Javascript. */ 108 transition-property: -webkit-transform, opacity; 109 } 110 111 .gallery .image-container > .image[fade] { 112 opacity: 0; 113 } 114 115 /* Full resolution image is invisible unless printing. */ 116 .gallery .image-container > canvas.fullres { 117 display: none; 118 } 119 120 @media print { 121 /* Do not print anything but the image content. */ 122 .gallery > :not(.content) { 123 display: none !important; 124 } 125 126 /* Center the printed image. */ 127 .gallery .image-container { 128 -webkit-box-align: center; 129 -webkit-box-orient: horizontal; 130 -webkit-box-pack: center; 131 display: -webkit-box; 132 } 133 134 /* Do not print the screen resolution image. */ 135 .gallery .image-container > canvas.image { 136 display: none !important; 137 } 138 139 /* Print the full resolution image instead. */ 140 .gallery .image-container > canvas.fullres { 141 display: block !important; 142 max-height: 100%; 143 max-width: 100%; 144 } 145 } 146 147 /* Toolbar */ 148 149 .gallery > .header, 150 .gallery > .toolbar { 151 -webkit-box-align: stretch; 152 -webkit-box-orient: horizontal; 153 -webkit-box-pack: start; 154 background-color: rgba(30, 30, 30, 0.8); 155 display: flex; 156 left: 0; 157 opacity: 0; 158 padding: 0 10px; 159 pointer-events: none; 160 position: absolute; 161 right: 0; 162 transition: opacity 300ms ease; 163 } 164 165 .gallery > .header { 166 -webkit-app-region: drag; 167 -webkit-box-align: center; 168 -webkit-box-pack: end; 169 border-bottom: 1px solid rgba(50, 50, 50, 0.8); 170 display: -webkit-box; 171 height: 45px; 172 top: 0; 173 } 174 175 .gallery .header button { 176 -webkit-app-region: no-drag; 177 } 178 179 .gallery > .toolbar { 180 border-top: 1px solid rgba(50, 50, 50, 0.8); 181 bottom: 0; 182 height: 55px; 183 overflow: hidden; 184 } 185 186 .gallery[tools]:not([slideshow]) > .header, 187 .gallery[tools]:not([slideshow]) > .toolbar { 188 opacity: 1; 189 pointer-events: auto; 190 } 191 192 /* Hide immediately when entering the slideshow. */ 193 .gallery[tools][slideshow] > .toolbar { 194 transition-duration: 0; 195 } 196 197 .gallery[tools][locked] > .toolbar { 198 pointer-events: none; 199 } 200 201 .gallery .arrow-box { 202 -webkit-box-align: center; 203 -webkit-box-orient: horizontal; 204 -webkit-box-pack: center; 205 display: -webkit-box; 206 height: 100%; 207 pointer-events: none; 208 position: absolute; 209 width: 100%; 210 z-index: 100; 211 } 212 213 .gallery .arrow-box .arrow { 214 opacity: 0; 215 pointer-events: none; 216 } 217 218 .gallery .arrow-box .arrow-spacer { 219 -webkit-box-flex: 1; 220 pointer-events: none; 221 } 222 223 .gallery[tools] .arrow-box[active] .arrow { 224 cursor: pointer; 225 opacity: 1; 226 pointer-events: auto; 227 } 228 229 /* The arrow icons are in nested divs so that their opacity can be manipulated 230 * independently from their parent (which can be dimmed when the crop frame 231 * overlaps it) */ 232 .gallery .arrow div { 233 background-position: center center; 234 background-repeat: no-repeat; 235 height: 193px; 236 opacity: 0; 237 width: 105px; 238 } 239 240 .gallery[tools] .arrow-box[active] .arrow div { 241 opacity: 0.25; 242 } 243 244 .gallery[tools] .arrow-box[active] .arrow div:hover { 245 opacity: 1; 246 } 247 248 .gallery .arrow.left div { 249 background-image: -webkit-image-set( 250 url(../images/100/arrow_left.png) 1x, 251 url(../images/200/arrow_left.png) 2x); 252 } 253 254 .gallery .arrow.right div { 255 background-image: -webkit-image-set( 256 url(../images/100/arrow_right.png) 1x, 257 url(../images/200/arrow_right.png) 2x); 258 } 259 260 /* Special behavior on mouse drag. 261 Redundant .gallery attributes included to make the rules more specific */ 262 263 /* Everything but the image container should become mouse-transparent */ 264 .gallery[tools][editing][mousedrag] * { 265 pointer-events: none; 266 } 267 268 .gallery[tools][editing][mousedrag] .image-container { 269 pointer-events: auto; 270 } 271 272 /* The editor marks elements with 'dimmed' attribute to get them out of the way 273 of the crop frame */ 274 .gallery[tools][editing] [dimmed], 275 .gallery[tools][editing] [dimmed] * { 276 pointer-events: none; 277 } 278 279 .gallery[tools][editing] [dimmed] { 280 opacity: 0.2; 281 } 282 283 /* Filename */ 284 285 .gallery .filename-spacer { 286 flex: 0 1 auto; 287 height: 100%; 288 min-width: 140px; 289 overflow: hidden; 290 position: relative; 291 width: 252px; 292 } 293 294 .gallery .filename-spacer > * { 295 background-color: transparent; 296 overflow: hidden; 297 position: absolute; 298 transition: visibility 0 linear 180ms, all 180ms linear; 299 width: 260px; 300 } 301 302 .gallery .filename-spacer * { 303 color: white; 304 } 305 306 .gallery .filename-spacer .namebox { 307 height: 22px; 308 top: 15px; 309 } 310 311 .gallery[editing] .filename-spacer .namebox { 312 height: 21px; 313 top: 5px; 314 } 315 316 .gallery .filename-spacer .namebox { 317 background-color: transparent; 318 border: none; 319 box-sizing: border-box; 320 cursor: pointer; 321 display: block; 322 font-size: 120%; 323 outline: none; 324 overflow: hidden; 325 padding: 0 3px; 326 position: absolute; 327 text-overflow: ellipsis; 328 white-space: nowrap; 329 } 330 331 .gallery .filename-spacer .namebox[disabled] { 332 -webkit-user-select: none; 333 cursor: default; 334 } 335 336 .gallery .filename-spacer .namebox:not([disabled]):not(:focus):hover { 337 background-color: rgba(48, 48, 48, 1.0); 338 } 339 340 .gallery .filename-spacer .namebox:focus { 341 background-color: white; 342 color: black; 343 cursor: text; 344 } 345 346 .gallery .filename-spacer .options { 347 -webkit-box-align: center; 348 -webkit-box-orient: horizontal; 349 -webkit-box-pack: start; 350 display: -webkit-box; 351 height: 0; 352 opacity: 0; 353 top: 50px; 354 visibility: hidden; 355 } 356 357 .gallery[editing] .filename-spacer .options { 358 height: auto; 359 opacity: 1; 360 top: 28px; 361 visibility: visible; 362 } 363 364 .gallery .filename-spacer .saved, 365 .gallery .filename-spacer .overwrite-original { 366 cursor: inherit; 367 font-size: 90%; 368 margin-left: 3px; 369 margin-right: 18px; 370 opacity: 0; 371 pointer-events: none; 372 transition: all linear 120ms; 373 } 374 375 .gallery[editing] .filename-spacer .saved { 376 color: white; 377 opacity: 0.5; 378 } 379 380 .gallery[editing] .filename-spacer .overwrite-original, 381 .gallery[editing] .filename-spacer .overwrite-original > * { 382 cursor: pointer; 383 opacity: 1; 384 pointer-events: auto; 385 } 386 387 .gallery[editing] .options[saved] .overwrite-original { 388 opacity: 0.5; 389 } 390 391 .gallery[editing] .options[saved] .overwrite-original, 392 .gallery[editing] .options[saved] .overwrite-original > * { 393 cursor: default; 394 pointer-events: none; 395 } 396 397 .gallery .filename-spacer .saved[highlighted] { 398 -webkit-transform: scaleX(1.1) scaleY(1.1) rotate(0); 399 opacity: 1; 400 } 401 402 /* Bubble */ 403 404 .gallery .toolbar .bubble { 405 bottom: 65px; 406 font-size: 85%; 407 left: 50px; 408 position: absolute; 409 width: 220px; 410 } 411 412 .gallery:not([editing]) .toolbar .bubble { 413 display: none; 414 } 415 416 /* Middle spacer */ 417 418 .gallery .middle-spacer { 419 align-items: center; 420 display: flex; 421 flex: 1 0 auto; 422 flex-direction: column; 423 } 424 425 /* Toolbar buttons */ 426 427 .gallery .button-spacer { 428 display: flex; 429 flex: none; 430 justify-content: flex-end; 431 width: 252px; /* 42px button x 6 */ 432 } 433 434 /* Thumbnails */ 435 436 .gallery .ribbon-spacer { 437 height: 55px; 438 margin-bottom: -55px; 439 } 440 441 .gallery .toolbar .ribbon { 442 height: 100%; 443 overflow: hidden; 444 transition: opacity 180ms linear, visibility 0 linear; 445 z-index: 0; 446 } 447 448 .gallery[editing] .toolbar .ribbon { 449 opacity: 0; 450 transition-delay: 0, 180ms; 451 visibility: hidden; 452 } 453 454 .gallery .ribbon-image { 455 border: 2px solid rgba(255, 255, 255, 0); /* transparent white */ 456 cursor: pointer; 457 display: inline-block; 458 height: 47px; 459 margin: 2px; 460 overflow: hidden; 461 transition: all 180ms linear; 462 width: 47px; 463 } 464 465 .ribbon-image[vanishing='smooth'] { 466 border-left-width: 0; 467 border-right-width: 0; 468 margin-left: 0; 469 margin-right: 0; 470 width: 0; 471 } 472 473 .gallery .ribbon-image[selected] { 474 border: 2px solid rgb(77, 144, 254); 475 } 476 477 .gallery .toolbar .ribbon.fade-left { 478 -webkit-mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0, 479 rgba(0, 0, 0, 1) 40px); 480 } 481 482 .gallery .toolbar .ribbon.fade-right { 483 -webkit-mask-image: linear-gradient(to left, rgba(0, 0, 0, 0) 0, 484 rgba(0, 0, 0, 1) 40px); 485 } 486 487 .gallery .toolbar .ribbon.fade-left.fade-right { 488 -webkit-mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0, 489 rgba(0, 0, 0, 1) 40px, 490 rgba(0, 0, 0, 1) 230px, 491 rgba(0, 0, 0, 0) 100%); 492 } 493 494 .gallery .image-wrapper { 495 background-size: 45px 45px; 496 border: 1px solid rgba(0, 0, 0, 0); /* transparent black */ 497 height: 45px; 498 overflow: hidden; 499 position: relative; 500 width: 45px; 501 } 502 503 .gallery .image-wrapper > img { 504 position: absolute; 505 } 506 507 .gallery .image-wrapper > img:not(.cached) { 508 -webkit-animation: fadeIn 500ms ease-in; 509 } 510 511 /* Editor buttons */ 512 513 .gallery .edit-bar-spacer { 514 -webkit-box-align: center; 515 -webkit-box-orient: horizontal; 516 -webkit-box-pack: center; 517 display: -webkit-box; 518 height: 100%; 519 left: 280px; 520 opacity: 0; 521 right: 280px; 522 transition: opacity 180ms linear, visibility 0 linear 180ms; 523 visibility: hidden; 524 margin-bottom: -55px; 525 } 526 527 .gallery .toolbar .edit-main { 528 -webkit-box-orient: horizontal; 529 -webkit-box-pack: center; 530 color: white; 531 display: -webkit-box; 532 height: 55px; 533 overflow: visible; 534 } 535 536 .gallery[editing] .edit-bar-spacer { 537 opacity: 1.0; 538 pointer-events: auto; 539 transition-delay: 100ms, 100ms; 540 visibility: visible; 541 } 542 543 .gallery .header button, 544 .gallery .toolbar button, 545 .gallery .header button[disabled], 546 .gallery .toolbar button[disabled] { 547 background-color: rgba(0, 0, 0, 0); 548 background-position: center; 549 background-repeat: no-repeat; 550 border: none; 551 box-shadow: none; 552 color: white; 553 cursor: pointer; 554 display: inline-block; 555 flex: none; 556 opacity: 0.99; /* Workaround for http://crosbug.com/21065 */ 557 padding: 1px; /* Instead of a border. */ 558 position: relative; 559 z-index: 10; 560 } 561 562 .gallery .header button, 563 .gallery .toolbar button { 564 height: 40px; 565 margin: 6px 0; 566 min-width: 40px; /* Reset. */ 567 width: 40px; 568 } 569 570 .gallery .toolbar button:focus { 571 z-index: 11; 572 } 573 574 /* By default, labels are hidden. */ 575 .gallery > .toolbar button span { 576 display: none; 577 } 578 579 /* Show labels if there is enough space. */ 580 @media (min-width: 1180px) { 581 582 .gallery .edit-main button, 583 .gallery .edit-main button[disabled] { 584 background-position: 5px center; 585 max-width: 60px; 586 min-width: 0; /* Reset. */ 587 padding: 0 10px 0 35px; 588 width: auto; 589 } 590 591 .gallery > .toolbar button span { 592 display: inline; 593 } 594 595 } 596 597 .gallery .header button:hover, 598 .gallery .toolbar button:hover { 599 background-color: rgba(31, 31, 31, 1); 600 color: white; 601 } 602 603 .gallery .header button:active, 604 .gallery .toolbar button:active, 605 .gallery .header button[pressed], 606 .gallery .toolbar button[pressed], 607 .gallery .header button[pressed]:hover, 608 .gallery .toolbar button[pressed]:hover { 609 background-color: rgba(240, 240, 240, 1); 610 color: black; 611 } 612 613 .gallery > .toolbar button.autofix { 614 background-image: -webkit-image-set( 615 url(../images/100/icon_autofix.png) 1x, 616 url(../images/200/icon_autofix.png) 2x); 617 } 618 619 .gallery > .toolbar button.autofix:active, 620 .gallery > .toolbar button.autofix[pressed] { 621 background-image: -webkit-image-set( 622 url(../images/100/icon_autofix_selected.png) 1x, 623 url(../images/200/icon_autofix_selected.png) 2x); 624 } 625 626 .gallery > .toolbar button.crop { 627 background-image: -webkit-image-set( 628 url(../images/100/icon_crop.png) 1x, 629 url(../images/200/icon_crop.png) 2x); 630 } 631 632 .gallery > .toolbar button.crop:active, 633 .gallery > .toolbar button.crop[pressed] { 634 background-image: -webkit-image-set( 635 url(../images/100/icon_crop_selected.png) 1x, 636 url(../images/200/icon_crop_selected.png) 2x); 637 } 638 639 .gallery > .toolbar button.exposure { 640 background-image: -webkit-image-set( 641 url(../images/100/icon_brightness.png) 1x, 642 url(../images/200/icon_brightness.png) 2x); 643 } 644 645 .gallery > .toolbar button.exposure:active, 646 .gallery > .toolbar button.exposure[pressed] { 647 background-image: -webkit-image-set( 648 url(../images/100/icon_brightness_selected.png) 1x, 649 url(../images/200/icon_brightness_selected.png) 2x); 650 } 651 652 .gallery > .toolbar button.rotate_right { 653 background-image: -webkit-image-set( 654 url(../images/100/icon_rotate.png) 1x, 655 url(../images/200/icon_rotate.png) 2x); 656 } 657 658 .gallery > .toolbar button.rotate_right:active, 659 .gallery > .toolbar button.rotate_right[pressed] { 660 background-image: -webkit-image-set( 661 url(../images/100/icon_rotate_selected.png) 1x, 662 url(../images/200/icon_rotate_selected.png) 2x); 663 } 664 665 .gallery > .toolbar button.rotate_left { 666 background-image: -webkit-image-set( 667 url(../images/100/icon_rotate_left.png) 1x, 668 url(../images/200/icon_rotate_left.png) 2x); 669 } 670 671 .gallery > .toolbar button.rotate_left:active, 672 .gallery > .toolbar button.rotate_left[pressed] { 673 background-image: -webkit-image-set( 674 url(../images/100/icon_rotate_left_selected.png) 1x, 675 url(../images/200/icon_rotate_left_selected.png) 2x); 676 } 677 678 .gallery > .toolbar button.undo { 679 background-image: -webkit-image-set( 680 url(../images/100/icon_undo.png) 1x, 681 url(../images/200/icon_undo.png) 2x); 682 } 683 684 .gallery > .toolbar button.undo:active, 685 .gallery > .toolbar button.undo[pressed] { 686 background-image: -webkit-image-set( 687 url(../images/100/icon_undo_selected.png) 1x, 688 url(../images/200/icon_undo_selected.png) 2x); 689 } 690 691 .gallery > .toolbar button.redo { 692 background-image: -webkit-image-set( 693 url(../images/100/icon_redo.png) 1x, 694 url(../images/200/icon_redo.png) 2x); 695 position: absolute; /* Exclude from center-packing*/ 696 } 697 698 .gallery > .toolbar button.redo:active, 699 .gallery > .toolbar button.redo[pressed] { 700 background-image: -webkit-image-set( 701 url(../images/100/icon_redo_selected.png) 1x, 702 url(../images/200/icon_redo_selected.png) 2x); 703 } 704 705 .gallery > .toolbar button[disabled], 706 .gallery[tools][locked] > .toolbar button { 707 opacity: 0.5; 708 pointer-events: none; 709 } 710 711 .gallery > .toolbar button[hidden] { 712 display: none; 713 } 714 715 .gallery[mode='slide'] > .toolbar button.mode { 716 background-image: -webkit-image-set( 717 url(../images/100/icon_mosaic.png) 1x, 718 url(../images/200/icon_mosaic.png) 2x); 719 } 720 721 .gallery[mode='slide'] > .toolbar button.mode:active { 722 background-image: -webkit-image-set( 723 url(../images/100/icon_mosaic_selected.png) 1x, 724 url(../images/200/icon_mosaic_selected.png) 2x); 725 } 726 727 .gallery[mode='mosaic'] > .toolbar button.mode { 728 background-image: -webkit-image-set( 729 url(../images/100/icon_1up.png) 1x, 730 url(../images/200/icon_1up.png) 2x); 731 } 732 733 .gallery[mode='mosaic'] > .toolbar button.mode:active { 734 background-image: -webkit-image-set( 735 url(../images/100/icon_1up_selected.png) 1x, 736 url(../images/200/icon_1up_selected.png) 2x); 737 } 738 739 .gallery > .toolbar button.slideshow { 740 background-image: -webkit-image-set( 741 url(../images/100/icon_slideshow.png) 1x, 742 url(../images/200/icon_slideshow.png) 2x); 743 } 744 745 .gallery > .toolbar button.slideshow:active, 746 .gallery > .toolbar button.slideshow[pressed] { 747 background-image: -webkit-image-set( 748 url(../images/100/icon_slideshow_selected.png) 1x, 749 url(../images/200/icon_slideshow_selected.png) 2x); 750 } 751 752 .gallery > .toolbar button.delete { 753 background-image: -webkit-image-set( 754 url(../images/100/icon_delete.png) 1x, 755 url(../images/200/icon_delete.png) 2x); 756 } 757 758 .gallery > .toolbar button.delete:active { 759 background-image: -webkit-image-set( 760 url(../images/100/icon_delete_selected.png) 1x, 761 url(../images/200/icon_delete_selected.png) 2x); 762 } 763 764 .gallery > .toolbar button.edit { 765 background-image: -webkit-image-set( 766 url(../images/100/icon_edit.png) 1x, 767 url(../images/200/icon_edit.png) 2x); 768 } 769 770 .gallery > .toolbar button.edit:active, 771 .gallery > .toolbar button.edit[pressed] { 772 background-image: -webkit-image-set( 773 url(../images/100/icon_edit_selected.png) 1x, 774 url(../images/200/icon_edit_selected.png) 2x); 775 } 776 777 .gallery > .toolbar button.print { 778 background-image: -webkit-image-set( 779 url(../images/100/icon_print.png) 1x, 780 url(../images/200/icon_print.png) 2x); 781 } 782 783 .gallery > .toolbar button.print:active, 784 .gallery > .toolbar button.print[pressed] { 785 background-image: -webkit-image-set( 786 url(../images/100/icon_print_selected.png) 1x, 787 url(../images/200/icon_print_selected.png) 2x); 788 } 789 790 .gallery > .toolbar button.share { 791 background-image: -webkit-image-set( 792 url(../images/100/icon_share.png) 1x, 793 url(../images/200/icon_share.png) 2x); 794 } 795 796 .gallery > .toolbar button.share:active, 797 .gallery > .toolbar button.share[pressed] { 798 background-image: -webkit-image-set( 799 url(../images/100/icon_share_selected.png) 1x, 800 url(../images/200/icon_share_selected.png) 2x); 801 } 802 803 .gallery > .toolbar button.share[disabled] { 804 display: none; 805 } 806 807 /* Secondary toolbar (mode-specific tools) */ 808 809 .gallery .edit-modal { 810 -webkit-box-orient: horizontal; 811 -webkit-box-pack: center; 812 bottom: 80px; 813 display: -webkit-box; 814 height: 40px; 815 pointer-events: none; 816 position: absolute; 817 width: 100%; 818 } 819 820 .gallery .edit-modal-wrapper[hidden] { 821 display: none; 822 } 823 824 .gallery .edit-modal-wrapper { 825 -webkit-box-align: center; 826 -webkit-box-orient: horizontal; 827 -webkit-box-pack: center; 828 background-color: rgba(0, 0, 0, 0.75); 829 color: white; 830 display: -webkit-box; 831 pointer-events: auto; 832 } 833 834 .gallery .edit-modal .label { 835 -webkit-box-align: center; 836 -webkit-box-orient: horizontal; 837 background-position: 20px center; 838 background-repeat: no-repeat; 839 display: -webkit-box; 840 height: 20px; 841 padding-left: 50px; 842 padding-right: 10px; 843 } 844 845 .gallery .edit-modal .label.brightness { 846 background-image: -webkit-image-set( 847 url(../images/100/icon_brightness.png) 1x, 848 url(../images/200/icon_brightness.png) 2x); 849 } 850 851 .gallery .edit-modal .label.contrast { 852 background-image: -webkit-image-set( 853 url(../images/100/icon_contrast.png) 1x, 854 url(../images/200/icon_contrast.png) 2x); 855 height: 24px; 856 margin-left: 15px; 857 } 858 859 .gallery .edit-modal button { 860 background: transparent; 861 border: 0 none; 862 border-image: none; 863 box-sizing: border-box; 864 color: #fff; 865 height: 100%; 866 min-width: 0; 867 padding: 8px 16px; 868 } 869 870 .gallery .edit-modal button * { 871 pointer-events: none; 872 } 873 874 .gallery .edit-modal button:hover { 875 background: #1f1f1f; 876 color: #fff; 877 } 878 879 .gallery .edit-modal button.selected, 880 .gallery .edit-modal button:active { 881 background: #f0f0f0; 882 color: black; 883 } 884 885 .gallery .edit-modal .range { 886 -webkit-appearance: none !important; 887 background: transparent; 888 height: 29px; 889 margin-right: 10px; 890 position: relative; 891 } 892 893 .gallery .edit-modal .range::before { 894 background: #fff; 895 content: ''; 896 display: block; 897 height: 3px; 898 left: 3px; 899 position: absolute; 900 right: 3px; 901 top: 13px; 902 } 903 904 .gallery .edit-modal .range::-webkit-slider-thumb { 905 -webkit-appearance: none; 906 background-image: -webkit-image-set( 907 url(../images/100/slider_thumb.png) 1x, 908 url(../images/200/slider_thumb.png) 2x); 909 height: 29px; 910 width: 16px; 911 } 912 913 /* Crop frame */ 914 915 .gallery .crop-overlay { 916 -webkit-box-orient: vertical; 917 display: -webkit-box; 918 pointer-events: none; 919 position: absolute; 920 } 921 922 .gallery .crop-overlay .shadow { 923 background-color: rgba(0, 0, 0, 0.65); 924 } 925 926 .gallery .crop-overlay .middle-box { 927 -webkit-box-flex: 1; 928 -webkit-box-orient: horizontal; 929 display: -webkit-box; 930 } 931 932 .gallery .crop-frame { 933 -webkit-box-flex: 1; 934 display: -webkit-box; 935 position: relative; 936 } 937 938 .gallery .crop-frame div { 939 background-color: rgba(255, 255, 255, 1); 940 box-shadow: 0 0 3px rgba(0, 0, 0, 0.75); 941 position: absolute; 942 } 943 944 .gallery .crop-frame .horizontal { 945 height: 1px; 946 left: 7px; 947 right: 7px; 948 } 949 950 .gallery .crop-frame .horizontal.top { 951 top: 0; 952 } 953 954 .gallery .crop-frame .horizontal.bottom { 955 bottom: 0; 956 } 957 958 .gallery .crop-frame .vertical { 959 bottom: 7px; 960 top: 7px; 961 width: 1px; 962 } 963 964 .gallery .crop-frame .vertical.left { 965 left: 0; 966 } 967 968 .gallery .crop-frame .vertical.right { 969 right: 0; 970 } 971 972 .gallery .crop-frame .corner { 973 border-radius: 6px; 974 height: 13px; 975 width: 13px; 976 } 977 978 .gallery .crop-frame .corner.left { 979 left: -6px; 980 } 981 982 .gallery .crop-frame .corner.right { 983 right: -6px; 984 } 985 986 .gallery .crop-frame .corner.top { 987 top: -6px; 988 } 989 990 .gallery .crop-frame .corner.bottom { 991 bottom: -6px; 992 } 993 994 /* Prompt/notification panel */ 995 996 .gallery .prompt-wrapper { 997 -webkit-box-orient: horizontal; 998 -webkit-box-pack: center; 999 display: -webkit-box; 1000 height: 100%; 1001 pointer-events: none; 1002 position: absolute; 1003 width: 100%; 1004 } 1005 1006 .gallery .prompt-wrapper[pos=top] { 1007 -webkit-box-align: start; 1008 } 1009 1010 .gallery .prompt-wrapper[pos=center] { 1011 -webkit-box-align: center; 1012 } 1013 1014 .gallery .prompt-wrapper[pos=center] .back-button { 1015 display: none; 1016 } 1017 1018 .dimmable { 1019 opacity: 1; 1020 transition: opacity 220ms ease; 1021 } 1022 1023 .gallery .prompt { 1024 -webkit-box-align: center; 1025 -webkit-box-orient: horizontal; 1026 background-color: rgba(0, 0, 0, 0.8); 1027 color: white; 1028 display: -webkit-box; 1029 font-size: 120%; 1030 height: 40px; 1031 opacity: 0; 1032 padding: 0 20px; 1033 position: relative; 1034 top: 5px; 1035 transition: all 180ms ease; 1036 } 1037 1038 .gallery .prompt[state='fadein'] { 1039 opacity: 1; 1040 top: 0; 1041 } 1042 1043 .gallery .prompt[state='fadeout'] { 1044 opacity: 0; 1045 top: 0; 1046 } 1047 1048 .gallery .prompt-wrapper[pos=top] .prompt { 1049 padding-right: 10px; 1050 } 1051 1052 .gallery .share-menu { 1053 -webkit-box-align: stretch; 1054 -webkit-box-orient: vertical; 1055 -webkit-box-pack: start; 1056 background-color: white; 1057 border: 1px solid #7f7f7f; 1058 border-radius: 1px; 1059 bottom: 60px; 1060 display: -webkit-box; 1061 opacity: 1.0; 1062 padding: 8px; 1063 position: absolute; 1064 right: 10px; 1065 transition: opacity 500ms ease-in-out; 1066 } 1067 1068 .gallery .share-menu .bubble-point { 1069 background-image: -webkit-image-set( 1070 url(../images/100/bubble_point.png) 1x, 1071 url(../images/200/bubble_point.png) 2x); 1072 background-position: center top; 1073 background-repeat: no-repeat; 1074 bottom: -8px; 1075 height: 8px; 1076 padding: 0; 1077 position: absolute; 1078 right: 20px; 1079 width: 20px; 1080 } 1081 1082 .gallery .share-menu[hidden] { 1083 bottom: -100%; /* Offscreen so that 'dimmed' attribute does not show it. */ 1084 opacity: 0; 1085 pointer-events: none; 1086 } 1087 1088 .gallery .share-menu > .item { 1089 background-color: rgba(0, 0, 0, 0); 1090 background-position: 5px center; 1091 background-repeat: no-repeat; 1092 cursor: pointer; 1093 padding: 5px; 1094 padding-left: 26px; 1095 } 1096 1097 .gallery .share-menu > .item:hover { 1098 background-color: rgba(240, 240, 240, 1); 1099 } 1100 1101 .gallery .share-menu > div > img { 1102 display: block; 1103 margin-right: 5px; 1104 } 1105 1106 /* Load spinner and error banner. */ 1107 1108 .gallery .spinner { 1109 background-image: 1110 url(../../file_manager/foreground/images/common/spinner.svg); 1111 background-size: 100%; 1112 height: 16px; 1113 left: 50%; 1114 margin-left: -8px; 1115 margin-top: -8px; 1116 position: absolute; 1117 top: 50%; 1118 width: 16px; 1119 } 1120 1121 .gallery:not([spinner]) .spinner { 1122 display: none; 1123 } 1124 1125 .gallery .error-banner { 1126 -webkit-box-align: center; 1127 -webkit-box-orient: horizontal; 1128 -webkit-box-pack: center; 1129 background-color: rgba(24, 24, 24, 1); 1130 background-image: -webkit-image-set( 1131 url(../images/100/error.png) 1x, 1132 url(../images/200/error.png) 2x); 1133 background-position: 25px center; 1134 background-repeat: no-repeat; 1135 color: white; 1136 display: -webkit-box; 1137 height: 54px; 1138 padding-left: 70px; 1139 padding-right: 35px; 1140 } 1141 1142 .gallery:not([error]) .error-banner { 1143 display: none; 1144 } 1145 1146 /* Mosaic view. */ 1147 .mosaic { 1148 bottom: 55px; /* Toolbar height. */ 1149 left: 0; 1150 overflow-x: scroll; 1151 overflow-y: hidden; 1152 position: absolute; 1153 right: 0; 1154 top: 0; 1155 1156 /* transition-duration is set in Javascript. */ 1157 transition-property: -webkit-transform; 1158 transition-timing-function: linear; 1159 } 1160 1161 .mosaic::-webkit-scrollbar { 1162 background: transparent; 1163 } 1164 1165 .mosaic::-webkit-scrollbar-thumb { 1166 background: rgb(31, 31, 31); 1167 } 1168 1169 .gallery:not([mode='mosaic']) .mosaic::-webkit-scrollbar-thumb { 1170 background: transparent; 1171 } 1172 1173 .mosaic-tile { 1174 position: absolute; 1175 /* Tile's zoom factor is animated on hover. We apply the transform to 1176 the entire tile so that the image outline is included into the animation. */ 1177 transition: -webkit-transform 150ms linear; 1178 z-index: 50; 1179 } 1180 1181 /* Mosaic tile's opacity is controlled by |visible| attribute which changes 1182 separately from .gallery[mode] */ 1183 .mosaic:not([visible]) .mosaic-tile .img-border { 1184 opacity: 0; 1185 } 1186 1187 /* Animate tile's opacity, except for the selected tile which should show/hide 1188 instantly (this looks better when zooming to/from the slide mode). */ 1189 .mosaic-tile:not([selected]) .img-border { 1190 transition: opacity 350ms linear; 1191 } 1192 1193 /* Must be in sync with mosaic_mode.js. 1194 Mosaic.Layout.SPACING should be equal to 1195 top + bottom + border-top-width + border-bottom-width AND 1196 left + right + border-left-width + border-right-width */ 1197 .mosaic-tile .img-border { 1198 border: 1px solid black; /* Space between the outline and the image. */ 1199 bottom: 4px; 1200 left: 4px; 1201 outline: 2px solid transparent; 1202 overflow: hidden; 1203 position: absolute; 1204 right: 4px; 1205 top: 4px; 1206 } 1207 1208 /* Selected and hover state are only visible when zoom transition is over. */ 1209 .mosaic[visible='normal'] .mosaic-tile[selected] .img-border { 1210 outline-color: rgb(51, 153, 255); 1211 } 1212 1213 .mosaic[visible='normal'].hover-visible 1214 .mosaic-tile:hover:not([selected]) .img-border { 1215 outline-color: rgb(182, 212, 252); 1216 } 1217 1218 .mosaic-tile .img-wrapper { 1219 bottom: 0; 1220 left: 0; 1221 position: absolute; 1222 right: 0; 1223 top: 0; 1224 } 1225 1226 .mosaic-tile .img-wrapper[generic-thumbnail], 1227 .mosaic-tile .img-wrapper.animated:not([generic-thumbnail]) 1228 canvas:not(.cached) { 1229 -webkit-animation: fadeIn ease-in 1; 1230 -webkit-animation-duration: 500ms; 1231 -webkit-animation-fill-mode: forwards; 1232 } 1233 1234 @-webkit-keyframes fadeIn { 1235 from { 1236 opacity: 0; 1237 } 1238 to { 1239 opacity: 1; 1240 } 1241 } 1242 1243 /* In order to do mode animated transitions smoothly we keep both mosaic and 1244 image-container but transparent. */ 1245 .gallery:not([mode='mosaic']) .mosaic, 1246 .gallery:not([mode='slide']) .image-container { 1247 pointer-events: none; 1248 } 1249 1250 .gallery:not([mode='slide']) .ribbon, 1251 .gallery:not([mode='slide']) .arrow-box { 1252 opacity: 0; 1253 pointer-events: none; 1254 } 1255 1256 /* Temporary. Remove this along with the delete confirmation dialog 1257 when Undo delete is implemented. */ 1258 .cr-dialog-shield { 1259 background-color: black; 1260 } 1261 1262 /* Slideshow controls */ 1263 1264 .slideshow-toolbar { 1265 -webkit-box-align: center; 1266 -webkit-box-orient: horizontal; 1267 -webkit-box-pack: center; 1268 bottom: 0; 1269 display: none; 1270 left: 0; 1271 padding-bottom: 6px; 1272 pointer-events: none; 1273 position: absolute; 1274 right: 0; 1275 } 1276 1277 .gallery[tools][slideshow] .slideshow-toolbar { 1278 display: -webkit-box; 1279 } 1280 1281 .slideshow-toolbar > div { 1282 background-position: center; 1283 background-repeat: no-repeat; 1284 height: 68px; 1285 opacity: 0.5; 1286 pointer-events: auto; 1287 width: 68px; 1288 } 1289 1290 .slideshow-toolbar > div:hover { 1291 opacity: 1; 1292 } 1293 1294 .slideshow-toolbar > .slideshow-play { 1295 background-image: -webkit-image-set( 1296 url(../images/100/slideshow-play.png) 1x, 1297 url(../images/200/slideshow-play.png) 2x); 1298 margin-right: -2px; 1299 } 1300 1301 .gallery[slideshow='playing'] .slideshow-toolbar > .slideshow-play { 1302 background-image: -webkit-image-set( 1303 url(../images/100/slideshow-pause.png) 1x, 1304 url(../images/200/slideshow-pause.png) 2x); 1305 } 1306 1307 .slideshow-toolbar > .slideshow-end { 1308 background-image: -webkit-image-set( 1309 url(../images/100/slideshow-end.png) 1x, 1310 url(../images/200/slideshow-end.png) 2x); 1311 margin-left: -2px; 1312 } 1313 1314 .gallery > .header > button { 1315 -webkit-margin-start: 10px; 1316 cursor: default; 1317 height: 32px; 1318 min-width: 32px; 1319 width: 32px; 1320 } 1321 1322 .gallery > .header > .minimize-button { 1323 background: -webkit-image-set( 1324 url(chrome://resources/images/apps/topbar_button_minimize.png) 1x, 1325 url(chrome://resources/images/2x/apps/topbar_button_minimize.png) 2x) 1326 center; 1327 } 1328 1329 .gallery > .header > .maximize-button { 1330 background: -webkit-image-set( 1331 url(chrome://resources/images/apps/topbar_button_maximize.png) 1x, 1332 url(chrome://resources/images/2x/apps/topbar_button_maximize.png) 2x) 1333 center; 1334 } 1335 1336 .gallery > .header > .close-button { 1337 background: -webkit-image-set( 1338 url(chrome://resources/images/apps/topbar_button_close.png) 1x, 1339 url(chrome://resources/images/2x/apps/topbar_button_close.png) 2x) 1340 center; 1341 } 1342