/Click feedback
Click feedback • CSS
View More Text Swap
A borderless View More label that swaps vertically on hover.
Installation
Terminal
npx shadcn@latest add https://microkit.co/r/view-more-text-swap.jsonCode
TypeScript component
1export function ViewMoreTextSwap() {2return (3<button type="button" className="view-more-text-swap">4<span className="view-more-text-swap-label view-more-text-swap-label-current">5View More6</span>7<span8className="view-more-text-swap-label view-more-text-swap-label-incoming"9aria-hidden="true"10>11View More12</span>13</button>14);15}
CSS
1.view-more-text-swap {2appearance: none;3position: relative;4display: inline-flex;5align-items: center;6justify-content: center;7overflow: hidden;8border: 0;9background: transparent;10padding: 0;11color: #f0f0f0;12font-family: Arial, Helvetica, sans-serif;13cursor: pointer;14}15.view-more-text-swap-label {16z-index: 1;17display: flex;18white-space: nowrap;19font-size: 16px;20font-weight: 400;21line-height: normal;22transition: transform .36s cubic-bezier(.16, 1, .3, 1), opacity .22s ease;23}24.view-more-text-swap-label-current {25position: relative;26}27.view-more-text-swap-label-incoming {28position: absolute;29opacity: 0;30transform: translateY(160%);31}32.view-more-text-swap:hover .view-more-text-swap-label-current,33.view-more-text-swap:focus-visible .view-more-text-swap-label-current {34opacity: 0;35transform: translateY(-160%);36}37.view-more-text-swap:hover .view-more-text-swap-label-incoming,38.view-more-text-swap:focus-visible .view-more-text-swap-label-incoming {39opacity: 1;40transform: translateY(0);41}42.view-more-text-swap:focus-visible {43outline: 2px solid #f97316;44outline-offset: 4px;45}