【每日一练】80—CSS滑动操作菜单
写在前面
时间过得真快,我们的小练习转眼之间就来到了第80练,虽然,我不是每日更新,但是,我还是保持了一定的更新频率。
这些小练习,有简单,有容易;有某个功能实现,也有完整的单页网站;有好玩有趣的,也有开发实用型的,总之,想到哪里就练习到那里,没有特别规划,比较随性一点。
后面,我会做一些系列的练习教程,这个是比较有规划的,希望可以帮助大家坚持持续学习。
现在,我们还是一起来看一下,今天的练习效果:
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>【每日一练】80—CSS滑动操作菜单</title>
</head>
<body>
<div class="navigation">
<div class="menu_toggle"></div>
<div class="profile">
<div class="imgBx">
<img src="01.png">
</div>
</div>
<ul class="menu">
<li>
<a href="#">
<span class="icon"><ion-icon name="person-outline"></ion-icon></span>
<span class="text">个人简介</span>
</a>
</li>
<li>
<a href="#">
<span class="icon"><ion-icon name="chatbox-outline"></ion-icon></span>
<span class="text">收件箱</span>
</a>
</li>
<li>
<a href="#">
<span class="icon"><ion-icon name="settings-outline"></ion-icon></span>
<span class="text">设置</span>
</a>
</li>
<li>
<a href="#">
<span class="icon"><ion-icon name="help-circle-outline"></ion-icon></span>
<span class="text">问答</span>
</a>
</li>
<li>
<a href="#">
<span class="icon"><ion-icon name="log-out-outline"></ion-icon></span>
<span class="text">登出</span>
</a>
</li>
</ul>
</div>
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
<script>
const menu_toggle = document.querySelector('.menu_toggle');
const navigation = document.querySelector('.navigation');
menu_toggle.onclick = function(){
navigation.classList.toggle('active');
}
</script>
</body>
</html>
*
{
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Ubuntu', sans-serif;
}
body
{
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #67a5d4;
background: #f7f7f7;
}
.navigation
{
width: 80px;
background: #fff;
transition: 0.5s;
display: flex;
flex-direction: column;
align-items: flex-start;
overflow: hidden;
border-radius: 10px;
box-shadow: -20px 20px 50px rgba(0,0,0,0.05);
}
.navigation.active
{
width: 400px;
}
.navigation .menu_toggle
{
position: relative;
width: 80px;
height: 70px;
background: #fff;
display: flex;
align-items: flex-start;
align-items: center;
cursor: pointer;
padding: 0 20px;
width: 100%;
border-bottom: 1px solid rgba(0,0,0,0.05);
}
.navigation .menu_toggle::before
{
content: '';
position: absolute;
width: 35px;
height: 2px;
background: #333;
transform: translateY(-10px);
transition: 0.5s;
}
.navigation .menu_toggle::after
{
content: '';
position: absolute;
width: 35px;
height: 2px;
background: #333;
transform: translateY(10px);
box-shadow: 0 -10px #333;
transition: 0.5s;
}
.navigation.active .menu_toggle::before
{
transform: translateY(0px) rotate(45deg);
}
.navigation.active .menu_toggle::after
{
transform: translateY(0px) rotate(-45deg);
box-shadow: 0 0 #333;
}
.navigation .profile
{
position: relative;
display: flex;
width: 100%;
justify-content: center;
align-items: center;
margin: 10px 0;
padding: 0 10px;
}
.navigation .profile .imgBx
{
position: relative;
width: 60px;
height: 60px;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
border-radius: 50%;
transition: 0.5s;
}
.navigation.active .profile .imgBx
{
width: 200px;
height: 200px;
}
.navigation .profile .imgBx img
{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
.navigation .menu
{
position: relative;
width: 100%;
padding: 10px;
transition: 0.5s;
border-top: 1px solid rgba(0,0,0,0.05);
}
.navigation.active .menu
{
padding: 10px 20px;
}
.navigation .menu li
{
list-style: none;
}
.navigation .menu li a
{
position: relative;
display: flex;
text-decoration: none;
color: #111;
border-radius: 10px;
}
.navigation .menu li a:hover
{
background: #0084ff;
color: #fff;
}
.navigation .menu li a .icon
{
position: relative;
min-width: 60px;
height: 60px;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.5em;
}
.navigation .menu li a .text
{
position: relative;
height: 60px;
display: flex;
padding-left: 10px;
justify-content: center;
align-items: center;
font-size: 1.25em;
}
写在最后
以上就是今天【每日一练】的全部内容,希望今天的小练习对你有用,如果你觉得有帮助的话,请点赞我,关注我,并将它分享给你身边做开发的朋友,也许能够帮助到他。
我是杨小爱,我们明天见。
学习更多技能
请点击下方公众号
评论