tailwindcss真的好用吗?

写在前面

今天写一篇关于tailwindcss 的文章,其实这个css技术已经出现很久了,在一些大型项目很多人也已经在用了,虽然不是说必须要会吧,但是没听说过肯定是不行的,他的操作逻辑应该是和unocss差不多,但是今天我们不写unocss,因为我也没咋看,没有具体的demo给到你们,今天我们就简单的写一个demo看一下tailwindcss的实现优势到底是什么,今天就实现一个非常简单的登录页面,大概效果如下:下面我们分别使用三种方式实现,原生css,预编译器scss,和 tailwindcss 最后我会说一下我对tailwindcss的一些看法

在这里插入图片描述

使用原生实现
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Login</title>
</head>
<body id="root"><div class="container"><div class="c-top"><h2>TAILWINDCSS-前端.火鸡</h2></div><div class="c-bottom"><div class="c-input"><div class="c-icon"><img class="c-img" src="../assets/image/accout.png"></div><input class="c-inu" type="input" name=""></div><div class="c-input"><div class="c-icon"><img class="c-img" src="../assets/image/pwd.png"></div><input class="c-inu" type="password" name=""></div><button class="c-btn" type="button">立即登陆</button></div></div>
</body>
<style>
#root{height: 100svh;--tw-bg-opacity: 1;background-color: rgb(17 24 39 / var(--tw-bg-opacity));display: flex;justify-content: center;align-items: center;
}
.container{display: flex;flex-direction: column;width: 400px;
}
.c-top{height: 150px;background-color: #5386ec;box-sizing: border-box;display: flex;align-items: center;justify-content: center;color: #fff;border-radius: 10px 10px 0 0 ;    
}
.c-bottom{height: 300px;background-color: #fff;display: flex;flex-direction: column;align-items: center;justify-content: center;border-radius: 0 0 10px 10px;    
}
.c-input{width: 80%;margin: 20px 0;position: relative;display: flex;flex-direction: row;border-radius: 40px;}
.c-icon{width: 40px;height: 40px;background-color: #f3f3f3;border-radius: 10px 0 0 10px;padding: 10px;box-sizing: border-box;
}
.c-img{width: 100%;height: 100%;
}
.c-inu{width: calc(100% - 40px);outline: none;border:none;font-size: 20px;background-color: #f3f3f3;border-radius: 0 10px 10px 0;}
.c-btn{width: 80%;height: 40px;border-radius: 40px;border:none;font-size: 16px;color: #fff;background-color: #5386ec;
}</style></html>
  • 效果

在这里插入图片描述

使用scss 实现
<template><div class="container"><div class="content"><div class="c-top"><h2>TAILWINDCSS-前端.火鸡</h2></div><div class="c-bottom"><div class="i-inu"><div class="c-icon"><img src="./assets/accout.png" /></div><input type="text" /></div><div class="i-inu"><div class="c-icon"><img src="./assets/pwd.png" /></div><input type="password" /></div><button class="c-btn">立即登陆</button></div></div></div>
</template><script setup>
</script><style lang="scss" scoped>$baseColor: #5386ec;$bgColor : #f3f3f3;$baseUnitPx : 40px;$whiteColor: #ffffff;.common-flex-center {display: flex;justify-content: center;align-items: center;}.common-flex-col {display: flex;flex-direction: column;}.common-flex-row {display: flex;flex-direction: row;}.container {background-color: #191d2d;height: 100vh;@extend .common-flex-center;.content {@extend .common-flex-col;.c-top {width: 400px;height: 150px;background-color: $baseColor;color: $whiteColor;@extend .common-flex-center;}.c-bottom {width: 400px;padding: 20px;box-sizing: border-box;background-color: $whiteColor;@extend .common-flex-col;align-items: center;.i-inu {@extend .common-flex-row;margin: 20px 0;width: 80%;justify-content: center;background-color: $bgColor;border-radius: 10px;.c-icon {width: $baseUnitPx;height: $baseUnitPx;padding: 10px;box-sizing: border-box;img {width: 100%;height: 100%;}}input {width: calc(100% - $baseUnitPx);outline: none;font-size: 20px;border: none;background-color: $bgColor;border-radius: 0 10px 10px 0;}}.c-btn {width: 80%;height: $baseUnitPx;border: none;background-color: $baseColor;font-size: 16px;color: $whiteColor;border-radius: $baseUnitPx;}}}}
</style>
  • 效果

在这里插入图片描述

tailwindcss 实现
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Login</title></head><body><div class="flex h-screen w-full items-center justify-center bg-slate-900"><div class="w-400 flex flex-col"><div class="h-150 bg-custom-blue rounded-t-10 box-border flex items-center justify-center text-white"><h2 class="text-f-z-20">TAILWINDCSS-前端.火鸡</h2></div><div class="h-300 rounded-b-10 flex flex-col items-center justify-center bg-white"><div class="my-5 flex w-80 flex-row items-center"><div class="bg-f3 rounded-l-10 box-border flex h-40 w-40 items-center justify-center p-10"><img class="h-full w-full" src="https://img-blog.csdnimg.cn/direct/89ef557241ea4d719ec140882e5ed00e.png#pic_center" alt="" /></div><input style="width: calc(100% - 40px);" class="text-f-z-20 bg-f3 rounded-r-10 h-40 outline-none" type="text" placeholder="accout" /></div><div class="my-5 flex w-80 flex-row items-center"><div class="bg-f3 rounded-l-10 box-border flex h-40 w-40 items-center justify-center p-10"><img class="h-full w-full" src="https://img-blog.csdnimg.cn/direct/249b4c14085a4076aaff70ac32922e9c.png#pic_center" /></div><input style="width: calc(100% - 40px);" class="text-f-z-20 bg-f3 rounded-r-10 h-40 outline-none" type="password" placeholder="password" /></div><button class="bg-custom-blue text-f-z-16 rounded-40 my-5 h-40 w-80 border-none text-white">立即登陆</button></div></div></div></body>
</html>
  • tailwind.config.js
/** @type {import('tailwindcss').Config} */
export default {theme: {extend: {width: {400: '400px',40: '40px',},height: {40: '40px',600: '600px',150: '150px',300: '300px',},colors: {'custom-blue': '#5386ec',},fontSize: {'f-z-16': '16px','f-z-20': '20px',},borderRadius: {40: '40px',10: '10px',},backgroundColor: {f3: '#f3f3f3',},padding: {10: '10px',},},},plugins: [],
}

效果:
在这里插入图片描述

  • 注意: 上面的demo仅仅作为案例使用,没有做任何注释,也没有做任何优化,直接平铺直叙的开发完,仅作参考
怎么看tailwindcss

tailwindcss其实改变了我们写css的习惯,本质就已经改变了,他提供了大量的简写形式给到我们,想快速的掌握这门css的技术,需要我们自己的css基本功,但是网上我也看了很多对tailwindcss的评价,褒贬不一,但是夸的还是相对多很多的,本质的原因是很多人是愿意做出改变的,无可厚非的一个点是他确实可以提升我们开发css的效率,(虽然我写上面的那个效果写了几个小时,我是一边看文档一边写),不过可以很明显的感觉到他帮助我们省了大量的重复性的代码,特别是多人开发的时候,

直观感受 (以下仅为个人观点,因为本人没有使用tailwindcss进行过大项目使用,所以见解可能比较肤浅)
优点
  • 代码复用性极高
  • 一键更换主题
  • 开发效率大幅度提升(熟练之后)
  • 不用纠结起类名的问题
  • 启动清除无用代码(网上说的,截止到发稿我没有进行相关实验)
缺点
  • 样式不直观(都是类名,没有原始css代码)
  • 调整不方便,耦合度较高(一些自定义的类样式,同时在用的时候,只能新加,无法修改)
  • 代码维护性不高 (你们可以看看上面我写的那些代码,给你们维护的话,你们心里是什么感觉)
  • 学习成本稍高(除非天天用,否则就是背诵对应的简写形式,安装之后需要进行对应的配置,我个人使用的是在线开发工具)
写到最后

怎么说呢?当年vue刚出现的时候也是一样的很多人排斥,开发者就是这样,有人愿意做出改变,就有人不愿意改变自己的开发习惯,这个是没有什么问题的,但是总要有人前进,摸索,不然技术就会停滞不前,我对tailwindcss保持中立的态度,我会去尝试在项目中使用,但是你说你不愿意用,我也不会一直给你推荐,因为这个东西和vue还是有本质的区别,一个新的框架可以解决我们常规开发的痛点,比如操作dom的繁杂性高,页面渲染不及时,发布包无法很好的做更新配置等等,但是css的痛点在我看来scss,less这些预编译技术已经解决的八八九九了,只要你使用的足够熟练,你会发现scss是可以实现非常棒牛叉的效果的,而且复杂度其实并不高,另外就是tailwindcss在我看来就是一群有想法的人做出来的对css的简写,当然实现到目前的程度毋庸置疑,肯定是很难的,但是表象看确实如此,我看网上很多人疯狂安利这个技术,当然可能是我没有完全学透这门技术导致的,我对着东西的看法目前仅仅是停留在提升开发效率上,但是和我自己储存的css知识量来看,他反而有点拖慢我的进度,见仁见智吧,我会和推荐tsc一样,你用我会推荐,你不用我也不会觉得你不思进取。

tailwindcss推荐指数

※※※ 三颗星

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/238225.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1 快速前端开发

前端开发 1 前端开发1.快速开发网站2.浏览器能识别的标签2.1 编码&#xff08;head&#xff09;2.2 title&#xff08;head&#xff09;2.3 标题2.4 div和span2.4.5 超链接2.4.6 图片小结2.4.7 列表2.4.8 表格2.4.9 input系列&#xff08;7个&#xff09;2.4.10 下拉框2.4.11 多…

01 SpringMVC的快速理解

1.1 如图所示&#xff0c;SpringMVC负责表述层&#xff08;控制层Controller&#xff09;实现简化&#xff01; SpringMVC的作用主要覆盖的是表述层&#xff0c;例如&#xff1a; 请求映射、数据输入、视图界面、请求分发、表单回显、会话控制、过滤拦截、异步交互、文件上传…

python 列表的高级应用

当前版本&#xff1a; Python 3.8.4 简介 列表&#xff08;list&#xff09;是Python编程语言中的基本数据类型之一&#xff0c;也是一个非常重要的通用序列。在其它编程语言中&#xff0c;它们通常被称为“数组”。可以存储多个元素&#xff0c;包括数字、字符串、甚至其他列…

机器学习 | 无监督聚类K-means和混合高斯模型

机器学习 | 无监督聚类K-means和混合高斯模型 1. 实验目的 实现一个K-means算法和混合高斯模型&#xff0c;并用EM算法估计模型中的参数。 2. 实验内容 用高斯分布产生 k k k个高斯分布的数据&#xff08;不同均值和方差&#xff09;&#xff08;其中参数自己设定&#xff…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑩

单元测试 一、任务要求 题目1&#xff1a;根据下列流程图编写程序实现相应处理&#xff0c;程序根据两个输入参数iRecordNum和IType计算x的值并返回。编写程序代码&#xff0c;使用JUnit框架编写测试类对编写的程序代码进行测试&#xff0c;测试类中设计最少的测试数据满足基路…

shp文件与数据库(创建shp文件)

前言 前面把shp文件中的内容读取到数据库&#xff0c;接下来就把数据库中的表变成shp文件。 正文 简单的创建一个shp文件 暂时不读取数据库的表&#xff0c;先随机创建一个shp文件。既然是随机的&#xff0c;这就需要使用到faker这个第三方库&#xff0c;代码如下。 impor…

【排序】快速排序(C语言实现)

文章目录 前言1. Hoare思想2. 挖坑法3. 前后指针法4. 三路划分5. 快速排序的一些小优化5.1 三数取中常规的三数取中伪随机的三数取中 5.2 小区间优化 6. 非递归版本的快排7. 快速排序的特性总结 前言 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其…

格密码基础:SIS问题的困难性

目录 一. SIS问题的困难性 二. SIS问题归约的性质 2.1 2004年 [MR04] 2.2 2008年 【GPV08】 2.3 2013年【MP13】 三. 归约证明 3.1 核心理解 3.2 归约步骤 3.3 性质理解 一. SIS问题的困难性 推荐先阅读&#xff1a; 格密码基础&#xff1a;SIS问题的定义与理解-CSD…

【Linux】应用与驱动交互及应用间数据交换

一、应用程序与 Linux 驱动交互主要通过以下几种方式&#xff1a; 1. 系统调用接口&#xff08;System Calls&#xff09;: 应用程序可以通过系统调用&#xff0c;如 open(), read(), write(), ioctl(), 等来与设备驱动进行交互。这些调用最终会通过内核转发到相应的驱动函数…

感染嗜肺军团菌是什么感觉?

记录一下最近生病的一次经历吧&#xff0c;可能加我好友的朋友注意到了&#xff0c;前几天我发了个圈&#xff0c;有热心的朋友还专门私信了我说明了他自己的情况和治疗经验&#xff0c;感谢他们。 ​ 那么关于这次生病的经历&#xff0c;给大家分享一下。 首先&#xff0c;这次…

解锁 JavaScript 数组的强大功能:常用方法和属性详解(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

70.网游逆向分析与插件开发-角色数据的获取-自动化助手UI显示角色数据

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;利用技能点属性分析角色数据基址-CSDN博客 码云地址&#xff08;ui显示角色数据 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;367aa71f60b…

C++ 完成Client分页显示log

分页显示t_log 1、获取用户的输入 1.1、写一个Input成员函数&#xff0c;处理输入进来的语句 std::string XClient::Input() {//清空缓冲//cin.ignore(4096, \n);string input "";for (;;){char a getchar();if (a < 0 || a \n || a \r)break;cout <<…

蓝桥杯准备

书籍获取&#xff1a;Z-Library – 世界上最大的电子图书馆。自由访问知识和文化。 (zlibrary-east.se) 书评&#xff1a;(豆瓣) (douban.com) 一、观千曲而后晓声 别人常说蓝桥杯拿奖很简单&#xff0c;但是拿奖是一回事&#xff0c;拿什么奖又是一回事。况且&#xff0c;如果…

LeetCode讲解篇之78. 子集

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个start变量记录当前从哪里开始遍历搜索nums 搜索过程的数字组合加入结果集 然后从start下标开始遍历nums&#xff0c;更新start&#xff0c;递归搜索 直到搜索完毕&#xff0c;返回结果集 题解代码 class …

wxWidgets实战:使用mpWindow绘制阻抗曲线

选择模型时&#xff0c;需要查看model的谐振频率&#xff0c;因此需要根据s2p文件绘制一张阻抗曲线。 如下图所示&#xff1a; mpWindow 左侧使用mpWindow&#xff0c;右侧使用什么&#xff1f; wxFreeChart https://forums.wxwidgets.org/viewtopic.php?t44928 https://…

npm run dev,vite 配置 ip 访问

启动项目通过本地 ip 的方式访问 方式一.通过修改 package.json "scripts": {"dev": "vite --host 0.0.0.0",}, 方式二.通过修改 vite.config.ts export default defineConfig({plugins: [vue(), vueJsx()],server: { // 配置 host 与 port 方…

AI大模型学习笔记二

文章目录 一、Prompt Engineering1&#xff09;环境准备 二、LangChain&#xff08;一个框架名字&#xff09;三、Fine-tuning&#xff08;微调&#xff09; 一、Prompt Engineering 1&#xff09;环境准备 ①安装OpenAI库 pip install --upgrade openai附加 安装来源 pyth…

DDNS-GO配置使用教程

环境&#xff1a;openwrt 下载地址&#xff1a;Releases jeessy2/ddns-go GitHub 下载 ssh至openwrt根目录&#xff0c;根据你的处理器选择要下载的版本&#xff0c;我是路由器&#xff0c;选择的是 ddns-go_5.7.1_linux_arm64.tar.gz wget github链接 安装 tar -zxvf…

基于STM32的CMT液晶屏控制器驱动程序设计与优化

本文以STM32微控制器为基础&#xff0c;设计并优化了一个用于控制CMT液晶屏的驱动程序。在设计过程中&#xff0c;我们首先介绍了液晶屏的基本工作原理&#xff0c;包括CMT液晶屏的结构和信号传输机制。然后&#xff0c;我们详细讨论了STM32微控制器的GPIO、SPI和DMA模块的特性…