CSS使用placeholder-shown伪类实现输入框浮动文字效果

yizhihongxing

使用placeholder-shown伪类可以实现输入框的浮动文字效果,可以增加用户交互体验,下面是使用该伪类实现输入框浮动文字效果的详细攻略。

1. 设置输入框样式

首先需要设置输入框的基本样式,包括输入框的边框颜色、宽度、高度等信息。输入框的样式可以自定义,下面是一个简单样例:

input {
  border: 1px solid #ccc;
  height: 40px;
  width: 100%;
}

2. 添加动态浮动文字

在输入框的父元素中添加一个label元素,用于展示输入框的浮动文字。同时在该label元素中添加浮动文字的样式。下面是示例代码:

<div>
  <input type="text" name="username" />
  <label for="username">Username</label>
</div>
label {
  position: absolute;
  top: 13px;
  left: 10px;
  transition: all 0.2s ease;
  pointer-events: none;
  font-size: 16px;
  color: #999;
}

其中,label元素的position属性设置为absolute,用于定位元素,top和left属性用于设置元素的位置,通过transition属性设置动画效果,pointer-events属性设置为none,用于让鼠标事件穿透到input元素之下,避免影响用户的输入。font-size和color属性用于设置浮动文字的字体样式。

3. 使用placeholder-shown伪类实现效果

使用placeholder-shown伪类来控制浮动文字的状态,当input元素的placeholder值被显示时,即输入框被聚焦或输入框中存在值时,浮动文字的样式会发生改变。

input:focus + label,
input:not(:placeholder-shown) + label {
  top: -10px;
  font-size: 12px;
  color: #007acc;
}

其中,input:focus + label选择器表示当输入框聚焦时,label元素的样式发生改变。input:not(:placeholder-shown) + label选择器表示当输入框中存在值时,label元素的样式也会发生改变。这两种情况下,都将label元素的top值设置为-10px,即将浮动文字向上移动。同时修改浮动文字的样式,将字体变小、颜色变为蓝色。

示例1

下面是一个完整的示例,可以将其复制到HTML和CSS文件中查看效果:

<div>
  <input type="text" name="username" placeholder=" " />
  <label for="username">Username</label>
</div>

div {
  position: relative;
  margin: 50px auto;
  width: 400px;
}
input {
  border: none;
  background: none;
  height: 45px;
  width: 100%;
  border-bottom: 2px solid #ccc;
  font-size: 18px;
  color: #333;
}
label {
  position: absolute;
  top: 15px;
  left: 0;
  font-size: 18px;
  color: #999;
  pointer-events: none;
  transition: 0.2s ease all;
}
input:focus + label,
input:not(:placeholder-shown) + label {
  top: -20px;
  font-size: 14px;
  color: #007acc;
}

示例2

下面是另一个示例,可以将其复制到HTML和CSS文件中查看效果:

<div>
  <input type="email" name="email" placeholder=" " required />
  <label for="email">Email address</label>
</div>
div {
  position: relative;
  margin: 50px auto;
  width: 400px;
}
input {
  border: none;
  background: none;
  height: 45px;
  width: 100%;
  border-bottom: 2px solid #ccc;
  font-size: 18px;
  color: #333;
}
label {
  position: absolute;
  top: 15px;
  left: 0;
  font-size: 18px;
  color: #999;
  pointer-events: none;
  transition: 0.2s ease all;
}
input:focus + label,
input:not(:placeholder-shown) + label {
  top: -20px;
  font-size: 14px;
  color: #007acc;
}

在这个示例中,我们增加了一些额外的输入验证,其中input元素的type属性设置为email,required属性表示该输入框为必填项。具体的效果可以通过复制示例代码实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS使用placeholder-shown伪类实现输入框浮动文字效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)

    使用 Electron 实现类似新版 QQ 的登录界面效果,需要注意以下几点: 1. 创建 Electron 项目 使用命令行创建一个新的 Electron 项目,进入项目文件夹后安装必要的依赖: # 初始化项目 npm init # 安装 electron npm install electron –save # 安装 jquery 和 bootstra…

    css 2023年6月11日
    00
  • css之display属性之inline-block布局实现详解

    CSS之display属性之inline-block布局实现详解 在网页布局的过程中,有时候我们需要把元素放在一行中并且保持元素间的间距,而且元素的大小不确定,这个时候使用inline-block布局可以很好的解决这个问题。 1. inline-block的基本概念 inline-block是指内联块级元素,这个属性可以让元素以块级元素的方式显示,同时保持元…

    css 2023年6月9日
    00
  • 谈谈CSS的边距合并之我的理解

    我将为你提供一份关于“谈谈 CSS 的边距合并”的完整攻略,希望能够帮助你更好地理解这一概念。 什么是 CSS 边距合并? 在 CSS 中,相邻的块级元素会发生边距的合并(也称为折叠)。边距合并的规则非常简单,如果两个相邻元素的 margin(或者 padding,其中至少有一个是 margin)有冲突,那么会发生合并,从而造成一个元素的边距被另一个元素吸收…

    css 2023年6月9日
    00
  • 简明网页设计理念 颜色搭配

    来讲解一下“简明网页设计理念 颜色搭配”的完整攻略。以下是建议步骤: 1. 确定主题和目标受众 在进行网页设计时,首先需要明确的是你想让网页传达什么样的信息给受众。这可以通过几个步骤来进行: 确定网站主题:想让网站传达什么样的信息和品牌形象。 确定目标受众:年龄、性别、职业、地域或其它因素。 在明确这些因素后,可以开始着手考虑如何进行颜色的搭配。 2. 考虑…

    css 2023年6月9日
    00
  • CSS3美化表单控件全集

    请听我讲解“CSS3美化表单控件全集”的完整攻略: 1. 什么是CSS3美化表单控件? 在网页设计中,表单控件是一个不可或缺的元素。通常,现代网页设计师都希望让表单控件更美观,通常使用CSS技术使其更完美。CSS3美化表单控件就是在现有表单控件的基础上,使用CSS3实现更高效、更美观、更易于用户界面设计。 2. 怎样实现CSS3美化表单控件? CSS3美化表…

    css 2023年6月10日
    00
  • 详解CSS 文字装饰 text-decoration & text-emphasis

    详解CSS 文字装饰 text-decoration & text-emphasis text-decoration text-decoration 属性是用来为文本添加各种文字装饰的。它可以接受以下值: none:默认值,不添加任何装饰。 underline:在文本下方添加一条线。 overline:在文本上方添加一条线。 line-through…

    css 2023年6月9日
    00
  • 解决html-jquery/js引用外部图片时遇到看不了或出现403的问题

    HTML页面中使用jQuery或JavaScript引用外部图片时可能会出现无法加载图片或403错误的问题,这可能是由于以下原因所导致的: 图片路径不正确 图片链接被防盗链所限制 以下是解决此类问题的攻略: 确认图片路径是否正确 要使用外部图片,必须确定图片的路径是正确的。完整的图片路径应包括图片名称和扩展名,如“http://www.example.com…

    css 2023年6月9日
    00
  • 如何使用python docx模块操作word文档

    使用Python的docx模块可以方便地操作Word文档,下面将详细讲解操作步骤: 安装docx模块 首先需要安装docx模块,可以使用pip命令进行安装,命令如下: pip install python-docx 打开Word文档 使用docx模块可以通过以下步骤打开Word文档: import docx # 打开Word文档 doc = docx.Doc…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部