1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > html的自定义按钮 「HTML+CSS」--自定义按钮样式【003】

html的自定义按钮 「HTML+CSS」--自定义按钮样式【003】

时间:2019-11-15 02:32:12

相关推荐

html的自定义按钮 「HTML+CSS」--自定义按钮样式【003】

效果展示

思路

上面效果可以概括为:鼠标未停留时:青色(渐变)背景,正中文字为白色,button四角做了圆角处理

鼠标停留时:浅青色背景从上至下,依次覆盖button

鼠标离开button时:浅青色背景从上至下,依次消失,button逐渐恢复原样

根据效果图可以得出实现的一些思路:初始状态,设置button背景为渐变青色,中间文字为白色,做圆角、阴影处理

初看有两个过渡效果,其实是可以用一个元素的过渡transition实现的

这里我们就利用button的::before伪类元素来实现

将::before设置为绝对定位,初始位置为左下角(右下也是可以的),其中width设置为100%,height为0

触发hover时,height设置为100%,top设置为0 (记住这里的关键点top:0)

还有就是,button和::before的背景颜色需要有所深浅变化

这里使用的渐变色:深青(渐变):linear-gradient(315deg, #89d8d3 0%, #03c8a8 74%);

浅青(渐变):linear-gradient(315deg, #4dccc6 0%, #96e4df 74%);Demo代码

HTMLDocumentHaihongPro

CSShtml,body{

margin:0;

height:100%;

}

body{

display:flex;

justify-content:center;

align-items:center;

}

.btn{

width:390px;

height:120px;

background:linear-gradient(315deg,#89d8d30%,#03c8a874%);

border:none;

border-radius:10px;

font-family:'Lato',sans-serif;

font-weight:500;

font-size:48px;

color:#fff;

box-shadow:inset2px2px2px0pxrgba(255,255,255,.5),

7px7px20px0pxrgba(0,0,0,.1),

4px4px5px0pxrgba(0,0,0,.1);

outline:none;

position:relative;

z-index:0;

}

.btn::before{

position:absolute;

content:'';

left:0;

bottom:0;

width:100%;

height:0;

transition:all0.3sease;

border-radius:10px;

background:linear-gradient(315deg,#4dccc60%,#96e4df74%);

z-index:-1;

}

.btn:hover::before{

top:0;

height:100%;

}

.btn:active{

top:2px;

}疑点详解

1.为什么触发hover时,除了设置height:100%外,还需要设置top:0呢?上面效果图原理是怎样呢?

为了便于观察,我们将::before的初始状态显示出来

初始时,before的位置是在左下角(bottom:0 left:0)

触发hover时,如果只是设置heigth:100%,产生的效果如下:

如果此时立即将位置改为左上角(top:0 left:0),就会产生从上至下的效果:

所以还需要在触发hover时,添加 top:0 ( left就不需要变了,因为原本设置好了 )

2.为什么最后需要设置:active呢?.btn:active{

top:2px;

}

emmm,就是产生一个点击按钮的动态效果(点击一下,动一下),具体可以查看css :active的作用,这里就不多说了。踩坑

1.button、button::before需要设置z-index,分别为0和-1(确定button在上面一层就行)

不然,会产生如下效果:

2.button中记得设置 outline: none;

不然,点击button后,会出现蓝色边框

注:前两次文章中海轰也没有发现这个问题,今天写的的时候,点击后才发现了这个问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。