TailwindCSS 从零开始 - 切一个响应式留言按钮画面

rwd button

前面了解基础的使用後,来实战一个简单的留言按钮与如何变成响应式的呈现。

基础架构

  • 有大头照
  • 有留言区按钮

进行切版

  1. 跟 Bootstrap 有点像,最外层使用 .container 订调介面为满版。
  2. 制定灰色底色区块,并且要符合整个页面宽,使用 .w-full 语法,透过提示工具可以看到 .w-full = width:100%,为了要让大头照跟留言按钮横向呈现,在给予一个 .flex 语法。
  3. 大头照部分使用 picsum 的随机图片,并且设定外层有白框,使用 .border-white .border-2 两个语法。
  4. 按钮部分使用 .flex-1,其作用是让按钮自适应缩放,不受初始大小影响。
  5. 按钮加上当有 hover 时,背景色可以变换,只要写上 hover:bg-gray-300 就可以罗!
 <div class="container mx-auto mt-3">
  <h1 class="block text-gray-800 text-xl py-5 font-bold">写一个留言按钮</h1>
  <div class="w-full px-4 py-3 flex box-border rounded-lg bg-gray-400">
    <div
      class="w-12 mr-3 flex-shrink-0 rounded-full border-white border-2 overflow-hidden"
    >
      <img src="https://picsum.photos/200/200?random=1" alt="" />
    </div>
    <button class="flex-1 bg-gray-200 rounded-full hover:bg-gray-300">
      <p class="text-left pl-3 text-gray-600  text-md">在想些什麽...</p>
    </button>
  </div>
</div>

这样就切完了,满单纯也简单,而且可以快速的达到想要的效果。

加上自订义的属性

虽然 TailwindCSS 已经有预设一些样式的状态,但并不是每个都有支援,假设现在 PM 说:客户想要在按钮外面加上外框,并且要在点击时出现。

这时候我就要去找 variants 预设中这个 ringWidth 的 Utility,然後发现初始设定并没有 active 这个属性。

ringWidth: ['responsive', 'focus-within', 'focus'],

这时候就可以自行扩增其属性,可以到 tailwind.config.js 中的 extends,加上这个属性,

module.exports = {
  purge: ['./**/*.html'],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {
      ringWidth: ['active'], //加在这里
    },
  },
  plugins: [],
}

加好之後记得要重新编译 TailwindCSS。

此时,就会看到我只有打 ac,就会出现对应的选项。

active

再来就只要加上 active 後,ring 的宽度即可。

 <button class="flex-1 bg-gray-200 rounded-full hover:bg-gray-300 active:ring-4">
  <p class="text-left pl-3 text-gray-600  text-md">在想些什麽...</p>
</button>

然後加好之後,在滑鼠点击时,就会出现外框了。

ring

加上响应式

前面有提到 TailwindCSS 任何的 Utility 都可以加上响应式。假设我在不同断点要呈现外框都是不同颜色,可以这样写

  <div class="container mx-auto mt-3">
  <h1 class="block text-gray-800 text-xl py-5 font-bold">写一个留言按钮</h1>
  <div
    class="w-full px-4 py-3 flex box-border rounded-lg bg-gray-400 sm:bg-red-400 md:bg-yellow-400 lg:bg-green-400 xl:bg-blue-400"
  >
    ...
  </div>
</div>

然後就会看到当解析度不同的时候会呈现不同的颜色。

screen < sm(640px)

phone

screen > sm(640px)

sm

screen > md(768px)

md

screen > lg(1024px)

lg

screen > xl(1280px)

xl

写到这边完全没有写到任何一行 CSS,但却可以实现样式与响应式功能,真是非常棒呢!


<<:  用React刻自己的投资Dashboard Day15 - 投资Dashboard 2.0版 Wireframe

>>:  [Day 16] Reactive Programming -Reactor(ConnectableFlux)

#14 JS: create a calculator by prompt()

Final Calculator Design <!DOCTYPE html> <...

[Day 1] 参赛宣言

前言 首先,先来简单自我介绍下,学习期间我是有份与软件工程师完全无关的全职工作,但利用工作以外的其他...

Day 21 资料宝石:【Lab】RDS架构 建立自己的第一台云端资料库 (上)

今天我们将开始进行 RDS Lab 练习,架构自己的第一台云端资料库。由於此章节非常大,我将会分成...

D6-用 Swift 和公开资讯,打造投资理财的 Apps { 加上 filter,实作搜寻 上市/上柜 功能 }

列表的确是在有限萤幕空间中,呈现大量资料的一个手法。但从前一篇可以知道,你这个列表会有数千笔资料的时...

【D18】尝试料理:取得所有股票清单

前言 有了这些功能後,想要知道能不能跑所有的股票,然後做这些事情,无论是行情订阅,还是历史资料。因此...