前端老哥必看:CSS3 3D空间透视transform-style实战,7天搞定炫酷特效

前端老哥必看:CSS3 3D空间透视transform-style实战,7天搞定炫酷特效
前端老哥必看:CSS3 3D空间透视transform-style实战,7天搞定炫酷特效
开头先唠两句,别被3D吓跑了
咱就是说,以前看到那种网页里卡片翻转、立方体旋转的特效,是不是觉得大佬牛批,自己就是个废柴?刷个掘金看到"纯CSS实现3D轮播"的标题,点进去一看代码,直接瞳孔地震——这都啥跟啥啊,transform-style是个啥,perspective又是哪冒出来的属性?鼠标往下滑了两屏,满屏的rotateX、rotateY、translateZ,看得人头都大了三圈。
其实真没那么玄乎,今天就把这层窗户纸捅破,聊聊CSS3里那个让平面变立体的魔法。你不需要懂什么矩阵变换,也不用背那些乱七八糟的数学公式,咱们就聊怎么把一张扁扁的div给"立"起来,让它能在三维空间里转圈圈。顺便避避那些让人头秃的坑——相信我,这玩意儿坑多得很,我当年踩过的雷能埋满整个中关村。
别担心数学不好,咱们不推导公式,只讲人话。你就当是在死党群里听我语音吐槽,想到哪说到哪,逻辑乱了也别挑刺,重点是让你看完真能动手做出来,而不是收藏夹里吃灰。
这俩属性到底是个啥玩意儿
先说perspective,你就把它当成摄像机的镜头。离得越近,拍出来的东西变形越夸张,那种"怼脸拍"的感觉;离得远了,物体看起来就平铺直叙的,没啥立体感。这跟咱用手机拍照一个道理——你拿手机贴着脸自拍,鼻子大得跟蒜头似的;站远了拍全身照,人就正常多了。
代码里就这么写:
/* 给父容器加个透视,相当于把摄像机架在800px远的地方 */
.container {
perspective: 800px;
}
这个值越小,变形越夸张。你设个perspective: 200px,那转起来就跟哈哈镜似的;设个perspective: 2000px,基本上就接近正交了,跟看平面图差不多。一般项目里800px到1200px是个比较舒服的范围,既有立体感又不会太畸变。
再唠唠transform-style,这货是管"子元素"的。浏览器默认是flat,意思就是不管你子元素怎么写3D变换,最后都给你压扁成一张纸,贴在父元素身上。想要子元素真的在三维空间里各站各的位置,就得改成preserve-3d。
/* 父容器开启3D空间,子元素才能各自为政 */
.cube {
transform-style: preserve-3d;
}
很多人搞混这俩,我当年也是。记住一句话:perspective是摄像机的位置,transform-style是子元素能不能在三维空间里自由活动。想让孩子有独立空间就用preserve-3d,想让他们乖乖贴在爹身上就用flat——虽然后者在3D场景里基本用不上,但知道有这么个东西,排查bug的时候心里有个底。
还有个细节,这俩属性的位置很有讲究。perspective一般放在最外层容器上,这样整个场景共享一个摄像机视角;transform-style要放在包含3D子元素的容器上,而且每一层嵌套都要重新声明,不然到了孙子辈可能又被压扁了。这个后面讲嵌套的时候会细说,先记住这个坑。
动手搓个3D立方体,拒绝纸上谈兵
光说不练假把式,咱们直接上代码。先搭个盒子,六个面给它安排得明明白白——前、后、左、右、上、下,一个都不能少。
HTML结构很简单,就是个俄罗斯套娃:
<div class="scene">
<!-- 场景容器,负责透视 -->
<div class="cube">
<!-- 立方体容器,负责3D变换 -->
<div class="face front">前面</div>
<div class="face back">后面</div>
<div class="face left">左面</div>
<div class="face right">右面</div>
<div class="face top">上面</div>
<div class="face bottom">下面</div>
</div>
</div>
CSS开始上硬菜。先给场景加个透视,不然后面全白搭:
.scene {
width: 200px;
height: 200px;
/* 关键:摄像机放在1000px外看这个东西 */
perspective: 1000px;
margin: 100px auto;
border: 1px dashed #ccc; /* 加个虚线框方便观察范围 */
}
然后是立方体容器,这里必须加transform-style: preserve-3d,不然六个面永远挤在一个平面上:
.cube {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d; /* 核心属性,不开这个全是纸片 */
/* 先让它转个小角度,方便观察立体感 */
transform: rotateX(-20deg) rotateY(30deg);
transition: transform 0.5s ease;
}
六个面的基础样式,先统一设置:
.face {
position: absolute;
width: 200px;
height: 200px;
border: 2px solid #333;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
font-weight: bold;
opacity: 0.8; /* 半透明方便看穿透效果 */
}
重点来了,每个面要推到对应的位置。立方体边长200px,所以每个面要沿着Z轴(前后)、X轴(左右)、Y轴(上下)移动100px(边长的一半):
/* 前面:直接往前推100px,不需要旋转 */
.front {
background: rgba(255, 0, 0, 0.7);
transform: translateZ(100px);
}
/* 后面:先转180度面朝后,再往前推100px */
.back {
background: rgba(0, 255, 0, 0.7);
transform: rotateY(180deg) translateZ(100px);
}
/* 右面:顺时针转90度面朝右,再往前推 */
.right {
background: rgba(0, 0, 255, 0.7);
transform: rotateY(90deg) translateZ(100px);
}
/* 左面:逆时针转90度面朝左 */
.left {
background: rgba(255, 255, 0, 0.7);
transform: rotateY(-90deg) translateZ(100px);
}
/* 上面:绕着X轴往后转90度(面朝上) */
.top {
background: rgba(255, 0, 255, 0.7);
transform: rotateX(90deg) translateZ(100px);
}
/* 下面:绕着X轴往前转90度(面朝下) */
.bottom {
background: rgba(0, 255, 255, 0.7);
transform: rotateX(-90deg) translateZ(100px);
}
这里有个细节要注意:旋转和位移的顺序不能乱。CSS的transform是从右往左执行的,所以rotateY(90deg) translateZ(100px)的意思是:先往Z轴正方向移动100px,然后再绕着Y轴转90度。如果反过来写translateZ(100px) rotateY(90deg),那就是先转90度,再移动——这时候的Z轴已经变了方向,结果肯定不对。
想验证对不对?加个hover效果让立方体转起来:
/* 鼠标悬停时转一圈看看 */
.scene:hover .cube {
transform: rotateX(-20deg) rotateY(210deg);
}
完整代码放一起,复制粘贴就能跑:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3 3D立方体入门</title>
<style>
body {
margin: 0;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
font-family: 'Microsoft YaHei', sans-serif;
}
.scene {
width: 200px;
height: 200px;
perspective: 1000px; /* 上帝视角,摄像机距离 */
}
.cube {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d; /* 开启3D空间,子元素独立 */
transform: rotateX(-15deg) rotateY(25deg);
animation: rotate 8s infinite linear;
}
/* 自动旋转动画,省得手动hover */
@keyframes rotate {
from { transform: rotateX(-15deg) rotateY(0deg); }
to { transform: rotateX(-15deg) rotateY(360deg); }
}
.face {
position: absolute;
width: 200px;
height: 200px;
border: 3px solid rgba(255, 255, 255, 0.3);
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
color: white;
font-weight: bold;
backface-visibility: visible; /* 背面可见,方便观察 */
box-shadow: 0 0 20px rgba(0,0,0,0.3) inset; /* 内阴影增加质感 */
}
/* 六个面的定位和颜色 */
.front {
background: rgba(255, 107, 107, 0.85);
transform: translateZ(100px);
}
.back {
background: rgba(78, 205, 196, 0.85);
transform: rotateY(180deg) translateZ(100px);
}
.right {
background: rgba(69, 183, 209, 0.85);
transform: rotateY(90deg) translateZ(100px);
}
.left {
background: rgba(150, 206, 180, 0.85);
transform: rotateY(-90deg) translateZ(100px);
}
.top {
background: rgba(254, 202, 87, 0.85);
transform: rotateX(90deg) translateZ(100px);
}
.bottom {
background: rgba(155, 89, 182, 0.85);
transform: rotateX(-90deg) translateZ(100px);
}
/* 加点文字提示 */
.hint {
position: absolute;
bottom: 50px;
color: white;
text-align: center;
font-size: 16px;
opacity: 0.8;
}
</style>
</head>
<body>
<div class="scene">
<div class="cube">
<div class="face front">前</div>
<div class="face back">后</div>
<div class="face right">右</div>
<div class="face left">左</div>
<div class="face top">上</div>
<div class="face bottom">下</div>
</div>
</div>
<div class="hint">CSS3 3D立方体 - 自动旋转中</div>
<script>
// 加点交互,鼠标移动时微调视角
document.addEventListener('mousemove', (e) => {
const x = (e.clientX / window.innerWidth - 0.5) * 30;
const y = (e.clientY / window.innerHeight - 0.5) * 30;
const cube = document.querySelector('.cube');
// 保留原有动画的基础上叠加鼠标影响(这里简化处理直接改动画)
// 实际项目中可以用CSS变量或者JS动态计算
});
</script>
</body>
</html>
看到没,就这么几行代码,一个能转的彩色立方体就出来了。重点再强调一遍:父盒子必须加transform-style: preserve-3d,不然你转半天发现孩子全趴在地上摩擦,六个面叠成一个平面,那场面尴尬得想用脚趾扣出三室一厅。
还有perspective放哪的问题。上面代码里我是放在.scene上,这叫"上帝视角"——摄像机在外面看整个场景。如果你把perspective放在.cube自己身上,那就是"第一人称"视角,效果会变成你站在立方体里面往外看,完全两码事。手滑一下就得重来,排查半天才发现是perspective位置放错了,这种坑我踩过不止一次。
为什么你的3D看起来像纸片人
最常见翻车现场,我赌五毛钱你肯定遇到过:忘了加perspective。结果转来转去就是个扁扁的长方形,哪怕你写了rotateY(45deg),看起来也就是个被压扁的梯形,完全没有那种"立起来"的感觉。
/* 错误示范:没有perspective,3D变2.5D */
.wrong-example {
transform-style: preserve-3d;
/* 少了perspective,就像用正交相机看3D模型 */
transform: rotateY(45deg);
}
还有那种子元素明明写了rotateY,结果还是没立体感,多半是祖宗十八代里有个长辈开了flat给镇压了。CSS的transform-style不是继承的,每一层都得重新声明。比如你做嵌套的3D组件:
/* 外层开了3D */
.outer {
transform-style: preserve-3d;
perspective: 1000px;
}
/* 中层也得开,不然内层又被压扁 */
.middle {
transform-style: preserve-3d; /* 这里忘了加,里层全废 */
transform: rotateX(30deg);
}
/* 内层想转?没门,因为middle没开preserve-3d */
.inner {
transform: rotateY(45deg); /* 看起来就是个平面旋转 */
}
这种"隔代遗传"问题特别隐蔽,F12检查元素看着属性都在,就是不出效果,气得想砸键盘。记住:只要这一层包含3D子元素,就必须加transform-style: preserve-3d,宁可多写不要漏写。
还有个坑是z-index在3D世界里经常失灵。你可能会发现,明明前面的元素z-index设得比后面高,旋转的时候还是被后面的盖住了。这不是bug,是因为在3D空间里,视觉上的前后是由Z轴坐标决定的,不是z-index。如果两个元素在Z轴上挤在一起(比如都translateZ(0)),那浏览器也懵,渲染顺序就乱了。
解决办法很简单,把Z轴距离拉开:
/* 让前面这个往前凸50px,后面那个往后退50px */
.front-card {
transform: translateZ(50px);
/* z-index在这里基本没用,别死磕了 */
}
.back-card {
transform: translateZ(-50px);
}
距离拉开了,不用z-index也能分清前后。要是非得用z-index,那得配合transform-style: flat才有效,但那样又回到2D世界了,得不偿失。
再说个冷知识:backface-visibility属性。默认情况下,元素背面是可见的(虽然可能显示的是镜像内容)。做卡片翻转效果的时候,如果不希望看到背面,得手动设成hidden:
.card {
backface-visibility: hidden; /* 背面不可见,翻转180度后消失 */
}
但注意,这个属性在3D空间里有时候表现诡异,特别是嵌套多层的时候。如果背面内容莫名其妙消失了,先检查是不是这个属性在搞鬼。
真实项目里这招能干嘛
学会了不能光炫技,得落地到业务里。最常见的就是产品展示卡片,鼠标一悬停就翻过来显示详情,比那种点击弹模态框的交互高级多了。
HTML结构:
<div class="product-card">
<div class="card-inner">
<!-- 正面:产品图 -->
<div class="card-front">
<img src="product.jpg" alt="产品">
<h3>超炫机械键盘</h3>
</div>
<!-- 背面:详情参数 -->
<div class="card-back">
<h4>技术参数</h4>
<ul>
<li>轴体:Cherry MX红轴</li>
<li>键帽:PBT双色注塑</li>
<li>连接:三模无线</li>
</ul>
<button>立即购买</button>
</div>
</div>
</div>
CSS实现翻转:
.product-card {
width: 300px;
height: 400px;
perspective: 1000px; /* 摄像机架远点,变形自然 */
cursor: pointer;
}
.card-inner {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d; /* 开启3D,前后两面独立 */
transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); /* 丝滑缓动 */
}
/* 鼠标悬停时绕着Y轴转180度,背面转过来 */
.product-card:hover .card-inner {
transform: rotateY(180deg);
}
.card-front, .card-back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden; /* 背面隐藏,不然穿帮 */
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0,0,0,0.3);
}
.card-front {
background: white;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.card-back {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
transform: rotateY(180deg); /* 背面先转180度,等父元素转过来正好正对 */
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 20px;
box-sizing: border-box;
}
看到那个cubic-bezier(0.4, 0, 0.2, 1)没?这是Material Design的标准缓动曲线,比linear自然多了,有那种"甩过去"的惯性感。老板看了都得夸你一句"有点东西"。
再搞个3D相册轮播,比平铺直叙的幻灯片高级:
<div class="carousel-3d">
<div class="carousel-track">
<div class="slide" style="--i: 0">图1</div>
<div class="slide" style="--i: 1">图2</div>
<div class="slide" style="--i: 2">图3</div>
<div class="slide" style="--i: 3">图4</div>
<div class="slide" style="--i: 4">图5</div>
</div>
</div>
.carousel-3d {
width: 800px;
height: 400px;
perspective: 1200px;
margin: 50px auto;
overflow: hidden;
}
.carousel-track {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
animation: rotate-carousel 20s infinite linear;
}
.slide {
position: absolute;
width: 200px;
height: 300px;
left: 50%;
top: 50%;
margin-left: -100px;
margin-top: -150px;
background: hsl(calc(var(--i) * 72), 70%, 60%); /* 用CSS变量算彩虹色 */
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 30px;
color: white;
font-weight: bold;
/* 关键:把5张图均匀分布在圆周上 */
transform:
rotateY(calc(var(--i) * 72deg)) /* 每张图转72度(360/5) */
translateZ(350px); /* 往外推350px,形成圆环 */
}
@keyframes rotate-carousel {
from { transform: rotateY(0deg); }
to { transform: rotateY(360deg); }
}
这里用了CSS变量--i来动态计算每个slide的角度和颜色,省得写五遍重复代码。translateZ(350px)把图片推出去形成圆环,然后父容器整体旋转,看起来就像个走马灯。用户停留时长蹭蹭往上涨——虽然可能纯粹是因为晕3D看晕了还没找到关闭按钮。
甚至能整点活,做个简单的3D导航菜单:
.nav-3d {
display: flex;
gap: 20px;
perspective: 800px;
}
.nav-item {
padding: 15px 30px;
background: #333;
color: white;
transform-style: preserve-3d;
transition: all 0.3s ease;
position: relative;
cursor: pointer;
}
/* 悬停时往前凸+变色 */
.nav-item:hover {
transform: translateZ(20px) scale(1.05);
background: #666;
box-shadow: 0 10px 20px rgba(0,0,0,0.3);
}
虽然不能跟Unity、Three.js做的3D游戏比,但在网页里唬唬小白绝对够用了。而且纯CSS实现,不需要加载庞大的JS库,性能开销小得多。
遇到Bug别慌,先查查这几处
页面突然崩了或者特效不显示?先按F12看看控制台有没有红色报错。最常见的是浏览器兼容性在搞鬼——IE就别想了,直接放弃治疗,连Edge早期版本都支持得稀烂。现代浏览器(Chrome 60+、Firefox 60+、Safari 12+)基本都没问题,但最好还是查下caniuse。
旋转方向反了?检查一下坐标系。CSS的3D坐标系是右手坐标系,但跟咱们直觉不太一样:X轴向右是正,Y轴向下是正(对,你没看错,网页坐标Y轴是向下的!),Z轴朝屏幕外是正。有时候你觉得该往左转,实际得写rotateY(-90deg)才是你想要的。
/* 验证坐标系的小技巧 */
.axis-test {
transform: rotateX(45deg); /* 应该往屏幕里侧倒(顶部朝向你) */
/* 如果效果相反,说明你理解反了 */
}
性能卡成PPT?可能是开启了硬件加速但显卡不给力。CSS 3D变换默认会触发GPU加速,但如果元素太多或者嵌套太深,显存爆了就会卡。试试will-change属性提前跟浏览器打个招呼:
.animated-element {
will-change: transform; /* 告诉浏览器:这货要动,提前准备 */
/* 动画结束后记得移除,不然一直占着资源 */
}
但别滥用,will-change是把双刃剑,用多了反而增加内存压力。只在确实要动画的元素上加,动画结束通过JS移除。
还有个诡异bug:有时候3D元素突然变模糊了,像是对焦没对好。这多半是因为perspective值太小,或者元素旋转后Z轴坐标超出了摄像机的可视范围。调大perspective值,或者检查下translateZ是不是推得太远了。
如果用了filter(比如模糊、阴影)或者clip-path,可能会破坏3D上下文,导致transform-style失效。这时候要么换个实现方式,要么把效果拆到子元素上,别跟3D变换写在一个元素里。
几个让代码更骚气的野路子
别只会用deg,试试结合calc()动态算角度。比如做个跟着鼠标走的3D视差效果:
// JS监听鼠标位置,计算旋转角度
document.addEventListener('mousemove', (e) => {
const x = e.clientX / window.innerWidth; // 0到1
const y = e.clientY / window.innerHeight; // 0到1
const rotateY = (x - 0.5) * 60; // 左右移动,Y轴转±30度
const rotateX = (0.5 - y) * 60; // 上下移动,X轴转±30度(注意Y轴向下,要反一下)
document.querySelector('.parallax-box').style.transform =
`rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
});
.parallax-box {
transform-style: preserve-3d;
transition: transform 0.1s ease-out; /* 加点延迟,更跟手 */
}
/* 里面的子元素以不同速度移动,产生视差 */
.layer-1 { transform: translateZ(50px); }
.layer-2 { transform: translateZ(100px); }
.layer-3 { transform: translateZ(150px); }
不同层级的Z轴位移不一样,转动的时候近快远慢,那丝滑程度简直感人。配合cubic-bezier缓动,比线性动画高级十条街。
嵌套的时候小心"套娃"陷阱。前面说过transform-style要层层声明,但还有个坑是perspective也会被重置。如果你在子元素上又写了perspective,那它会覆盖父级的透视,导致整个场景的摄像机位置变了。
/* 错误示范:子元素又开perspective,父级的被覆盖了 */
.scene {
perspective: 1000px;
}
.cube {
transform-style: preserve-3d;
/* 这里又写perspective会出问题 */
perspective: 500px; /* 别这么干! */
}
如果确实需要局部调整透视,用transform: perspective(500px) rotateY(45deg)这种写法,它是临时的,不会影响子元素的继承。
动画过渡别只用linear,那是机器人跳舞。加点ease-in-out或者自定义贝塞尔曲线:
/* 自然缓动,有起有停 */
.natural-move {
transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
/* 弹性效果,像果冻一样 */
.bouncy {
transition: transform 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
那个负值是干嘛的?让动画超过目标值再弹回来,就像橡皮筋一样。用在按钮点击或者卡片翻转上,手感特别好。
最后安利个调试技巧:在Chrome DevTools里,Elements面板选中3D元素,右边Styles里找到transform,鼠标悬停在上面会出现一个3D坐标轴的小图标,点它能可视化当前元素的坐标系。旋转、平移的时候实时看效果,比瞎猜强多了。
最后扯点闲篇,别急着关掉
说实话,CSS3 3D这玩意儿上限也就那样。你别指望拿它做3A大作,没有光照模型、没有阴影贴图、没有物理引擎,就是个轻量级的玩具。但在网页里搞点小花样——产品展示、交互引导、视觉彩蛋——足够惊艳朋友圈了。而且纯CSS实现,不需要用户额外下载几MB的JS库,打开即看,体验丝滑。
我当年第一次做出能转的立方体时,兴奋得截图发了三个群,结果被人问"这有啥用"。 usefulness不是唯一的评判标准,有时候"酷"就够了。用户在你的产品页面上多停留的那几秒,可能就是因为你做了个会翻转的卡片而不是静态图片,这种细节积累起来就是竞争力。
万一哪天你做的特效太火,服务器崩了,记得回来评论区喊我一声,我帮你一起扛(或者一起跑路)。反正咱们前端嘛,不是在救火就是在去救火的路上,多一坑少一坑区别不大。
行了,赶紧去试试吧。写坏了也别怕,反正Ctrl+Z是程序员最好的朋友,大不了从头再来呗!要是看完还是做不出来,那…那可能确实需要再捋一遍,或者换个思路,用Canvas或者WebGL也许更适合你的场景。但先把CSS3这条路走到黑,基础打牢了,后面学啥都快。
完事儿,散会!
欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
推荐: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等工具 |
吾辈才疏学浅,摹写之作,恐有瑕疵。望诸君海涵赐教。望轻喷,嘤嘤嘤
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。愿斯文对汝有所裨益,纵其简陋未及渊博,亦足以略尽绵薄之力。倘若尚存阙漏,敬请不吝斧正,俾便精进!

更多推荐
所有评论(0)