Skip to content

Commit 131add2

Browse files
committed
feat(styles): add link-card styling for remark-linkcard plugin
OG component-like appearance for auto-generated link cards with: - Responsive card layout (text left, image right) - Hover effects with subtle transform and shadow - Dark mode support - Mobile-first responsive breakpoint at 480px
1 parent ccaa1a7 commit 131add2

1 file changed

Lines changed: 116 additions & 0 deletions

File tree

src/styles/blog.css

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,108 @@ article.blog {
515515
display: none;
516516
}
517517
}
518+
519+
/* リンクカード(remark-linkcard生成) */
520+
a.link-card {
521+
display: flex !important;
522+
box-sizing: border-box;
523+
width: auto;
524+
max-width: 100%;
525+
border: 1px solid var(--gray);
526+
border-radius: var(--radius-lg);
527+
padding: var(--space-4);
528+
gap: var(--space-3);
529+
background-color: rgba(255, 255, 255, 0.03);
530+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
531+
transition:
532+
transform var(--duration-normal) var(--ease-out),
533+
box-shadow var(--duration-normal) var(--ease-out);
534+
text-decoration: none !important;
535+
margin: var(--space-5) 0;
536+
overflow: hidden;
537+
538+
&:hover {
539+
transform: translateY(-2px);
540+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
541+
text-decoration: none !important;
542+
543+
.link-card__image img {
544+
transform: scale(1.05);
545+
}
546+
}
547+
}
548+
549+
.link-card__image {
550+
width: 120px;
551+
min-width: 120px;
552+
max-width: 120px;
553+
height: 90px;
554+
overflow: hidden;
555+
border-radius: var(--radius-sm);
556+
flex-shrink: 0;
557+
order: 1;
558+
559+
img {
560+
width: 100%;
561+
height: 100%;
562+
max-width: 100%;
563+
display: block;
564+
object-fit: cover;
565+
transition: transform var(--duration-slow) var(--ease-out);
566+
}
567+
}
568+
569+
.link-card__content {
570+
display: flex;
571+
flex-direction: column;
572+
gap: var(--space-2);
573+
flex: 1;
574+
min-width: 0;
575+
justify-content: center;
576+
}
577+
578+
.link-card__title {
579+
font-weight: 600;
580+
color: var(--accent1);
581+
font-size: var(--font-size-m);
582+
line-height: var(--line-height-tight);
583+
display: -webkit-box;
584+
-webkit-line-clamp: 2;
585+
-webkit-box-orient: vertical;
586+
overflow: hidden;
587+
}
588+
589+
.link-card__description {
590+
color: var(--color);
591+
font-size: var(--font-size-s);
592+
line-height: var(--line-height-normal);
593+
display: -webkit-box;
594+
-webkit-line-clamp: 2;
595+
-webkit-box-orient: vertical;
596+
overflow: hidden;
597+
}
598+
599+
.link-card__meta {
600+
margin-top: auto;
601+
}
602+
603+
.link-card__site {
604+
color: var(--gray);
605+
font-size: var(--font-size-xs);
606+
}
607+
608+
@media (max-width: 480px) {
609+
.link-card {
610+
flex-direction: column;
611+
}
612+
613+
.link-card__image {
614+
width: 100%;
615+
min-width: 100%;
616+
height: 160px;
617+
order: 0;
618+
}
619+
}
518620
}
519621

520622
body.dark article.blog {
@@ -558,4 +660,18 @@ body.dark article.blog {
558660
color: var(--color);
559661
}
560662
}
663+
664+
/* リンクカード - ダークモード */
665+
a.link-card {
666+
background-color: rgba(0, 0, 0, 0.1);
667+
border-color: var(--gray);
668+
669+
&:hover {
670+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
671+
}
672+
}
673+
674+
.link-card__title {
675+
color: var(--accent1);
676+
}
561677
}

0 commit comments

Comments
 (0)