Eshu

 view release on metacpan or  search on metacpan

t/0245-realworld-css.t  view on Meta::CPAN

	content: attr(data-tooltip);
	position: absolute;
	bottom: calc(100% + 6px);
	left: 50%;
	transform: translateX(-50%);
	padding: 4px 8px;
	background: #333;
	color: #fff;
	font-size: 0.75rem;
	border-radius: 4px;
	white-space: nowrap;
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.2s;
}

[data-tooltip]:hover::after {
	opacity: 1;
}
END
	is(cs($code), $code, 'CSS: tooltip with pseudo-element');
}

# 16. card hover effect
{
	my $code = <<'END';
.hover-card {
	transform: translateY(0);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.hover-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 12px 24px rgba(0,0,0,0.15);
}
END
	is(cs($code), $code, 'CSS: hover lift effect');
}

# 17. @layer rule
{
	my $code = <<'END';
@layer base {
	*, *::before, *::after {
		box-sizing: border-box;
	}

	html {
		font-size: 16px;
		scroll-behavior: smooth;
	}
}

@layer components {
	.btn {
		display: inline-block;
		padding: 8px 16px;
	}
}
END
	is(cs($code), $code, 'CSS: @layer cascade layers');
}

# 18. container queries
{
	my $code = <<'END';
.sidebar {
	container-type: inline-size;
}

@container (min-width: 300px) {
	.widget {
		display: flex;
		gap: 12px;
	}
}

@container (min-width: 600px) {
	.widget {
		grid-template-columns: 1fr 2fr;
	}
}
END
	is(cs($code), $code, 'CSS: container queries');
}

# 19. scrollbar styling
{
	my $code = <<'END';
.scrollable {
	overflow-y: auto;
	scrollbar-width: thin;
	scrollbar-color: #888 transparent;
}

.scrollable::-webkit-scrollbar {
	width: 6px;
}

.scrollable::-webkit-scrollbar-track {
	background: transparent;
}

.scrollable::-webkit-scrollbar-thumb {
	background: #888;
	border-radius: 3px;
}
END
	is(cs($code), $code, 'CSS: scrollbar styling');
}

# 20. focus-visible
{
	my $code = <<'END';
:focus {
	outline: none;
}

:focus-visible {
	outline: 2px solid var(--color-primary);
	outline-offset: 2px;



( run in 0.590 second using v1.01-cache-2.11-cpan-e7c6538aa59 )