Skip to content

Commit a1d72f1

Browse files
committed
fix: use CSS triangle pseudo-elements for onboarding arrows instead of rotated div
1 parent 49535c6 commit a1d72f1

2 files changed

Lines changed: 53 additions & 44 deletions

File tree

public/css/style.css

Lines changed: 50 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4468,47 +4468,66 @@ tbody tr:hover {
44684468
transform: translate(-50%, -50%);
44694469
}
44704470

4471-
.onboarding-card .card-arrow {
4471+
.onboarding-card[data-arrow]::before,
4472+
.onboarding-card[data-arrow]::after {
4473+
content: '';
44724474
position: absolute;
4473-
width: 14px;
4474-
height: 14px;
4475-
background: var(--bg-card);
4476-
border-left: 1px solid var(--border);
4477-
border-top: 1px solid var(--border);
4478-
z-index: 1;
4475+
width: 0;
4476+
height: 0;
44794477
}
44804478

4481-
.onboarding-card .card-arrow.up {
4482-
top: -8px;
4479+
.onboarding-card[data-arrow="up"]::before {
4480+
top: -10px;
44834481
left: 50%;
4484-
margin-left: -7px;
4485-
transform: rotate(45deg);
4486-
border-left-color: var(--border);
4487-
border-top-color: var(--border);
4488-
border-right: none;
4489-
border-bottom: none;
4482+
margin-left: -10px;
4483+
border-left: 10px solid transparent;
4484+
border-right: 10px solid transparent;
4485+
border-bottom: 10px solid var(--border);
44904486
}
44914487

4492-
.onboarding-card .card-arrow.down {
4493-
bottom: -8px;
4488+
.onboarding-card[data-arrow="up"]::after {
4489+
top: -9px;
44944490
left: 50%;
4495-
margin-left: -7px;
4496-
transform: rotate(225deg);
4497-
border-left-color: var(--border);
4498-
border-top-color: var(--border);
4499-
border-right: none;
4500-
border-bottom: none;
4491+
margin-left: -9px;
4492+
border-left: 9px solid transparent;
4493+
border-right: 9px solid transparent;
4494+
border-bottom: 9px solid var(--bg-card);
45014495
}
45024496

4503-
.onboarding-card .card-arrow.left {
4504-
left: -8px;
4497+
.onboarding-card[data-arrow="down"]::before {
4498+
bottom: -10px;
4499+
left: 50%;
4500+
margin-left: -10px;
4501+
border-left: 10px solid transparent;
4502+
border-right: 10px solid transparent;
4503+
border-top: 10px solid var(--border);
4504+
}
4505+
4506+
.onboarding-card[data-arrow="down"]::after {
4507+
bottom: -9px;
4508+
left: 50%;
4509+
margin-left: -9px;
4510+
border-left: 9px solid transparent;
4511+
border-right: 9px solid transparent;
4512+
border-top: 9px solid var(--bg-card);
4513+
}
4514+
4515+
.onboarding-card[data-arrow="left"]::before {
4516+
left: -10px;
45054517
top: 50%;
4506-
margin-top: -7px;
4507-
transform: rotate(-45deg);
4508-
border-left-color: var(--border);
4509-
border-top-color: var(--border);
4510-
border-right: none;
4511-
border-bottom: none;
4518+
margin-top: -10px;
4519+
border-top: 10px solid transparent;
4520+
border-bottom: 10px solid transparent;
4521+
border-right: 10px solid var(--border);
4522+
}
4523+
4524+
.onboarding-card[data-arrow="left"]::after {
4525+
left: -9px;
4526+
top: 50%;
4527+
margin-top: -9px;
4528+
border-top: 9px solid transparent;
4529+
border-bottom: 9px solid transparent;
4530+
border-right: 9px solid var(--bg-card);
45124531
}
45134532

45144533
.onboarding-card h2 {

public/js/app.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4090,8 +4090,7 @@ function positionOnboardingCard(selector) {
40904090
card.style.top = '';
40914091
card.style.left = '';
40924092
card.style.transform = '';
4093-
const arrow = card.querySelector('.card-arrow');
4094-
if (arrow) arrow.remove();
4093+
delete card.dataset.arrow;
40954094
return;
40964095
}
40974096

@@ -4105,13 +4104,6 @@ function positionOnboardingCard(selector) {
41054104
const cardMaxH = window.innerHeight - 80;
41064105
const gap = 14;
41074106

4108-
// Remove old arrow and create a new one
4109-
const oldArrow = card.querySelector('.card-arrow');
4110-
if (oldArrow) oldArrow.remove();
4111-
const arrow = document.createElement('div');
4112-
arrow.className = 'card-arrow';
4113-
card.appendChild(arrow);
4114-
41154107
let top, left, arrowDir;
41164108
const approxCardH = Math.min(360, cardMaxH);
41174109

@@ -4145,16 +4137,14 @@ function positionOnboardingCard(selector) {
41454137
left = Math.max(16, Math.min(left, window.innerWidth - cardW - 16));
41464138
top = Math.max(16, Math.min(top, window.innerHeight - approxCardH - 16));
41474139

4148-
top = Math.max(16, Math.min(top, window.innerHeight - approxCardH - 16));
4149-
41504140
card.style.top = top + 'px';
41514141
card.style.left = left + 'px';
41524142
card.style.transform = 'none';
41534143

41544144
if (arrowDir) {
4155-
arrow.className = `card-arrow ${arrowDir}`;
4145+
card.dataset.arrow = arrowDir;
41564146
} else {
4157-
arrow.remove();
4147+
delete card.dataset.arrow;
41584148
}
41594149
}
41604150

0 commit comments

Comments
 (0)