Day24-按钮分身术(下)_我的分身想去哪

今天来继续写按钮分身术

昨天完成了控制钮的部分
今天来写分身按钮
在HTML的label下面新增需要的按钮数量

<a class="menu-item menu-item1" href="#HOME">
    <i class=" fas fa-home"></i></a>
<a class="menu-item menu-item2" href="#ABT">
    <i class="fas fa-list"></i></a>
<a class="menu-item menu-item3" href="#INTRO">
    <i class="fab fa-pagelines"></i></a>
<a class="menu-item menu-item4" href="#RECOMMEND">
    <i class="fas fa-envelope"></i></a>
<a class="menu-item menu-item5" href="#OTHERS">
    <i class="fas fa-ellipsis-h"></i></a>

我这边是直接用Font Awesome的图示代表各个按钮
https://ithelp.ithome.com.tw/upload/images/20211009/20141991EaMTYbBqec.jpg

然後先帮分身按钮来加上统一的样式,并设成position: absolute; 让所有的按钮重叠

.menu-item {
    width: 60px;
    height: 60px;
    position: absolute;
    background-color: #1FAF87;
    display: grid;
    justify-items: center;
    align-items: center;
    border-radius: 50%;
    text-decoration: none;
    color: white;
    font-size: 30px;
}

https://ithelp.ithome.com.tw/upload/images/20211009/20141991ftPVsLSL11.jpg
因为设了position: absolute; 的关系,所有按钮都会重叠在一起,这样我们就无法点击到我们的控制钮了,所以需要把控制钮的图层拉到最高

.menu-open-button {
    z-index: 100;
}

https://ithelp.ithome.com.tw/upload/images/20211009/20141991saNDtIwbxO.jpg
为了把让分身可以完美的被控制钮挡住,帮控制钮设上一样的样式

.menu-open-button {
    background-color: #1FAF87;
}
.ham span {
    background: white;
}

https://ithelp.ithome.com.tw/upload/images/20211009/20141991eEbesD8iO6.jpg

接着我们一样使用.menu-check:checked来帮每个分身做设定
我这边示范图是让他往下分身,所以就把每个分身设往下移动的距离
利用transform: translate3d(); 可以让每个分身以一开始设定的位置去移动XY或Z
也因为是使用转场的移动所以会自带转场的感觉不会是直接出现的感觉

.menu-check:checked~.menu-item1 {
    transform: translate3d(0, 100px, 0);
}
.menu-check:checked~.menu-item2 {
    transform: translate3d(0, 200px, 0);
}
.menu-check:checked~.menu-item3 {
    transform: translate3d(0, 300px, 0);
}
.menu-check:checked~.menu-item4 {
    transform: translate3d(0, 400px, 0);
}
.menu-check:checked~.menu-item5 {
    transform: translate3d(0, 500px, 0);
}

https://i.imgur.com/bFGJs53.gif
根据希望的长相去把每个分身改变点及控制钮以後的位置,可以做出很多不同的变化
只改变X轴就是往横的分身
都设置的话可以像我之前做的一样像是一个半圆形,或是其他自己想要的移动轨迹

这边为了让控制钮有一点变化,另外帮控制钮设置了点击打开的状态会变小

.menu-check:checked+.menu-open-button {
    transform: scale(0.75, 0.75);
}

https://i.imgur.com/ZJZr5bF.gif

接着,虽然刚刚提到,因为是使用transform: translate3d(); 去改变位置,所以有自带转场的感觉,但还是可以帮个别按钮设置转场时长
做出一点一个一个出去跟收回的效果

.menu-item1 {
    transition: transform ease-out 200ms;
}
.menu-item2 {
    transition: transform ease-out 260ms;
}
.menu-item3 {
    transition: transform ease-out 320ms;
}
.menu-item4 {
    transition: transform ease-out 380ms;
}
.menu-item5 {
    transition: transform ease-out 440ms;
}

https://i.imgur.com/hE2OCDK.gif
切记transition: transform ease-out 440ms; 这种控制转场的时间跟时间曲线的程序码,要打在一开始的class中,不能打在比如:hover或:checked+的class中,这样会是只有出去或收回时才有转场时间曲线的效果,无法达到出去与收回都有效果

这样便完成我们的分身按钮了
这边再做几个样式给大家参考

比如让他依序出去绕着控制钮长一圈
https://i.imgur.com/7Syf6ZK.gif
这边我有把速度调慢,比较明显

或是搭配初始的.menu-item 设置transform: scale(0.001, 0.001); 变小
点击控制钮後会恢复大小并改变位置,会有一种放大的速度感
https://i.imgur.com/IKN8kmO.gif

最後也可以搭配变小隐藏的部分,把初始直设置在第一个按钮的位置,比如说我把分身按钮跟控制钮的初始值都设了left: -120px;
再让:check後的所有分身按钮的X值都+120px,控制按钮X值+160px
就能做出这种效果
https://i.imgur.com/KpZ7l8J.gif

完全可以根据期望自行调整速度感跟位置的变化噢
把这个分身按钮的做法分享给大家


<<:  【Day24】维持权限 — 隐藏後门(一)

>>:  Day27 vue.js简易照片上传功能(base64)

简单说回归 | ML#Day14

wiki 说明页:回归分析 想了解详细的说明,请见wiki或者其他参考资料。 或者也可以直接看下面,...

30天程序语言研究

今天是30天程序语言研究的第二天,研究的语言一样是python,今天主要学习的部分是string 和...

软件工程:SDLC V-Model

V型 瀑布模型的扩展。 左臂对应瀑布模型。 右臂对应於测试阶段。 每个验证活动都有其验证活动。 V模...

[DAY 29] Google 提供的图片转文字

现在有一些还不错的网站有在蒐集各校段考考古题 例如:全国中小学题库网、昌爸工作坊 等等 由於我国着作...

Day 24 - redux-saga 用到 Generators~

如果有错误,欢迎留言指教~ Q_Q 没写完啦 在 React/Redux 中,处理非同步的套件们 ...