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.mzph.cn/news/614538.shtml

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

相关文章

Docker 安装:在linux系统CentOS7 版本 安装Docker

目录 一&#xff0c;Docker介绍&#xff1a; 1.1Docker是什么&#xff1f; 1.2Docker组成 二&#xff0c;Docker安装&#xff1a; 三&#xff0c;Docker基本使用 3.1服务 3.2镜像 3.3容器 &#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&am…

java SSM物业管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM物业管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和 数据库&#xff0c;系统主要采用B/…

【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据

一、前言 目的&#xff1a;借助虚拟串口软件&#xff08;VSPD&#xff09;模拟硬件串口发送数据&#xff0c;使用PHP语言实现接收硬件发送的数据。 我这里的需求是连接天平&#xff0c;把天平的称量数据实时的传送到PHP使用。 使用工具&#xff1a;vspd串口调试工具 使用语…

105、Zero-1-to-3: Zero-shot One Image to 3D Object

简介 官网  使用合成数据集来学习相对摄像机视点的控制&#xff0c;这允许在指定的摄像机变换下生成相同对象的新图像&#xff0c;用于从单个图像进行三维重建的任务。 实现流程 输入图像 x ∈ R H W 3 x \in \R^{H \times W \times 3} x∈RHW3&#xff0c;所需视点的相…

阿里云c8i服务器CPU、内存性能测评

阿里云第八代云服务器ECS计算型c8i实例&#xff0c;CPU采用Intel Xeon Emerald Rapids或者Intel Xeon Sapphire Rapids&#xff0c;主频不低于2.7 GHz&#xff0c;全核睿频3.2&#xff0c;阿里云百科aliyunbaike.com分享阿里云c8i服务器CPU处理器型号、存储、网络、安全、使用场…

抵御爬虫的前线护盾:深度解读验证码技术的演变历程

一.前言 在当今信息技术迅速发展的背景下&#xff0c;网站和在线服务面临着日益增长的自动化访问威胁&#xff0c;这些大多来自于各类爬虫程序。这种大量的自动化访问不仅对网站的正常运行构成压力&#xff0c;还可能导致敏感数据的泄露&#xff0c;甚至被用于不正当竞争和恶意…

idea试用到期,重新试用

版本号&#xff1a;2021.2.* 打开运行 删除以下内容 1. 计算机注册表 \HKEY_CURRENT_USER\Software\JavaSoft\Prefs\Jetbrains 2. 文件夹 C:\Users\用户名\AppData\Roaming\JetBrains\IntelliJIdea C:\Users\用户名\AppData\Local\JetBrains\IntelliJIdea 以上仅用于临时使用…

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

单元测试 一、任务要求 题目1&#xff1a;根据下列流程图编写程序实现相应分析处理并显示结果。返回文字“xa*a*b的值&#xff1a;”和x的值&#xff1b;返回文字“xa-b的值&#xff1a;”和x的值&#xff1b;返回文字“xab的值&#xff1a;”和x的值。其中变量a、b均须为整型…

Linux:NTP校时、PTP校时

目录 前言一、NTP校时1、简介2、ubuntu使用 NTP3、嵌入式设备使用 NTP 校时4、NTP 服务器的校时精度 二、PTP校时1、简介2、ubuntu使用 PTP3、嵌入式设备使用 PTP 校时 三、PTP 校时和 NTP 校时那个精度高一些 前言 在进行网络协议通信时&#xff0c;我们有时候需要计算通信的延…

本地开发环境请求服务器接口跨域的问题(vue的问题)

上面的这个报错大家都不会陌生&#xff0c;报错是说没有访问权限&#xff08;跨域问题&#xff09;。本地开发项目请求服务器接口的时候&#xff0c;因为客户端的同源策略&#xff0c;导致了跨域的问题。下面先演示一个没有配置允许本地跨域的的情况&#xff1a; 可以看到&…

jsoncpp学习

1.环境配置 C 操作 &#xff08;读写&#xff09;json 文件及jsoncpp的配置-CSDN博客 一步步跟下来&#xff0c;就可以了!!! 2.遇到的问题&#xff1a; 读取json文件&#xff0c;出现中文乱码&#xff01;&#xff01;&#xff01; 参考&#xff1a;C ifstream open 读取…

解决“百度网盘启动缓慢”问题

最近在使用百度网盘&#xff0c;双击桌面的《百度网盘》图标&#xff0c;发现有等好几分钟&#xff0c;软件才会启动。百度网盘启动太慢了&#xff0c;后面发现百度网盘&#xff0c;使用dll注入技术&#xff0c;附加到很多不相干的进程里&#xff0c;比如附加explorer进程、附加…

Golang defer 使用及面试常见的坑

前言 defer是Golang中一个常用的关键字&#xff0c;通常用来做一些收尾工作。比如开启了一个东西&#xff0c;就顺手defer中关闭。对于面试&#xff0c;defer也算一个高频考点&#xff0c;尤其是他的许多个坑&#xff0c;因此本文主要复习一下defer的用法。 多个defer的执行顺…

数谷·企声|贵州空港智能科技:以“智”提“质”,助力贵阳智慧机场建设

当前&#xff0c;我国民航正大力推进“平安、绿色、智慧、人文”的四型机场建设。贵州空港智能科技有限公司&#xff08;下称“空港智能科技”&#xff09;作为贵州民航产业集团有限公司&#xff08;下称“民航产业集团”&#xff09;信息化建设的排头兵和主力军&#xff0c;近…

Unity组件开发--长连接webSocket

1.下载安装UnityWebSocket 插件 https://gitee.com/cambright/UnityWebSocket/ 引入unity项目&#xff1a; 2.定义消息体结构&#xff1a;ExternalMessage和包结构Package&#xff1a; using ProtoBuf; using System; using System.Collections; using System.Collections.Ge…

Springboot使用自带Logback 与 整合log4j 和 log4j2过程详解

logback 1、添加依赖 <!--spring boot依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>2、logback-spring.xml配置 <?xml version"1.0&…

个人事务备忘录管理微信小程序

介绍 UniApp是一款使用Vue.js开发所有前端应用的框架&#xff0c;能够同时在iOS、Android、H5、小程序等多个平台上运行&#xff1b;所以本系统可以是一个安卓app&#xff0c;也可以是微信小程序 系统包括以下功能&#xff1a; 备忘录 管理个人事务 记事本 事务分类 日记编写…

全网第一篇教你怎么总结多线程知识

于「全景图」&#xff0c;我之前也有一直在构建&#xff0c;可是因为知识储备不够&#xff0c;确实很难构建出来。稍微了解过并发领域知识的人都知道&#xff0c;里面的知识点、概念多而散&#xff1a;线程安全、锁、同步、异步、阻塞、非阻塞、死锁、队列(为什么并发要跟队列扯…

安卓Android Studio读写MifareOne M1 IC卡源码

本示例使用的发卡器&#xff1a; https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c-s.w4002-21818769070.11.66af789eLeok2R <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout …

回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于CPO-BP基于冠豪猪算法优化BP神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CPO-BP回归基于冠豪猪优化算法[24年新…