用 @icestack/ui 构建适配微信小程序的 daisyui

这篇具有很好参考价值的文章主要介绍了用 @icestack/ui 构建适配微信小程序的 daisyui。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序ui tailwind,ui,微信小程序,css

用 @icestack/ui 构建适配微信小程序的 daisyui

  • 用 @icestack/ui 构建适配微信小程序的 daisyui
    • 前言
    • 思考与实践
    • 如何使用?
      • 安装
      • 初始化配置
      • 构建样式
    • 作为 tailwindcss plugin 来使用
      • 安装
      • 配置
      • 智能提示
    • 在微信小程序里使用
      • 安装
      • 注册
      • 构建
    • 演示小程序
    • 收到启发的项目
    • 参考地址

前言

daisyuitailwindcss 中最流行的纯 CSS 框架,然而它作用的平台只有 h5,直接在小程序中使用会报错,因为小程序的 CSS 选择器有很多限制,无法像 h5 那样自由。那么怎么样才能构建出适配小程序版本的 daisyui 呢?

思考与实践

在阅读了 daisyui 了诸多源码之后,我展开了思索,因为我认为它还能做的更好更自由。

为此我构建了 icestack 项目。和 daisyui 相同的是,它们都用于构建纯 CSS 框架。不同的是 icestack 的目的快速的生成一套属于你自己的 CSS 框架。也就是说你可以用 @icestack/ui 构建出 n 个你自己定制化之后的 daisyui

当然你可以使用内部提供的一套默认 范式(默认就是 daisyui), 也可以对它进行覆盖或者扩展。

你可以根据配置项,自由的去操纵所有 CSS范式的表现性状,包括不但限于:

  • 添加/减少/覆盖/修改 主题色给不同的组件 (比如: 按钮默认有 default, primary,success,warning,error, 你再去添加个secondary,accent色,并声明它们hover/focus/active等等状态)
  • 添加/减少/覆盖/修改组件的大小,形状,样式 (比如:按钮默认的尺寸有 sm,md,lg 三种尺寸,你可以再往里面添加 xs,xl,2xl… 的大小尺寸)
  • 不同的 CSS 组件走不同的 postcss 处理流程
  • 添加新的CSS组件到这套体系中来。

而且,这个生成器生成的 CSS 范式 结果入侵性非常小,默认情况下,它不会携带任何的 css reset/normalize/preflight 样式,只会全局注入一些计算出的 CSS 变量。

它的生成结果也非常的直观,你可以使用它自定义出想要的 UI 行为后,进行二次封装,或者提取成 preset, 从而在多个项目中共享。

如何使用?

安装

首先你必须安装好 nodejs 环境:

然后使用 npm init 创建 package.json,再在 package.json 目录下,执行命令:

# yarn / pnpm
npm i -D @icestack/ui

@icestack/ui 将会被下载并安装在你的本地,同时一个二进制命令 icestack 将会被注册

初始化配置

首先在安装好 @icestack/ui 之后你可以执行:

npx icestack init

这个命令会在当前执行目录下生成一个 icestack.config.js 文件,默认内容如下:

/**
 * @type {import('@icestack/ui').Config}
 */
const config = {
  outdir: './my-ui'
}

module.exports = config

构建样式

你可以在 config 中,配置你自己的样式和选项,完成之后执行:

npx icestack build

或者把这个脚本加入你的 package.json:

{
  "scripts": {
+   "build:ui": "icestack build"
  },
}

然后执行 npm run build:ui 也能达到同样的效果。这样当前目录的 my-ui 就生成了很多的 css/js 文件,你可以直接引入使用,当然它们也可以作为 tailwindcss plugin 来使用。

作为 tailwindcss plugin 来使用

安装

在以 CLI 使用 @icestack/ui 执行 icestack build 后,它把所有的资源文件生成在你的本地的目录中了

然后我们安装 @icestack/tailwindcss

# yarn / pnpm
npm i -D @icestack/tailwindcss

配置

然后传递一个 loadDirectory 配置项告诉插件刚刚生成的位置:

const path = require('node:path')
const { icestackPlugin } = require('@icestack/tailwindcss')

/** @type {import('tailwindcss').Config} */
module.exports = {
  // ...
  plugins: [
    icestackPlugin({
      loadDirectory: path.resolve(__dirname, 'my-ui'),
      // other options
      // 是否注入 theme ,为 true 生成器的 primary success warning 这些颜色会进入 tailwindcss theme extend 配置
      loadConfig: true
    })
  ]
}

接着只要我们正常运行项目,当前目录下的 my-ui 里就生成了对应的 cssjs 相关的代码

智能提示

通常我们每次保存 tailwind.config.js 文件,tailwindcss 插件就会去重新读取插件并生成智能提示

所以我们每一次执行 icestack build 后,都可以去 tailwind.config.js 进行文件的保存操作,这样智能提示就有了。

当然现在构建出的版本还是 h5 的,我们要通过加载 @icestack/presets 里的小程序预设来构建出适配小程序的样式。

在微信小程序里使用

目前 @icestack/presets 必须要配合 weapp-tailwindcss 一起使用,在使用前请确保 weapp-tailwindcss 安装配置成功。

安装

@icestack/presets 内部实现了一套预设来兼容微信小程序

你可以使用 @icestack/presets 中导出的 miniprogramPreset 来构建出小程序版本的默认 ui

首先我们安装 @icestack/presets

# yarn / pnpm
npm i -D @icestack/presets

注册

然后在 icestack.config.js 中注册

const { miniprogramPreset } = require('@icestack/presets')
/**
 * @type {import('@icestack/ui').Config}
 */
const config = {
  // 可以根据环境变量,把 h5 和 小程序的 outdir 设置为不同的目录
  outdir: './my-ui',
  presets: [miniprogramPreset()]
}

module.exports = config

构建

然后你执行命令:

npx icestack build

构建出的就是适配小程序的库了。

当然还有更多更自由的使用方式,在此不细讲,详见icestack官网

演示小程序

微信小程序ui tailwind,ui,微信小程序,css

小程序源码 Github 地址

收到启发的项目

本项目收到了 tailwindcss,sass,postcss,daisyui,antd,vant 等等项目和思想的启发。

参考地址

Github

icestack官网

Storybook 演示地址

weapp-tailwindcss官网文章来源地址https://www.toymoban.com/news/detail-762447.html

到了这里,关于用 @icestack/ui 构建适配微信小程序的 daisyui的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在uniapp中,微信小程序获取胶囊的高度、宽度,且适配微信小程序、App

    H5: 微信小程序: 方法: 使用: 1、引入: 2、

    2024年02月05日
    浏览(64)
  • uniapp微信小程序横竖屏切换样式适配

    一、首先明白要使用什么布局才能实现横竖屏适配?  1、rpx布局是不能直接实现的,写 两套(横屏、竖屏)样式 才可以达到想要的效果  2、使用: 百分比、rem、vwvh、vminvmax、px(px布局在不同设备上有差异 ) 都可以一套样式实现横竖屏适配 二、本文重点说css3的两个属性

    2024年02月16日
    浏览(42)
  • uniapp echarts 适配H5与微信小程序

    接上文:uniapp 微信小程序使用echarts,这篇文章目的为使用uniapp时提供一个同时兼容H5和小程序的echarts组件,在使用时尽量减少心智负担。 首先修改uniapp 微信小程序使用echarts中的 ec-canvas 组件,将initChart方法置于该组件内部,而不是存在于业务组件中。 1.1 在 ec-canvas 组件m

    2024年02月06日
    浏览(44)
  • 微信小程序自定义导航栏机型适配--底部Tabbar--view高度--底部按钮适配

    自定义微信小程序头部导航栏 自定义微信小程序头部导航栏,有几种方式 方式一 定义此方法后,头部的导航栏会去掉,导航栏下的元素会直接向上移动到原导航栏的位置,可以再app.json配置成全局沉浸式导航栏,以及在单页面配置沉浸式导航栏。 方式二 使用组件 这里使用

    2024年02月02日
    浏览(53)
  • 微信小程序底部按钮适配iPhoneX以上,显示遮挡问题

    只需要在给底部按钮加个样式 iPhone6/7/8效果 iphoneX以上:

    2024年01月24日
    浏览(52)
  • 微信小程序适配iphoneX,XR,12及以上,获取底部安全区域

    iphone x及以上的异形屏top高度为44px(或以上),非异形屏为20px。 先判断是否为异形屏,如果是,获取到底部小黑条区域的高度。在页面设置底边距padding-bottom/margin-bottom,把内容区域隔开。 小黑条区域高度=屏幕高度-安全区域的bottom值,安全区域指的是内容可见区域 注意小

    2024年03月11日
    浏览(71)
  • uniapp自定义全局loading组件(目前只适配微信小程序)

    1.首先在项目根目录创建vue.config.js文件代码如下; 2.main.js添加这段代码替换uniapp全局loading方法并且全局挂载组件 3.添加loading组件通过vuex控制组件loading状态

    2024年02月06日
    浏览(48)
  • uniapp实现微信小程序横屏适配问题demo效果(整理)

    使用VMIN进行布局 先了解css3的两个属性vmax和vmin 竖屏布局的时候,750rpx就是竖屏布局屏幕的宽度,vmin不管横竖屏的情况下,100vmin都是手机屏幕的宽度,所以rpx与vmin之间有一个换算的关系:x rpx=( x * 100 / 750)vmin。 也就是说: 75rpx转化为vmin就是 75 * 100/750=10vmin 所以我们将rpx转化

    2024年02月11日
    浏览(48)
  • 微信小程序之scroll-view自适配屏幕高度解决方案

    需求说明: 一般用于列表数据的展示(带有搜索框),根据官方文档,scroll-view需要固定一个高度,那么,对于不同的手机分辨率来说,可能显示的效果就不一样了,有的没到底,有的显示不全等等 解决方案:   不同的手机,但是可以通过计算,获取到scroll-view的填充高度。

    2024年02月12日
    浏览(59)
  • uniapp小技巧之选择本地文件(注意这个方法只适配微信小程序和h5,app端未适配)

    注意注意一定注意app端不能用,想要app端选择上传文件去插件市场寻找,或私信我,我告诉你方法

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包