博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端每日实战:112# 视频演示如何用纯 CSS 创作切换背景的按钮悬停效果
阅读量:6029 次
发布时间:2019-06-20

本文共 1758 字,大约阅读时间需要 5 分钟。

图片描述

效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

可交互视频

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

代码解读

定义 dom,导航中包含一个无序列表,列表中有一个列表项:

居中显示:

body {    margin: 0;    height: 100vh;    display: flex;    align-items: center;    justify-content: center;    background-color: teal;}

隐藏列表项前端的引导符号:

nav ul {    padding: 0;    list-style-type: none;}

定义按钮容器尺寸:

:root {    font-size: 10px;}nav li {    width: 20rem;    height: 7rem;}

设置文字样式:

nav li {    font-size: 20px;    text-align: center;    line-height: 7rem;    font-family: sans-serif;    text-transform: uppercase;    letter-spacing: 1px;}

用伪元素制作 2 个背景色块:

nav li {    position: relative;}nav li::before,nav li::after {    content: '';    position: absolute;    width: inherit;    height: inherit;    top: 0;    left: 0;}nav li::before {    background-color: white;    z-index: -1;}nav li::after {    background-color: goldenrod;    z-index: -2;}

让后面的背景块向右下偏移,并且让前面的背景块投放阴影,增加立体效果:

nav li::before {    box-shadow: 0.2rem 0.2rem 0.5rem rgba(0, 0, 0, 0.2);}nav li::after {    transform: translate(1.5rem, 1.5rem);}

接下来增加悬停效果。

设置缓动时间,主元素和伪元素都将有缓动效果:

nav li {    transition: 0.3s;}nav li::before,nav li::after {    transition: 0.3s;}

当悬停时,2 个背景色块的颜色互换:

nav li:hover::before {    background-color: goldenrod;}nav li:hover::after {    background-color: white;}

同时,后面的背景色块的向左上方移动,按钮整体则向右下方移动:

nav li:hover {    transform: translate(1.5rem, 1.5rem);}nav li:hover::after {    transform: translate(-1.5rem, -1.5rem);}

同时,再让文本在悬停时变色:

nav li:hover {    color: white;}

再增加几个按钮:

最后,增加按钮之间的间距:

nav li {    margin: 3rem;}

大功告成!

转载地址:http://pedhx.baihongyu.com/

你可能感兴趣的文章
Solarized Scheme
查看>>
vue.js dynamic create nest modal
查看>>
那些年我们用过的显示性能指标
查看>>
基于OpenResty的Lua Web框架lor0.0.2预览版发布
查看>>
orm2 中文文档 3.1 模型属性
查看>>
如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
查看>>
classpath对获取配置文件的影响
查看>>
jquery cookie
查看>>
赢得Docker挑战最佳实践
查看>>
iOS小技巧之UIImagePickerController实现头像选择
查看>>
exports和module.exports
查看>>
C++类的相互关联
查看>>
【干货分享】dos命令大全
查看>>
关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
查看>>
关于Android全面屏虚拟导航栏的适配总结
查看>>
Java总结 - String -> 这篇请使劲喷我
查看>>
AI算硅基生命吗,为什么?
查看>>
const的用法,特别是用在函数前面与后面的区别
查看>>
NLPIR智能语义技术让大数据挖掘更简单
查看>>
毕玄:我在阿里的十年技术感悟
查看>>