Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tran-quang-hung-portfolio
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
HungTQ
tran-quang-hung-portfolio
Commits
d6d58dc5
Commit
d6d58dc5
authored
Jun 29, 2026
by
HungTQ
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(ui): add project card image backdrops
parent
dcbf04ea
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
43 additions
and
2 deletions
+43
-2
App.css
src/App.css
+38
-1
App.tsx
src/App.tsx
+5
-1
No files found.
src/App.css
View file @
d6d58dc5
...
...
@@ -476,6 +476,7 @@ h3 {
}
.project-card
{
isolation
:
isolate
;
min-height
:
330px
;
overflow
:
hidden
;
padding
:
clamp
(
22px
,
3vw
,
34px
);
...
...
@@ -490,6 +491,34 @@ h3 {
opacity
:
0
;
position
:
absolute
;
transition
:
opacity
220ms
ease
;
z-index
:
0
;
}
.project-card
::after
{
background-position
:
center
top
;
background-size
:
cover
;
content
:
""
;
filter
:
blur
(
28px
)
saturate
(
1.12
);
inset
:
-46px
-34px
auto
-34px
;
min-height
:
42%
;
opacity
:
0.10
;
pointer-events
:
none
;
position
:
absolute
;
transform
:
scale
(
1.05
);
transition
:
opacity
220ms
ease
,
transform
220ms
ease
;
z-index
:
0
;
}
.project-card-1
::after
{
background-image
:
linear-gradient
(
180deg
,
transparent
,
rgba
(
255
,
255
,
255
,
0.88
)),
url("/aitalkmate-preview.png")
;
}
.project-card-2
::after
{
background-image
:
linear-gradient
(
180deg
,
transparent
,
rgba
(
255
,
255
,
255
,
0.88
)),
url("/tracking-calo-preview.png")
;
}
.project-card
:hover
{
...
...
@@ -502,6 +531,11 @@ h3 {
opacity
:
1
;
}
.project-card
:hover::after
{
opacity
:
0.16
;
transform
:
scale
(
1.08
);
}
.project-card
>
*
{
position
:
relative
;
z-index
:
1
;
...
...
@@ -678,14 +712,17 @@ h3 {
}
.project-index
{
color
:
rgba
(
8
,
126
,
164
,
0.
10
);
color
:
rgba
(
8
,
126
,
164
,
0.
22
);
font-family
:
Georgia
,
"Times New Roman"
,
serif
;
font-size
:
106px
;
font-weight
:
900
;
line-height
:
0.8
;
pointer-events
:
none
;
position
:
absolute
;
right
:
24px
;
top
:
22px
;
text-shadow
:
0
12px
34px
rgba
(
255
,
255
,
255
,
0.76
);
z-index
:
2
;
}
.project-meta
{
...
...
src/App.tsx
View file @
d6d58dc5
...
...
@@ -246,7 +246,11 @@ function App() {
<
div
className=
"project-grid"
>
{
projects
.
map
((
project
,
index
)
=>
(
<
article
className=
"project-card reveal"
key=
{
project
.
name
}
style=
{
{
'--delay'
:
`${index * 110}ms`
}
as
CSSProperties
}
>
<
article
className=
{
`project-card project-card-${index + 1} reveal`
}
key=
{
project
.
name
}
style=
{
{
'--delay'
:
`${index * 110}ms`
}
as
CSSProperties
}
>
<
div
className=
"project-index"
>
0
{
index
+
1
}
</
div
>
<
div
className=
{
`project-preview project-preview-${index + 1} project-preview-count-${project.previews?.length ?? 1}`
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment