mirror of
https://github.com/usatiuk/photos.git
synced 2025-10-28 23:37:48 +01:00
better photo viewing experience
preload photos photo scale animation
This commit is contained in:
@@ -14,7 +14,12 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
box-shadow: $pt-elevation-shadow-4;
|
|
||||||
|
img {
|
||||||
|
box-shadow: $pt-elevation-shadow-4;
|
||||||
|
}
|
||||||
|
|
||||||
|
transition: transform 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#photoOverlayDrawer {
|
#photoOverlayDrawer {
|
||||||
@@ -29,7 +34,7 @@
|
|||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
background-color: $light-gray5;
|
background-color: $light-gray5;
|
||||||
box-shadow: $pt-elevation-shadow-4;
|
box-shadow: $pt-elevation-shadow-4;
|
||||||
transition: transform 0.5s;
|
transition: transform 0.3s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,6 +42,10 @@
|
|||||||
.bp3-overlay-appear {
|
.bp3-overlay-appear {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|
||||||
|
#photo {
|
||||||
|
transform: scale(0.95, 0.95);
|
||||||
|
}
|
||||||
|
|
||||||
#photoOverlayDrawer {
|
#photoOverlayDrawer {
|
||||||
transform: translate(10rem);
|
transform: translate(10rem);
|
||||||
}
|
}
|
||||||
@@ -46,6 +55,10 @@
|
|||||||
.bp3-overlay-appear-active {
|
.bp3-overlay-appear-active {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
|
||||||
|
#photo {
|
||||||
|
transform: scale(1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
#photoOverlayDrawer {
|
#photoOverlayDrawer {
|
||||||
transform: translate(0rem);
|
transform: translate(0rem);
|
||||||
}
|
}
|
||||||
@@ -55,6 +68,10 @@
|
|||||||
.bp3-overlay-exit {
|
.bp3-overlay-exit {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
|
||||||
|
#photo {
|
||||||
|
transform: scale(1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
#photoOverlayDrawer {
|
#photoOverlayDrawer {
|
||||||
transform: translate(0rem);
|
transform: translate(0rem);
|
||||||
}
|
}
|
||||||
@@ -63,9 +80,12 @@
|
|||||||
.bp3-overlay-exit-active {
|
.bp3-overlay-exit-active {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|
||||||
|
#photo {
|
||||||
|
transform: scale(0.95, 0.95);
|
||||||
|
}
|
||||||
|
|
||||||
#photoOverlayDrawer {
|
#photoOverlayDrawer {
|
||||||
transform: translate(10rem);
|
transform: translate(10rem);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import { PhotoCard } from "./PhotoCard";
|
|||||||
import { Button, Classes, Overlay, Spinner } from "@blueprintjs/core";
|
import { Button, Classes, Overlay, Spinner } from "@blueprintjs/core";
|
||||||
import { UploadButton } from "./UploadButton";
|
import { UploadButton } from "./UploadButton";
|
||||||
import { Photo } from "./Photo";
|
import { Photo } from "./Photo";
|
||||||
|
import { getPhotoThumbPath } from "~redux/api/photos";
|
||||||
|
|
||||||
export interface IOverviewComponentProps {
|
export interface IOverviewComponentProps {
|
||||||
photos: IPhotoReqJSON[];
|
photos: IPhotoReqJSON[];
|
||||||
@@ -71,7 +72,7 @@ export const OverviewComponent: React.FunctionComponent<IOverviewComponentProps>
|
|||||||
onClose={() => {
|
onClose={() => {
|
||||||
setOverlayOpen(false);
|
setOverlayOpen(false);
|
||||||
}}
|
}}
|
||||||
transitionDuration={500}
|
transitionDuration={300}
|
||||||
lazy
|
lazy
|
||||||
>
|
>
|
||||||
<div id="photoOverlayContainer">
|
<div id="photoOverlayContainer">
|
||||||
|
|||||||
@@ -45,6 +45,12 @@ export class PhotoCardComponent extends React.PureComponent<
|
|||||||
*/
|
*/
|
||||||
public render(): JSX.Element {
|
public render(): JSX.Element {
|
||||||
const fileExists = this.props.photo.uploaded;
|
const fileExists = this.props.photo.uploaded;
|
||||||
|
|
||||||
|
const preloadImage = (url: string) => {
|
||||||
|
const img = new Image();
|
||||||
|
img.src = url;
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card
|
<Card
|
||||||
className="photoCard"
|
className="photoCard"
|
||||||
@@ -55,6 +61,11 @@ export class PhotoCardComponent extends React.PureComponent<
|
|||||||
<img
|
<img
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
src={getPhotoThumbPath(this.props.photo, 512)}
|
src={getPhotoThumbPath(this.props.photo, 512)}
|
||||||
|
onMouseEnter={() =>
|
||||||
|
preloadImage(
|
||||||
|
getPhotoThumbPath(this.props.photo, 2048),
|
||||||
|
)
|
||||||
|
}
|
||||||
></img>
|
></img>
|
||||||
) : (
|
) : (
|
||||||
<Spinner />
|
<Spinner />
|
||||||
|
|||||||
Reference in New Issue
Block a user