在valid后,没有办法使input中的内容与span内容一起左移,加text-indent无用

在valid后,没有办法使input中的内容与span内容一起左移,加text-indent无用

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8" />

<title></title>

<style type="text/css">

    .container{

     position: relative;

     text-align: center;

     margin-top:  50px;

     width: 380px;

    }

    input{display: inline-block;

        width: 190px;

        border:1px solid #999;

        height: 30px;

        outline: 0;

        line-height: 30px;

        text-indent: 36px;

        transition:all .3s;

        border-radius: 4px;

    }

    div>span{

     display: inline-block;

     position:absolute;

     left: 3px; 

     height: 30px;

     line-height: 30px;

     transition:all .3s;

    }

/*鼠标移上去或者获得焦点、在此处填写代码*/

input:required:focus,input:required:hover{

text-indent:2px;

       

}

/*符合验证的label、在此处填写代码*/

input:valid~label:after{

content:"你输入邮箱正确!";

}

    input:valid{

     background-color:#F0E68C;

        border:1px solid #00FF00;

        text-indent:10px;

      }

      input:valid + span, input:valid+span{


      transform: translateX(80%);


   } 

    /*不符合验证的label、在此处填写代码*/

input:invalid~label:after{

content:"你邮箱错误!";}

input:invalid{

            border:1px solid red;

        }

</style>

</head>

<body>

    <div class="container">

     <input type="email" name="youxiang" required placeholder="输入邮箱" autocomplete="autocomplete">

     <span>邮箱</span>

     <label></label>

    </div>

</body>

</html>

这里如果不想让一开始刷新页面,就变成没有输入邮箱进入invalid的样式,是不是要在input上设置oninvalid和onvalid模式,有没有办法不绑定onvalid和oninvalid事件,使用valid和invalid一开始刷新不会进入invalid的样式

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

是同学修改的有问题,把之前的修改乱的,如下:

http://img1.sycdn.imooc.com//climg/5c3c573d00015ae007120944.jpg

自己再测试下。

好帮手慕星星 2019-01-14 16:44:46

你好,代码中的问题:

1、可以将外层盒子container的宽度和文本居中去掉,添加一个左边距。如下:

http://img1.sycdn.imooc.com//climg/5c3c4b300001566c04960210.jpg

2、当鼠标移入input框时,邮箱需要向左移动,如下:

http://img1.sycdn.imooc.com//climg/5c3c4b5d0001832d05180152.jpg

3、将检测内容有效时,新添加的文本缩进去掉:

http://img1.sycdn.imooc.com//climg/5c3c4b800001b11e05400211.jpg

会恢复到默认状态的样式。

4、如果想要一开始不检测无效状态,显示邮箱错误。需要将invalid去掉,改成:

http://img1.sycdn.imooc.com//climg/5c3c4be300017ef304920207.jpg

但是这样无法显示无效时的状态。

祝学习愉快!

  • 提问者 慕用0863198 #1
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title></title> <style type="text/css"> .container{ position: relative; margin-left: 50px; margin-top: 50px; } input{display: inline-block; width: 190px; border:1px solid #999; height: 30px; outline: 0; line-height: 30px; text-indent: 2px; transition:all .3s; border-radius: 4px; } div>span{ display: inline-block; position:absolute; left: 3px; height: 30px; line-height: 30px; transition:all .3s; } /*鼠标移上去或者获得焦点、在此处填写代码*/ input:required:focus,input:required:hover{ transform: translateX(-120%); } /*符合验证的label、在此处填写代码*/ input:valid~label:after{ content:"你输入邮箱正确!"; } input:valid{ background-color:#F0E68C; border:1px solid #00FF00; } input:valid + span, input:valid+span{ } /*不符合验证的label、在此处填写代码*/ input:invalid~label:after{ content:"你邮箱错误!";} input:invalid{ border:1px solid red; } </style> </head> <body> <div class="container"> <input type="email" name="youxiang" required placeholder="输入邮箱" autocomplete="autocomplete"> <span>邮箱</span> <label></label> </div> </body> </html>老师,按照你说的改完,好像变得奇怪起来了
    2019-01-14 17:24:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
响应式开发与常用框架 2018
  • 参与学习           人
  • 提交作业       2198    份
  • 解答问题       5012    个

如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师