专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

默认的input标签太丑?教你如何使用CSS写出带动画的样式

ins518 2024-10-09 16:23:28 技术文章 40 ℃ 0 评论

前言

浏览器自带的input标签,例如text,radio,checkbox的样式都显得很难看,虽然已经有类似于Bootstrap这种稳定的类库可以使用,但是对于定制化的input样式同样难以满足,今天我们就自己动手,一起来看看如何使用CSS3实现一个好看的input样式。

CSS3

如果感兴趣的,可以去github上去看源码进行学习,地址如下:

https://github.com/zhouxiongking/article-pages/tree/master/articles/beautifulInput

input-text

首先我们来看下type为text的文本框元素,实现的动态效果如下图所示。

效果图

实现过程

接下来我们来看看这样的效果是如何实现的。页面上的元素主要是以下几个部分。

  1. input元素,将其border设置为none

  2. label元素,与input元素绑定

  3. div元素,实际为下面的横线

我们需要达到的效果是,在未点击input元素时,通过label元素显示提示信息;在input元素获得焦点后label元素会移动到input元素上面,并且显示出动态的获取焦点的过程,此后可以在input元素中正常输入信息。

代码组成

首先我们来看看HTML部分的代码。

HTML代码

通过html部分代码,可以看出页面主要由input,label,div三个元素构成。

然后我们再来看看CSS部分的代码,由于CSS部分代码比较多,我们拆开来看。

先看最外层的容器样式代码如下。

外层容器

然后是input标签的样式,在CSS3中提供了placehoder的样式,在这里为了防止placeholder属性会覆盖到label标签,我们将其透明度设置为0。关于input元素以及其placeholder属性值的css样式部分如下所示。

input样式

紧接着是下面的label标签的样式,因为在input获取焦点时,label元素会移动到input上方,因此需要给label元素加上一个动画效果。label部分代码如下所示。

label部分代码

其次是最下面的一条横线,在input元素未获取焦点的状态下,其长度为0。

横线

最后是在input获取焦点后的样式变化,下面的横线会逐渐延长至最大宽度,而且具有不同的颜色,这一动态效果由下面的代码决定。

获取焦点动态效果

至此,页面上所有的代码均已完成,在浏览器中运行页面后会看到文章开始时的效果。

结束

在万千已经成型的前端框架中,自己写出一个样式也算是一种收获,在后面的文章中,我会继续写关于如何实现checkbox和radio样式的文章,敬请期待~

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表