当前位置: 首页 > wzjs >正文

淘宝网站做多久wordpress后台插件

淘宝网站做多久,wordpress后台插件,品牌网站建设需要哪些规划,蓬莱网页设计ok,经过学习Tailwindcss我决定将此专栏建设成为一个Tailwindcss实战专栏,我将在专栏内完成5050挑战:50天50个Tailwindcss练习项目,欢迎大家订阅!!! Tailwind CSS v4 带来了更强大的主题定制能力…

ok,经过学习Tailwindcss我决定将此专栏建设成为一个Tailwindcss实战专栏,我将在专栏内完成5050挑战:50天50个Tailwindcss练习项目,欢迎大家订阅!!!

Tailwind CSS v4 带来了更强大的主题定制能力,给了前端开发者更加灵活的设计空间。
今天,我们将来学习 Tailwind CSS v4 的主题相关特性,并且给出一套实践模板 🚀

主题相关核心 API 介绍

Tailwind v4 主题使用 @theme 定义,并支持直接使用 CSS 变量来简化主题设计。下面是官方文档链接:

  • 主题变量
  • 添加自定义样式
  • 函数和指令

下面介绍集中常见的主题相关的指令以及自定义变体。

1. @theme 元素

Tailwind v4 引入 @theme 用来定义 CSS 变量,与v3版本需要在 tailwind.config.js 里配置相比,更为简洁统一。

@theme {--color-primary: var(--primary);--radius-md: calc(var(--radius) - 2px);
}

2. @custom-variant

Tailwind v4 支持自定义优先级,实现更灵活的 dark mode 、 sidebar mode 等 UI 体验的切换。

@custom-variant dark (&:is(.dark *));

定义了一个名为 dark 的自定义变体,它会匹配所有带有 .dark 类的元素内部的所有元素。

3. @layer

虽然 Tailwind 能满足大部分样式需求,但有时候还是需要编写纯 CSS。这时,@layer指令就登场了!

  • 使用 @layer 指令告诉 Tailwind 一组自定义样式属于哪个 bucket。有效图层为 basecomponentsutilities
    • 三个图层的生效顺序是不一致的,作用在同一元素上的相同的样式属性,生效优先级顺序是:utilities > components >base
  • 使用 @apply 将任何现有工具类内联到你自己的自定义 CSS 中
  • 你仍然可以在你的css文件中写出任何原生的css样式,但是通常不建议这么做,这会增加维护难度。
@layer base {body {@apply bg-background text-foreground;}
}@layer components {card {@apply bg-card text-card-foreground;}
}@layer utilities {.heading {@apply text-4xl font-bold;}
}

利用Theme 实现主题切换

我们可以通过 :root.dark 样式规则来分别定义不同主题模式下的 变量 值,然后配合 @theme 以及 自定义变体 展开 Tailwind 内部设计。

@custom-variant dark (&:is(.dark *));@theme {--color-background: var(--background);--color-foreground: var(--foreground);--color-card: var(--card);--color-card-foreground: var(--card-foreground);--color-popover: var(--popover);--color-popover-foreground: var(--popover-foreground);--color-primary: var(--primary);--color-primary-foreground: var(--primary-foreground);--color-secondary: var(--secondary);--color-secondary-foreground: var(--secondary-foreground);--color-muted: var(--muted);--color-muted-foreground: var(--muted-foreground);--color-accent: var(--accent);--color-accent-foreground: var(--accent-foreground);--color-destructive: var(--destructive);--color-destructive-foreground: var(--destructive-foreground);--color-border: var(--border);--color-input: var(--input);--color-ring: var(--ring);--color-chart-1: var(--chart-1);--color-chart-2: var(--chart-2);--color-chart-3: var(--chart-3);--color-chart-4: var(--chart-4);--color-chart-5: var(--chart-5);--radius-sm: calc(var(--radius) - 4px);--radius-md: calc(var(--radius) - 2px);--radius-lg: var(--radius);--radius-xl: calc(var(--radius) + 4px);--color-sidebar: var(--sidebar);--color-sidebar-foreground: var(--sidebar-foreground);--color-sidebar-primary: var(--sidebar-primary);--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);--color-sidebar-accent: var(--sidebar-accent);--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);--color-sidebar-border: var(--sidebar-border);--color-sidebar-ring: var(--sidebar-ring);
}:root {--background: oklch(1 0 0);--foreground: oklch(0.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(0.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(0.145 0 0);--primary: oklch(0.205 0 0);--primary-foreground: oklch(0.985 0 0);--secondary: oklch(0.97 0 0);--secondary-foreground: oklch(0.205 0 0);--muted: oklch(0.97 0 0);--muted-foreground: oklch(0.556 0 0);--accent: oklch(0.97 0 0);--accent-foreground: oklch(0.205 0 0);--destructive: oklch(0.577 0.245 27.325);--destructive-foreground: oklch(0.577 0.245 27.325);--border: oklch(0.922 0 0);--input: oklch(0.922 0 0);--ring: oklch(0.708 0 0);--chart-1: oklch(0.646 0.222 41.116);--chart-2: oklch(0.6 0.118 184.704);--chart-3: oklch(0.398 0.07 227.392);--chart-4: oklch(0.828 0.189 84.429);--chart-5: oklch(0.769 0.188 70.08);--radius: 0.625rem;--sidebar: oklch(0.985 0 0);--sidebar-foreground: oklch(0.145 0 0);--sidebar-primary: oklch(0.205 0 0);--sidebar-primary-foreground: oklch(0.985 0 0);--sidebar-accent: oklch(0.97 0 0);--sidebar-accent-foreground: oklch(0.205 0 0);--sidebar-border: oklch(0.922 0 0);--sidebar-ring: oklch(0.708 0 0);
}.dark {--background: oklch(0.145 0 0);--foreground: oklch(0.985 0 0);--card: oklch(0.145 0 0);--card-foreground: oklch(0.985 0 0);--popover: oklch(0.145 0 0);--popover-foreground: oklch(0.985 0 0);--primary: oklch(0.985 0 0);--primary-foreground: oklch(0.205 0 0);--secondary: oklch(0.269 0 0);--secondary-foreground: oklch(0.985 0 0);--muted: oklch(0.269 0 0);--muted-foreground: oklch(0.708 0 0);--accent: oklch(0.269 0 0);--accent-foreground: oklch(0.985 0 0);--destructive: oklch(0.396 0.141 25.723);--destructive-foreground: oklch(0.637 0.237 25.331);--border: oklch(0.269 0 0);--input: oklch(0.269 0 0);--ring: oklch(0.439 0 0);--chart-1: oklch(0.488 0.243 264.376);--chart-2: oklch(0.696 0.17 162.48);--chart-3: oklch(0.769 0.188 70.08);--chart-4: oklch(0.627 0.265 303.9);--chart-5: oklch(0.645 0.246 16.439);--sidebar: oklch(0.205 0 0);--sidebar-foreground: oklch(0.985 0 0);--sidebar-primary: oklch(0.488 0.243 264.376);--sidebar-primary-foreground: oklch(0.985 0 0);--sidebar-accent: oklch(0.269 0 0);--sidebar-accent-foreground: oklch(0.985 0 0);--sidebar-border: oklch(0.269 0 0);--sidebar-ring: oklch(0.439 0 0);
}
... 其他主题样式

最佳实践:切换主题按钮组件

下面是我创建的用于切换主题的按钮组件,大家可以参考一下:

<template><button@click="toggleTheme"class="flex items-center gap-2 rounded bg-gray-200 px-4 py-2 text-gray-800 transition-colors duration-300 hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-100 dark:hover:bg-gray-600"><span v-if="isDark">🌙 暗黑</span><span v-else>☀️ 亮色</span></button>
</template><script setup>import { ref, onMounted } from 'vue'const isDark = ref(false)const toggleTheme = () => {isDark.value = !isDark.valuedocument.documentElement.classList.toggle('dark')localStorage.setItem('theme', isDark.value ? 'dark' : 'light')}onMounted(() => {const theme = localStorage.getItem('theme')isDark.value = theme === 'dark'if (isDark.value) {document.documentElement.classList.add('dark')}})
</script>

其他

当然tailwindcss v4支持丰富的 自定义样式 复杂样式 以及 自定义变体,今天们探讨一些常用的主题配置和规则。

Tailwind CSS v4 主题相关引入,让你从分散的属性处理升级到全局统一。


文章转载自:

http://uIKjZ4Mu.npqps.cn
http://lHFkRK3U.npqps.cn
http://kQDKB3pr.npqps.cn
http://2KVlyNEj.npqps.cn
http://OhX8zAhs.npqps.cn
http://Rg9eUhFW.npqps.cn
http://OShPzdF1.npqps.cn
http://SqX6Ujdq.npqps.cn
http://J6uvkSey.npqps.cn
http://7x2LlSyo.npqps.cn
http://wpRKVuh9.npqps.cn
http://urYRep01.npqps.cn
http://Vl5tXFuM.npqps.cn
http://i9E9TfwH.npqps.cn
http://bw1G0iap.npqps.cn
http://J2LflIYz.npqps.cn
http://XclBuzNA.npqps.cn
http://XhF6l95T.npqps.cn
http://xjNNMCuT.npqps.cn
http://X3jeZc0Y.npqps.cn
http://vmT36MyU.npqps.cn
http://pmou4JAV.npqps.cn
http://zzbc7csK.npqps.cn
http://EgC6hlMl.npqps.cn
http://BzlOSvJN.npqps.cn
http://e2029y4O.npqps.cn
http://T6mUyFfS.npqps.cn
http://w1nnDDuM.npqps.cn
http://yfWfv1eY.npqps.cn
http://pmMZ7BHQ.npqps.cn
http://www.dtcms.com/wzjs/775872.html

相关文章:

  • 有代做医学统计图的网站吗vps可以同时做ss和网站吗
  • 网站开发 法律电商广告网络推广
  • seo网站整站优化iis6 静态网站
  • dw做网站吉林手机版建站系统价格
  • 住房和建设执业资格注册中心网站巴彦淖尔市 网站建设
  • 优化网站的目的深圳小程序外包开发
  • wordpress发布网站Wordpress图片加载优化
  • 电子商务网站购物车怎么做百度关键词指数工具
  • 在线教育网站模板沪尚茗居和沪佳哪个好
  • 软装设计师招聘上海网站seo招聘
  • jsp网站开发实现增删改查风雨同舟网站建设
  • 哪些网站可以做外部锚文本百度外推排名
  • dedecms购物网站大型网站运维公司
  • 网站费用怎么做分录广州市城乡建设部网站首页
  • 广州印刷网站建设学做网站论坛可信吗
  • 企业网站的建设的目标人物是重庆知名网站制作公司
  • 邯郸做网站服务商音乐分享网站开发
  • 单页网站制作网站开发案例详解下载
  • 双通网络网站建设中小型网站建设案例
  • 网站设计就业前景源码可以做网站吗
  • 浙江省嘉兴建设局官方网站平面设计培训机构排名
  • 如何用网页设计制作个人网站网站备案到期了怎么办
  • 如何进行企业营销型网站建设规划南京手机网站开发
  • 哪些人做数据监测网站西安高端网站制作公司
  • 网站设计实施方案wordpress 权限 页面
  • html网站素材企业网络营销的推广方法
  • 渭南网站建设远景现在那个网站做宣传有效果
  • 佛山做网站建设价格网站设置搜索框是什么知识点
  • 服务企业建设网站如何下载网页上的视频
  • 网站哪家好中山网站专业制作