为媒体查询断点添加辅助标识戳

标签:DX, CSS
分类:技术
3分钟阅读

tailwindcss 媒体查询系统断点一览

Breakpoint prefixMinimum widthCSS
sm640px@media (min-width: 640px) { ... }
md768px@media (min-width: 768px) { ... }
lg1024px@media (min-width: 1024px) { ... }
xl1280px@media (min-width: 1280px) { ... }
2xl1536px@media (min-width: 1536px) { ... }

需求

tailwindcss 为我们提供了 api 友好的 移动端布局设计优先媒体查询系统,不过该媒体查询系统断点的临界值对于初上手,还是会感到陌生。

所以吾辈基于减少记背需求特意声明如下组件,仅在开发模式下固定于页面左上角,时刻显示当前页面尺寸所处“断点”,直观易用。

实现源码

MediaQueryPromptStamp.tsx
/** 辅助 tailwind 媒体查询特性下断点系统的标记元素 */
function MediaQueryPromptStamp() {
  return (
    <i
      className={`
        before:content-['mini']
        xs:before:content-['xs']
        xs:before:hover:content-['xs/475px']
        sm:before:content-['sm']
        sm:before:hover:content-['sm/640px']
        md:before:content-['md']
        md:before:hover:content-['md/768px']
        lg:before:content-['lg']
        lg:before:hover:content-['lg/1024px']
        xl:before:content-['xl']
        xl:before:hover:content-['xl/1280px']
        2xl:before:content-['2xl']
        2xl:before:hover:content-['2xl/1536px']
        before:fixed
        before:left-2
        before:top-2
        before:z-50
        before:h-min
        before:min-w-max
        before:rounded-sm
        before:bg-secondary/40
        before:px-2
        before:py-0.5
        before:text-center
        before:text-sm
        before:not-italic
        before:text-secondary-foreground/40
        before:ring-2
        before:ring-secondary/40
        before:ring-offset-2
        before:hover:bg-secondary/90
        before:hover:text-secondary-foreground/90
        `
      }
    />
  );
}

export default MediaQueryPromptStamp;

当然的,多数实际项目里并没有依赖 tailwind 原子类,我们仍可以使用传统 CSS 来定义样式,同样基于上面的思路,定义一个服务于媒体查询断点的辅助标识戳。当然写原生 CSS 语句的工作可能会稍微繁重了。

@media (min-width: 1024px) {
  i.helper::before {
    /* ... */
    content: "lg",

    &:hover {
      content: "lg/1024px",
    }
  }
}

@media (min-width: 640px) { /* ... */ }

/* ... */

为媒体查询断点添加辅助标识戳

https://blog.ninoh.cc/loc-blog/11_media-query-prompt-stamp[Copy]
本文作者
ninohx96
创建/发布于
Published On
更新/发布于
Updated On
许可协议
CC BY-NC-SA 4.0

转载或引用本文时请遵守“署名-非商业性使用-相同方式共享 4.0 国际”许可协议,注明出处、不得用于商业用途!分发衍生作品时必须采用相同的许可协议。