前端每日实战:147# 视频演示如何用纯 CSS 创作透视按钮的悬停特效
效果预览
按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。
https://codepen.io/comehope/pen/qJEdKb
可交互视频
此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。
请用 chrome, safari, edge 打开观看。
https://scrimba.com/p/pEgDAM/cEJRKud
源代码下载
每日前端实战系列的全部源代码请从 github 下载:
https://github.com/comehope/front-end-daily-challenges
代码解读
定义 dom,容器是一个无序列表,包含 4 个元素,代表 4 个按钮:
<ul>
<li>home</li>
<li>products</li>
<li>services</li>
<li>contact</li>
</ul>
居中显示:
body {
margin: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: cornsilk;
}
去掉列表项前面的符号:
ul {
padding: 0;
list-style-type: none;
}
设置按钮的边框和背景的样式,背景采用渐变色,但渐变的方向依次交替:
ul li {
box-sizing: border-box;
width: 15em;
height: 3em;
font-size: 20px;
border-radius: 0.5em;
margin: 0.5em;
box-shadow: 0 0 1em rgba(0,0,0,0.2);
}
ul li:nth-child(odd) {
background: linear-gradient(to right, orange, tomato);
}
ul li:nth-child(even) {
background: linear-gradient(to left, orange, tomato);
}
设置按钮上文字的样式,依次交替居左或居右:
ul li {
color: white;
font-family: sans-serif;
text-transform: capitalize;
line-height: 3em;
}
ul li:nth-child(odd) {
text-align: left;
padding-left: 10%;
}
ul li:nth-child(even) {
text-align: right;
padding-right: 10%;
}
设置按钮的透视效果,依次交替向左旋转和向右旋转,此时透视的距离是 500px,注意 perspective() 函数和 rotateY() 函数的顺序不能写反:
ul li:nth-child(odd) {
transform: perspective(500px) rotateY(45deg);
}
ul li:nth-child(even) {
transform: perspective(500px) rotateY(-45deg);
}
为按钮增加悬停效果,使悬停时的透视距离变短为 200px,透视距离越短,旋转的幅度看起来就越大:
ul li:nth-child(odd):hover {
transform: perspective(200px) rotateY(45deg);
padding-left: 5%;
}
ul li:nth-child(even):hover {
transform: perspective(200px) rotateY(-45deg);
padding-right: 5%;
}
最后,设置一个缓动时间,使效果转换变得平滑:
ul li {
transition: 0.3s;
cursor: pointer;
}
大功告成!
前端每日实战:147# 视频演示如何用纯 CSS 创作透视按钮的悬停特效的更多相关文章
- 前端每日实战:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/zhang-ou/pen/GdpPLE 可交互视频教程 此视频 ...
- 前端每日实战:32# 视频演示如何用纯 CSS 创作六边形按钮特效
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/xjoOeM 可交互视频教程 此视频 ...
- 前端每日实战:11# 视频演示如何用纯 CSS 创作一个荧光脉冲 loader 特效
效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视频是可以交 ...
- 前端每日实战:2# 视频演示如何用纯 CSS 创作一个矩形旋转 loader 特效
效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/vjLQMM 可交互视频教程 此视频是可以交 ...
- 前端每日实战:157# 视频演示如何用纯 CSS 创作一个棋盘错觉动画(实际上每一行都是平行的)
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VEyoGj 可交互视频 此视频是可 ...
- 前端每日实战:158# 视频演示如何用纯 CSS 创作一个雨伞 toggle 控件
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/pxLbjv 可交互视频 此视频是可 ...
- 前端每日实战:140# 视频演示如何用纯 CSS 创作文本的淡入动画效果
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ZMwgqK 可交互视频 此视频是可 ...
- 前端每日实战:161# 视频演示如何用纯 CSS 创作一张纪念卓别林的卡片(没有笑声的一天就是被荒废的一天)
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/WaaBNV 可交互视频 此视频是可 ...
- 前端每日实战:122# 视频演示如何用纯 CSS 创作一个苹果系统的相册图标
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/zJKwbO 可交互视频 此视频是可 ...
随机推荐
- [USACO09OCT]谷仓里的回声Barn Echoes(hush、STL)
https://www.luogu.org/problem/P2957 题目描述 The cows enjoy mooing at the barn because their moos echo b ...
- macbook安装LightGBM
一开始直接用pip install lightgbm 报错: OSError: dlopen(/opt/anaconda3/lib/python3.7/site-packages/lightgbm/l ...
- z-scores|zα
6.2 Areas Under the Standard Normal Curve Property 4: Almost all the area under the standard normal ...
- c++与c语言的区别部分
1.new <malloc> delete <free> 2.多态: 重载 <函数 操作符> 类似于c中的变化参数 虚函数 3.模板 ...
- maven中指定build一个project中几个特定的子modules
问题由来: 一个项目可能会有多个子module,在特定情况下可能只需要build其中几个module. 例如我的项目的目录结构如下 myproject |------------module_one ...
- 关于QGIS打开SHP文件属性表乱码
解决方案是从网上看到的,一个台湾的朋友给出了具体的解决方法.但他说的方法的最后一步对我来说不适用,我稍作修改 具体如下:在线安装插件:Shapefile Encoding Fixer. 加载shp文件 ...
- freeRadius设置任意账号密码认证通过
[root@wifi_radiusdproxy_16 raddb]# cat users # # Please read the documentation file ../doc/processin ...
- get 传中文,可以通过下面这种方式
window.location.href=encodeURI("<%=path%>/XXX.XXX?name=中文"); 然后在后台通过new String(reque ...
- HDU-3579-Hello Kiki (利用拓展欧几里得求同余方程组)
设 ans 为满足前 n - 1个同余方程的解,lcm是前n - 1个同余方程模的最小公倍数,求前n个同余方程组的解的过程如下: ①设lcm * x + ans为前n个同余方程组的解,lcm * x ...
- linux服务器项目部署
重启服务器 :reboot C:\Users\maple>mysql -u root -pEnter password: ******mysql> use test;Database ch ...