【每日一练】11—复选框效果的实现
写在前面
有小伙伴在后台留言说,为啥照着我的代码写的,怎么效果还不一样,其实,就算不完全一模一样,你也不用担心,多看看,检查一下会不会是浏览器的问题,我这边预览采用都是谷歌浏览器,浏览器的版本不同,有时候都会导致效果有些微妙的差异,这个就是做前端辛苦的地方。
以前IE一统天下的时候,我们就想,兼容IE就好了,现在IE退出江湖了,依然还是有这个问题,所以不要着急,多仔细看看。
很多时候,我们在本地都是OK的,到了服务器上还有各种问题呢,怎么办呀,只能想办法解决,编程就是这样,Bug是永远存在的,就是看这个Bug影响大不大了。
如果我们都把所有Bug都解决了,那程序的世界就太安静了。
但是,有些问题,对于我们平时练习时候,影响不大的话,就不要纠结了,在实际项目中,这个就要具体情况具体分析了。
总之,学习HTML&CSS,看起来好像很简单,其实,这个真的没有那么容易。
想要精通CSS就要多练习,学习它的更多甚至全部功能,这样,我们才能做到心中有数,知道什么时候用什么功能,让CSS帮助我们自由的设计出想要的效果。
现在,我们就一起来一下今天的练习:
<html>
<head>
<title>【每日一练】11—复选框效果的实现</title>
</head>
<body>
<label>
<input type="checkbox">
<div class="icon">
<div class="shadow"></div>
<div class="iconBox">
<ion-icon name="power-outline"></ion-icon>
</div>
</div>
</label>
<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>
</body>
</html>
*
{
margin: 0;
padding: 0;
box-sizing: border-box;
}
body
{
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #cfd1e1;
overflow: hidden;
}
label
{
position: relative;
width: 120px;
height: 60px;
transition: 0.5s;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
}
label::before
{
content: '';
position: absolute;
width: 60%;
height: 4px;
background: #444;
border-radius: 4px;
}
label input
{
position: absolute;
appearance: none;
}
.icon
{
position: absolute;
left: 0;
width: 60px;
height: 100%;
transition: 0.5s;
}
label input:checked ~ .icon
{
left: 60px;
}
.icon::before
{
content: '';
position: absolute;
top: 0;
left: 0;
width: 10px;
height: 100%;
background: linear-gradient(#fff,#fff,#e3e3e3);
z-index: 1;
filter: blur(1px);
}
.icon::after
{
content: '';
position: absolute;
top: 0;
right: -1px;
width: 10px;
height: 100%;
background: #9d9d9d;
z-index: 1;
filter: blur(1px);
}
.shadow
{
position: absolute;
top: 30px;
left: -12px;
width: 84.85px;
height: 300px;
background: linear-gradient(180deg,rgba(0,0,0,0.1),transparent,transparent);
transform-origin: top;
transform: rotate(315deg);
pointer-events: none;
}
.iconBox
{
position: relative;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(#dbdae1,#a3aaba);
box-shadow: 5px 5px 5px rgba(0,0,0,0.1),
15px 15px 15px rgba(0,0,0,0.1),
20px 20px 15px rgba(0,0,0,0.1),
30px 30px 15px rgba(0,0,0,0.1),
inset 1px 1px 2px #fff;
}
ion-icon
{
position: absolute;
color: #555;
font-size: 1.5em;
--ionicon-stroke-width: 50px;
transition: 0.5s;
}
label input:checked ~ .icon ion-icon
{
color: #00ffe2;
filter: drop-shadow(0 0 5px #00ffe2) drop-shadow(0 0 15px #00ffe2);
}
写在最后
到今天你还在坚持练习的话,我那真的要恭喜你了,你没有放弃,那就继续加油吧,后面我们将一起来写一下静态网页的案例,每天只写其中的某个布局,然后通过每天一点点的积累,一个完整的页面就出来了。
好了,今天的【每日一练】就到这里了,希望今天的练习对你有用,如果你觉得有帮助的话,请点赞我,关注我,并将它分享给你身边做开发的朋友,也许能够帮助到他。
我是杨小爱,我们明天见。
学习更多技能
请点击下方公众号
评论