HTML初学者看过来-CSS画0.5px线的妙招
- HTML初学者看过来-CSS画0.5px线的妙招
- 天呐,谁能想到HTML和CSS这么玩
- CSS里的魔法-如何画出那条隐形般的0.5px线
- 奇技淫巧之一-transform缩放法
- 瞬间变细术之二-伪类加border-image方案
- 代码界的艺术家-linear-gradient渐变绘制
- 高清时代的救星-viewport单位配合媒体查询
- 当然,任何事物都有两面性
- 实战经验分享-从踩坑到填坑
- 老司机的私房菜-实用开发技巧大揭秘
HTML初学者看过来-CSS画0.5px线的妙招
说实话,我刚开始写前端那会儿,要是有人跟我说CSS能画出0.5px的线条,我肯定觉得他在忽悠我。你想啊,CSS里最小的单位不就是1px吗?这就像你去医院跟医生说"给我来半粒药片"一样,听起来就很不科学。但偏偏这个需求它就真的存在,而且尤其是在现在满大街都是高清屏、Retina屏的时代,1px的边框在某些设计师眼里粗得跟电线杆似的,非逼着你整出个半像素不可。
前几天我刚接了个需求,UI小姐姐拿着MacBook Pro凑过来,指着设计稿上那条若隐若现的分割线说:"你看,这个层次感,这个细腻度,1px太粗了,我要的是那种似有若无、犹抱琵琶半遮面的感觉。"我当时内心OS是:姐妹,这是网页,不是Photoshop啊!但嘴上只能说:“好的,我试试。”
天呐,谁能想到HTML和CSS这么玩
其实吧,这个需求背后有个挺尴尬的现实。咱们都知道,CSS里的px单位跟物理像素不是一回事,尤其是在设备像素比(devicePixelRatio)大于1的屏幕上。iPhone 14 Pro的DPR是3,也就是说一个CSS像素对应3个物理像素。这时候你写1px的border,实际占的是3个物理像素,所以在Retina屏上看起来确实会比在普通屏上粗不少。
有段时间我特别纠结这个,甚至想过用图片来做边框——对,你没听错,就是用一张半像素高的PNG或者SVG图片,然后通过background-image或者border-image贴上去。现在回想起来真想抽自己,那时候还是太年轻,不知道CSS这潭水有多深。
后来踩的坑多了才明白,CSS画0.5px线这事儿,说到底是场"视觉欺骗"。咱们不是在真的创造什么亚像素渲染,而是在利用各种奇技淫巧,让浏览器"以为"你只画了半条线,或者通过缩放、渐变等手段,在视觉上营造出那种纤细的感觉。
CSS里的魔法-如何画出那条隐形般的0.5px线
先说最朴素的方案,就是直接写0.5px。诶对,你没听错,有些浏览器还真的认这个值:
.half-pixel-line{border-bottom:0.5px solid #e0e0e0;}但问题来了,这玩意儿兼容性感人。Chrome和Safari在高清屏上确实能渲染出0.5px的效果,但在Firefox上,它会直接给你四舍五入成1px,甚至某些版本的IE(没错,我说的就是那个阴魂不散的东西)会直接忽略这个值,显示成0px——对,直接消失,就问你怕不怕。
所以我一般不建议生产环境直接这么写,除非你的用户全是Mac用户而且只用Safari,那当我没说。但咱们做开发的,总得考虑那剩下90%的情况对吧?
奇技淫巧之一-transform缩放法
这是我最常用的一招,也是相对最稳的一招。原理简单粗暴:先画个1px的线,然后把它压缩一半。
.scale-line-container{position:relative;height:1px;line-height:0;}.scale-line-container::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#dcdcdc;/* 重点来了 */transform:scaleY(0.5);transform-origin:0 0;}这里有几个坑我得重点说说。首先是transform-origin这个属性,如果你不设成0 0,缩放是以中心点为基准的,这就会导致一条1px的线缩成0.5px之后,位置会偏移,可能出现在你意想不到的方位。我之前就因为这个,在移动端项目上被测试小姐姐提了个Bug,说分割线偏了1个像素,查了半天才发现是transform-origin没设。
其次是容器的高度问题。如果你直接给div设height: 0.5px,某些浏览器可能会直接忽略或者渲染异常。所以通常我会让伪元素占满1px高度,然后通过scaleY压缩。这样视觉上看起来是0.5px,但DOM结构上还是稳定的。
但这个方法也有副作用。比如说你要给这条线做动画,或者用JavaScript去算它的高度,拿到的是1px而不是0.5px。还有就是如果父容器有overflow: hidden,而且你用了transform,可能会触发一些奇怪的裁剪问题。
后来我封装了一个mixin,在SCSS里用起来比较方便:
@mixin hairline($direction: bottom, $color: #e5e5e5) { position: relative; &::after { content: ''; position: absolute; background-color: $color; @if $direction == bottom { left: 0; bottom: 0; width: 100%; height: 1px; transform: scaleY(0.5); transform-origin: 0 100%; } @else if $direction == top { left: 0; top: 0; width: 100%; height: 1px; transform: scaleY(0.5); transform-origin: 0 0; } @else if $direction == left { left: 0; top: 0; width: 1px; height: 100%; transform: scaleX(0.5); transform-origin: 0 0; } @else if $direction == right { right: 0; top: 0; width: 1px; height: 100%; transform: scaleX(0.5); transform-origin: 100% 0; } } } // 使用的时候直接 .divider { @include hairline(bottom, #f0f0f0); }你看,光是画条线就得写这么多代码,前端这行当真的是… 不过好处是封装好了之后到处都能用,而且四边都能支持,横线竖线都没问题。
还有个更狠的写法,适合那种整页的边框,比如列表项之间的分隔线:
.list-item{position:relative;padding:12px 16px;}/* 给所有项都加上边框,然后通过缩放压缩 */.list-item::before{content:'';position:absolute;left:16px;/* 留出左边距 */right:0;top:0;height:1px;background:#eee;transform:scaleY(0.5);transform-origin:0 0;}/* 第一项不要上边框 */.list-item:first-child::before{display:none;}这样处理之后,列表之间的分隔线看起来就特别细腻,不会像1px那么突兀。不过要注意,如果你的设计稿要求分割线从左边缘开始到右边缘,那left就要设成0。这些小细节跟设计师多对对,不然改起来没完没了。
瞬间变细术之二-伪类加border-image方案
这个方法我用得相对少一些,但在某些特定场景下特别管用,尤其是当你需要给边框加一些特殊效果,比如虚线或者渐变的时候。
基本思路是用border-image,但border-image本身不支持直接写0.5px,所以咱们得找个曲线救国的方式。可以用渐变色来模拟:
.border-image-line{border-bottom:1px solid transparent;border-image:linear-gradient(to bottom,transparent 50%,#e0e0e0 50%)0 0 1 0;/* 上面这个1指的是底部边框的宽度 */}这个写法看起来有点绕,我来解释一下。linear-gradient里的transparent 50%, #e0e0e0 50%意思是前50%是透明的,后50%是实色。整体上这条渐变是1px高(因为border-bottom设为1px),所以实色部分实际上只占了0.5px的视觉高度。
但说实话,这个方法我踩过一个大坑。就是在某些安卓手机上,特别是那些Webview版本比较老的(对,我说的就是微信内置浏览器和某宝APP内置浏览器),border-image的渲染有点玄学,有时候会出现颜色断层或者对不齐的情况。而且border-image的语法本身就比较晦涩,维护起来头大。
不过它有个好处是你可以很方便地做虚线效果:
.dotted-hairline{border-bottom:1px dashed transparent;border-image:repeating-linear-gradient(to right,#ccc 0,#ccc 2px,transparent 2px,transparent 4px)0 0 1 0;}这段代码画出来的是虚线,每个实线段2px,间隔2px,整体视觉上比普通border-style: dashed要细腻很多。而且你可以控制间距,想密一点就改数值,想疏一点就调大transparent的区间。
我记得有次做数据图表的表格,设计师非要那种特别密的虚线网格,用border-style: dashed怎么调都不对劲,最后就是用这个方案搞定的。虽然代码丑了点,但效果确实能打。
代码界的艺术家-linear-gradient渐变绘制
这个方法是我个人最喜欢的,因为它最灵活,而且兼容性相对最好。原理就是利用linear-gradient的背景图特性,通过控制色标的位置来制造半像素的效果。
最简单的版本:
.gradient-line{height:1px;background:linear-gradient(to bottom,transparent 0%,transparent 50%,#d9d9d9 50%,#d9d9d9 100%);}这里的关键是50%这个分界点。前50%是透明的,后50%是实色,所以视觉上看起来就只有0.5px的高度。你可以调整这个百分比来改变线的粗细感,比如改成60%,那条线看起来就更细一些,差不多是0.4px的感觉。
但这里有个坑:如果容器的高度不是1px,而是auto或者由内容撑开的,这个方法就不好使了。所以通常我会结合伪元素来用:
.elegant-divider{position:relative;padding-bottom:1px;/* 给线留出空间 */}.elegant-divider::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background:linear-gradient(to right,transparent,rgba(0,0,0,0.1)20%,rgba(0,0,0,0.1)80%,transparent);}这个例子画出来的是中间实、两边渐隐的分割线,现在好多App的分割线都是这种效果,看起来比实线高级不少。而且因为用了rgba,颜色调起来也很方便,想深一点就调alpha值,想浅一点就调透明。
更进阶一点的玩法,可以做那种"中间亮两边暗"的立体线:
.three-d-line{height:2px;/* 注意这里高度是2px */background:linear-gradient(to bottom,rgba(255,255,255,0.8)0%,rgba(255,255,255,0.8)50%,rgba(0,0,0,0.05)50%,rgba(0,0,0,0.05)100%);}这个效果是利用高光和阴影制造出凸起的感觉,类似于以前的拟物化设计。虽然现在流行扁平化,但在某些需要层次感的场景下,这种细腻的分割线还是能提升质感的。
还有一种我经常用在卡片设计里的方案,给卡片底部加一条细细的阴影线:
.card{position:relative;background:white;border-radius:8px;padding:16px;margin-bottom:12px;}.card::after{content:'';position:absolute;left:16px;right:16px;bottom:0;height:1px;background:linear-gradient(to right,transparent,rgba(0,0,0,0.08)10%,rgba(0,0,0,0.08)90%,transparent);transform:scaleY(0.5);transform-origin:bottom;}这里我结合了linear-gradient和transform: scaleY,双重保险,确保那条细线在各种屏幕上看起来都够细。而且渐变加上缩放,视觉上几乎感觉不到这条线的存在,但又确实起到了分隔的作用,这就是那种"看不见但存在"的设计哲学吧。
说到linear-gradient,还有个更骚的操作,你可以用repeating-linear-gradient来画网格线,而且每条线都是0.5px的:
.grid-background{background-image:repeating-linear-gradient(to right,transparent,transparent 49px,rgba(0,0,0,0.05)49px,rgba(0,0,0,0.05)50px),repeating-linear-gradient(to bottom,transparent,transparent 49px,rgba(0,0,0,0.05)49px,rgba(0,0,0,0.05)50px);background-size:50px 50px;}这个画出来的是50px一个格子的网格背景,每条线都是0.5px的粗细感(通过控制渐变区间实现)。做数据可视化或者设计稿展示的时候,这种细腻的网格比1px的看起来舒服多了,不会喧宾夺主。
高清时代的救星-viewport单位配合媒体查询
前面说的那些方法,在高DPR屏幕上表现都不错,但有时候咱们得考虑得更周全一点。比如说,在DPR=1的普通屏幕上,0.5px的线可能真的就显示不出来,或者断断续续的,这时候就得根据屏幕分辨率来动态调整。
用viewport单位和媒体查询结合,可以做到"视网膜屏显示0.5px,普通屏显示1px":
/* 默认情况,普通屏幕 */.responsive-line{border-bottom:1px solid #eee;}/* 高清屏(DPR >= 2) */@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.responsive-line{position:relative;border-bottom:none;/* 去掉默认边框 */}.responsive-line::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background:#eee;transform:scaleY(0.5);transform-origin:0 100%;}}这里用到了媒体查询的min-resolution标准,192dpi roughly对应DPR=2的屏幕(因为1dppx = 96dpi)。这样写的好处是兼容性考虑得比较周全,普通用户看到的是正常的1px线,高清屏用户看到的是细腻的0.5px线,各取所需。
还有个更细致的做法,用vw单位结合calc来计算线的粗细:
.viewport-line{border-bottom:calc(1px /var(--device-pixel-ratio,1))solid #ccc;}但这个需要你在JS里先检测DPR然后设置CSS变量:
// 在页面加载时设置CSS变量constdpr=window.devicePixelRatio||1;document.documentElement.style.setProperty('--device-pixel-ratio',dpr);然后在CSS里:
:root{--device-pixel-ratio:1;/* 默认值 */}.smart-line{position:relative;}.smart-line::after{content:'';position:absolute;bottom:0;left:0;width:100%;/* 根据DPR动态计算高度 */height:calc(1px /var(--device-pixel-ratio));background:#e5e5e5;/* 低版本浏览器兜底 */@supportsnot(height:calc(1px / 2)){height:1px;transform:scaleY(calc(1 /var(--device-pixel-ratio)));transform-origin:0 100%;}}这个方案的好处是逻辑清晰,而且可以利用CSS的回退机制(@supports)做优雅降级。不过实际项目中我一般不会搞得这么复杂,除非是对像素级精度有极致要求的项目,比如设计工具或者高保真原型。
还有一种针对移动端Webview的Hack,因为有些国产浏览器的DPR检测不太准,或者缩放逻辑很奇怪,这时候可以用viewport的meta标签配合:
<metaname="viewport"content="width=device-width, initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no">把整个页面缩放到0.5倍,这样1px自然就变成了0.5px的视觉效果。但这招太狠了,基本上整个页面的布局都会乱,除非是特别简单的页面,否则不建议用。而且用户不能缩放,对可访问性也有影响。
当然,任何事物都有两面性
说了这么多方案,我得泼点冷水。画0.5px线这事儿,虽然有解,但每种解都有代价。
首先是性能问题。用transform缩放或者伪元素,实际上增加了DOM的复杂度(虽然只是伪元素),在某些低端安卓机上,大量的transform可能会导致渲染卡顿,尤其是列表滚动的时候。我之前做过一个电商的商品列表,每行都有分割线,当时用了transform方案,结果在红米某款千元机上滑动明显掉帧,后来不得不改成1px实线。
其次是颜色保真度的问题。用linear-gradient模拟的0.5px线,本质上是通过半透明叠加实现的,所以颜色的准确度不如纯色的border。如果你对品牌色有严格要求,比如必须用#FF6B6B这种具体的红色,用渐变或者缩放可能会导致颜色看起来"发灰"或者"变淡"。
还有就是维护成本。team里如果每个人都用自己习惯的方案,有的用transform,有的用border-image,有的用gradient,过段时间代码库就变成了一锅粥。所以我建议团队内部统一下方案,哪怕不是最优的,一致性比完美更重要。
兼容性方面,虽然大部分现代浏览器都支持这些CSS特性,但万一遇到那种史诗级的老项目,还要兼容IE9甚至IE8(别笑,真有这种项目),那就得考虑用图片或者干脆放弃0.5px的效果。IE系列对transform的支持是从IE9开始的,而且加前缀,写起来很恶心:
/* IE9 */.half-pixel-ie9{-ms-transform:scaleY(0.5);transform:scaleY(0.5);/* 但是IE9不认transform-origin,所以位置会跑偏 */}IE9还不认transform-origin,所以用transform方案在IE9上会有定位问题。如果你的用户群体里还有大量IE用户,建议直接放弃治疗,或者用条件注释给IE单独写1px的样式。
<!--[if IE]> <style> .half-pixel { border-bottom: 1px solid #ccc !important; } </style> <![endif]-->虽然这段代码看起来像是上古时代的遗迹,但在某些传统企业内网系统里,你可能真的用得上。
实战经验分享-从踩坑到填坑
说几个我真实踩过的坑吧,都是血泪史。
坑一:对齐问题
有次做表单设计,输入框之间用0.5px的分割线。我当时的代码是这样的:
.input-group{border-top:0.5px solid #eee;/* 直接写0.5px */}在Chrome里看着完美,但到了Safari里,这条线有时候会出现,有时候又消失了,完全随机。后来发现是Safari对亚像素渲染的优化策略问题,当元素位置刚好卡在物理像素的中间时,浏览器为了性能考虑可能会选择不渲染那条线。
改成transform方案后解决了,但新的问题又来了:输入框的高度包含了那条1px的线,缩放成0.5px后,视觉上两个输入框之间的间距比设计稿大了0.5px。设计师用Mark Man一量,差半个像素,不合格。
解决办法是做负margin补偿:
.input-wrapper{position:relative;margin-top:-0.5px;/* 把多出来的空间吃掉 */}.input-wrapper::before{content:'';position:absolute;top:0;left:0;width:100%;height:1px;background:#eee;transform:scaleY(0.5);transform-origin:0 0;}坑二:Retina屏上的虚线
之前提到用border-image做虚线,在安卓机上表现不稳定。我遇到过的情况是,在某些华为手机的自带浏览器里,虚线的间距会莫名其妙地变宽,或者实线段变短,整个虚线看起来像是在"颤抖"。
后来查资料发现是GPU加速的问题,加个transform: translateZ(0)强制开启GPU渲染就好了:
.dotted-line{border-image:...;transform:translateZ(0);/* 强制GPU层 */}但这个又可能引发新的问题,比如层级(z-index)混乱,或者内存占用增加。移动端就是这样,解决一个问题往往会带来另外三个问题。
坑三:打印样式
如果你的网页需要支持打印(比如电子发票、报表打印),那0.5px的线基本上就是个灾难。打印机的DPI通常是300或者600,远高于屏幕,CSS里的0.5px在打印时可能会变得非常细,甚至断线。
所以打印样式里一定要重置:
@mediaprint{.half-pixel, [class*="hairline"]{border-bottom:1pt solid #000!important;/* 打印用pt单位 */transform:none!important;}}1pt(点)在打印时大约等于1/72英寸,比0.5px要粗,但打印出来的效果会更稳定。
坑四:暗黑模式
现在iOS和Android都支持系统级暗黑模式,如果你的App或者H5页面要适配暗黑模式,0.5px的线颜色也得跟着变。如果在渐变或者transform方案里写死了颜色,切换主题时会很麻烦。
建议用CSS变量:
:root{--hairline-color:rgba(0,0,0,0.1);--bg-color:white;}@media(prefers-color-scheme:dark){:root{--hairline-color:rgba(255,255,255,0.1);--bg-color:#1a1a1a;}}.hairline{position:relative;}.hairline::after{background:linear-gradient(to bottom,transparent 50%,var(--hairline-color)50%);}这样当系统切换到暗黑模式时,分割线会自动变成半透明的白色,融入到深色背景里。prefers-color-scheme这个媒体查询现在支持度已经很好了,除了某些老旧的安卓机,基本上都能用。
老司机的私房菜-实用开发技巧大揭秘
最后分享几个我日常工作中积累的小技巧,能让你在处理这类问题时事半功倍。
技巧一:浏览器开发者工具的妙用
当你不确定某条0.5px的线到底渲染出来是多少像素时,可以用Chrome DevTools的Layers面板。打开More Tools -> Layers,找到对应的元素层,可以看到实际的物理像素尺寸。如果DPR是2,你写的0.5px线在这一层里应该显示为1px(物理像素),如果是显示为2px,那说明你的缩放没生效。
还有Rendering面板(More Tools -> Rendering)里有个"Paint flashing"选项,开启后页面重绘的区域会高亮显示。用这个可以检查你的分割线是不是有频繁的重绘,特别是在滚动容器里,如果分割线一直在闪绿光(表示重绘),那说明性能有问题,得优化。
技巧二:快速定位样式冲突
有时候你明明写了0.5px的样式,但出来的效果还是1px,大概率是被别的CSS规则覆盖了。用DevTools的Computed面板,找到height或者border相关的属性,看看到底是哪个选择器在生效。特别注意那些带!important的规则,它们往往会破坏你的精细布局。
还有一个坑是CSS的简写属性。比如你这样写:
.box{border:1px solid #ccc;border-bottom-width:0.5px;}在某些浏览器里,第一条规则会覆盖第二条,因为浏览器觉得"我已经处理过border了,后面的单条属性我不认了"。 safest way是分开写:
.box{border-width:1px 1px 0.5px 1px;border-style:solid;border-color:#ccc;}技巧三:利用backdrop-filter做毛发线
这是个比较新的特性,适合在毛玻璃效果(Glassmorphism)的UI里用:
.glass-hairline{position:relative;}.glass-hairline::after{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:rgba(255,255,255,0.2);backdrop-filter:blur(1px);/* 模糊效果 */transform:scaleY(0.5);}backdrop-filter会给线条背后的内容加一点模糊,同时线条本身保持清晰,这种对比会让0.5px的线看起来更有"质感",像是一层真的物理材料贴在玻璃上。不过兼容性一般,iOS的Safari支持得不错,安卓要看版本。
技巧四:VS Code的代码片段
如果你经常用某种特定方案,比如transform缩放法,可以在VS Code里设个snippet,省的每次都要打一堆代码:
{"Hairline Border":{"prefix":"hairline","body":["position: relative;","&::after {"," content: '';"," position: absolute;"," left: 0;"," bottom: 0;"," width: 100%;"," height: 1px;"," background: ${1:#e5e5e5};"," transform: scaleY(0.5);"," transform-origin: 0 100%;","}"],"description":"Add 0.5px hairline border"}}这样输入hairline然后按Tab,整个代码块就出来了,还能定位到颜色值那里让你直接改。效率提升神器。
技巧五:设计稿的像素完美还原
跟设计师协作时,如果他们在Figma或者Sketch里用了0.5px的线,导出标注的时候可能会显示为1px,因为设计工具有时也会做四舍五入。这时候可以用Figma的Dev Mode,切换到代码视图,看实际的CSS值是多少。
还有个小秘密:在iOS开发里,原生有一种"hairline"的概念,系统自动处理0.5px的线。你可以跟设计师说,如果设计稿是给iOS看的,那0.5px没问题;如果是给Web的,最好提前沟通好Fallback方案,省得后期扯皮。
技巧六:性能监控
如果你在做一个大型单页应用(SPA),里面全是列表和卡片,每条都有0.5px的分割线,建议用Lighthouse跑一下性能分。重点关注"Reduce repaint areas"这一项。如果报告里说你的页面有过多的绘制区域,那可能是这些细线导致的。
一个优化建议是,把那些不需要响应鼠标事件的细线加上pointer-events: none,这样浏览器在命中测试(hit testing)的时候会跳过它们,提升交互性能:
.hairline::after{pointer-events:none;}还有就是will-change属性,如果你发现某条线在滚动时会造成卡顿,可以临时加上:
.scrolling-list .hairline::after{will-change:transform;}但记得在滚动结束后remove掉这个class,因为will-change会占用GPU内存,用得太多反而适得其反。
好啦,关于CSS画0.5px线这件事,我能想到的经验差不多都在这儿了。说实话,以前我觉得这种细节不重要,直到有次跟设计师对稿,她拿着iPhone和安卓机对比给我看那0.5px的差异,我才意识到原来在高清时代,这种"看不见的工程"反而最能体现一个前端的专业度。
当然啦,如果你面试的时候被问到这个问题,回答"用transform: scale"基本上就能过关了。但如果你真的在产品里落地,希望这篇啰嗦的文章能帮你少踩几个坑。毕竟,我们前端工程师的日常,就是在这些像素之间反复横跳,然后对着屏幕露出老母亲般欣慰的笑容——虽然用户可能根本注意不到那条线到底有多细,但我们知道,它是对的,这就够了。
欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
推荐:DTcode7的博客首页。
一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身农奴把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟!
| 专栏系列(点击解锁) | 学习路线(点击解锁) | 知识定位 |
|---|---|---|
| 《微信小程序相关博客》 | 持续更新中~ | 结合微信官方原生框架、uniapp等小程序框架,记录请求、封装、tabbar、UI组件的学习记录和使用技巧等 |
| 《AIGC相关博客》 | 持续更新中~ | AIGC、AI生产力工具的介绍,例如stable diffusion这种的AI绘画工具安装、使用、技巧等总结 |
| 《HTML网站开发相关》 | 《前端基础入门三大核心之html相关博客》 | 前端基础入门三大核心之html板块的内容,入坑前端或者辅助学习的必看知识 |
| 《前端基础入门三大核心之JS相关博客》 | 前端JS是JavaScript语言在网页开发中的应用,负责实现交互效果和动态内容。它与HTML和CSS并称前端三剑客,共同构建用户界面。 通过操作DOM元素、响应事件、发起网络请求等,JS使页面能够响应用户行为,实现数据动态展示和页面流畅跳转,是现代Web开发的核心 | |
| 《前端基础入门三大核心之CSS相关博客》 | 介绍前端开发中遇到的CSS疑问和各种奇妙的CSS语法,同时收集精美的CSS效果代码,用来丰富你的web网页 | |
| 《canvas绘图相关博客》 | Canvas是HTML5中用于绘制图形的元素,通过JavaScript及其提供的绘图API,开发者可以在网页上绘制出各种复杂的图形、动画和图像效果。Canvas提供了高度的灵活性和控制力,使得前端绘图技术更加丰富和多样化 | |
| 《Vue实战相关博客》 | 持续更新中~ | 详细总结了常用UI库elementUI的使用技巧以及Vue的学习之旅 |
| 《python相关博客》 | 持续更新中~ | Python,简洁易学的编程语言,强大到足以应对各种应用场景,是编程新手的理想选择,也是专业人士的得力工具 |
| 《sql数据库相关博客》 | 持续更新中~ | SQL数据库:高效管理数据的利器,学会SQL,轻松驾驭结构化数据,解锁数据分析与挖掘的无限可能 |
| 《算法系列相关博客》 | 持续更新中~ | 算法与数据结构学习总结,通过JS来编写处理复杂有趣的算法问题,提升你的技术思维 |
| 《IT信息技术相关博客》 | 持续更新中~ | 作为信息化人员所需要掌握的底层技术,涉及软件开发、网络建设、系统维护等领域的知识 |
| 《信息化人员基础技能知识相关博客》 | 无论你是开发、产品、实施、经理,只要是从事信息化相关行业的人员,都应该掌握这些信息化的基础知识,可以不精通但是一定要了解,避免日常工作中贻笑大方 | |
| 《信息化技能面试宝典相关博客》 | 涉及信息化相关工作基础知识和面试技巧,提升自我能力与面试通过率,扩展知识面 | |
| 《前端开发习惯与小技巧相关博客》 | 持续更新中~ | 罗列常用的开发工具使用技巧,如 Vscode快捷键操作、Git、CMD、游览器控制台等 |
| 《photoshop相关博客》 | 持续更新中~ | 基础的PS学习记录,含括PPI与DPI、物理像素dp、逻辑像素dip、矢量图和位图以及帧动画等的学习总结 |
| 日常开发&办公&生产【实用工具】分享相关博客》 | 持续更新中~ | 分享介绍各种开发中、工作中、个人生产以及学习上的工具,丰富阅历,给大家提供处理事情的更多角度,学习了解更多的便利工具,如Fiddler抓包、办公快捷键、虚拟机VMware等工具 |
吾辈才疏学浅,摹写之作,恐有瑕疵。望诸君海涵赐教。望轻喷,嘤嘤嘤
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。愿斯文对汝有所裨益,纵其简陋未及渊博,亦足以略尽绵薄之力。倘若尚存阙漏,敬请不吝斧正,俾便精进!