CSS 技巧
评判一个网页的美观程度,首要的当然是看它的 CSS 样式写的如何。
日本某宅写了一个非常厨二的页面——臆病な魔女,可以说是把 CSS 动画玩得非常 6 了,看得笔者顿时燃起了学好 CSS 的欲望。
如果想 CSS 玩的溜,除了熟悉基本的知识以外,掌握大量技巧也是必不可少的。
形状
扩张式矩形
目的:创建一个矩形,鼠标悬浮时扩张一定的大小
<div class="expanding-box"></div>body {
display: flex;
height: 100vh;
justify-content: center;
align-items: center;
}
.expanding-box {
position: relative;
width: 15em;
height: 10em;
&::after {
position: absolute;
content: "";
top: -1em;
right: -1em;
bottom: -3em;
left: -1em;
background: black;
--path: inset(2rem 0 2rem 2rem round 10px);
clip-path: var(--path);
transition: clip-path 0.3s;
}
&:hover::after {
--path: inset(0 round 10px);
}
}首先利用伪元素::after生成一个矩形
利用clip-path的inset来裁切矩形(顺序是上右下左圆角)
鼠标悬浮时去除裁切效果即可
字体排印
分割符
目的:实现分隔符效果
添加伪元素::after,内容content: "|",设置间距
再用:not(:last-child)去除伪元素的最后一个子元素即可
用户体验
提示用角标
目的:在按钮右上角创建一个提示用的角标
伪元素的content可通过attr()来获取标签的某一属性值
类似的提示框也可以配合过渡动画来实现:预览
伸缩式按钮
目的:实现伸缩式按钮(鼠标悬浮按钮则展开,移开按钮则收缩)
给“下载”设置负的left用于将其移除视界范围
鼠标悬浮时设置padding-left使按钮给“下载”留出空间
left: 30px;和transform: scale(1, 1);把“下载”拉回按钮中(这个很 hack)
最后设定过渡动画即可看到流畅的过渡效果了
结构与布局
圣杯布局
目的:实现圣杯布局(左中右三列,左右两列定宽,中间列自适应宽度)
左右列的flex-grow设为200px,表示它们各占200px空间
中间列的flex-grow设为auto,flex-shrink 设为 1,表明是自适应宽度
过渡与动画
动态侧边栏
目的:创建一个导航用的侧边栏,里面包含一个列表,用户鼠标浮动到链接上时会显示过渡动画
给 a 添加 2 个伪元素,并分别为其设置transition以及hover时的状态即可
图片幻灯片
目的:四幅图片(这里用颜色代替)按顺序依次向右滑动显示,最后被四道白色矩形依次遮住
添加一个 slider,用flex使其垂直居中
在 slider 上添加 4 个 image,并使其大小和 slider 相同并重叠在一起,利用overflow:hidden隐藏它们
为这些 image 设置::after矩形伪元素,用作图片背景
创建show-image关键帧:元素的宽度从 0%变为 100%
为 image 创建动画:把show-image作为关键帧,每张图设置不同的延时delay,fill-mode设置forwards表示动画完成时保持最后一个关键帧的属性值,这样就完成了 4 张图依次向右滑动的效果
添加一个 paint 以及 4 个子 div,表示 4 道白色矩形,默认的位置是向 x 轴左侧平移 1 个元素单位
创建slide-right关键帧:向 x 轴左侧平移 1 个元素单位变为平移 0 个单位,也就是平移到原点
为 paint 的 4 个子 div 创建动画:把slide-right作为关键帧,同样给每个矩形设置不同的延时delay和forwards的fill-mode,就完成了四道白色矩形依次将图片遮住的效果
Last updated
Was this helpful?