老师有个小问题

来源:4-10 编程练习

vivi_li

2020-06-10 11:21:50

这样写好像只有两个状态,如果要控制初始时的状态设置为必填项  是不是需要使用js控制了?

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       .container {
           height: 50px;
           position: relative;
           font-size: 14px;

       }

       .container input {
           margin-left: 40px;
           height: 25px;
           line-height: 25px;
           text-indent: 40px;
           border: 1px solid red;
           transition: all .3s;
           outline: none;
       }

       .container span {
           position: absolute;
           left: 50px;
           height: 25px;
           line-height: 25px;
           top: 2px;
           transition: all .3s;
       }

       input:required ~ label::after {
           content: "邮箱必填项";
           position: absolute;
           width: 100px;
           left: 230px;
           top: 3px;
       }

       .container input:hover,
       .container input:focus {
           border: 1px solid red;
           text-indent: 5px;
       }

       .container input:hover + span,
       .container input:focus + span {
           left: 10px;
       }

       .container input:valid ~ label::after {
           content: "邮箱格式正确";
       }

       .container input:valid {
           border-color: green;
       }
       .container input:invalid {
           border-color: red;
       }
       .container input:invalid ~ label::after {
           content: "邮箱格式不正确";
       }
   </style>

</head>
<body>
<div class="container">
   <input type="email" id="urlMy" required placeholder="请输入邮箱"><span>邮箱</span><label for="urlMy"></label>
</div>
</body>
</html>

写回答

3回答

好帮手慕久久

2020-06-10

同学你好,问题解答如下:

input:required ~ label::after {}的代码没生效,是因为被.container input:invalid ~ label::after{}的样式覆盖了,如下:

http://img.mukewang.com/climg/5ee05880090532fa14280286.jpg

由于二者控制的是同一个元素的样式,而且该元素的状态没法使用css选择器区分,所以建议使用js实现。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

0

vivi_li

提问者

2020-06-10

       input:required ~ label::after {
           content: "邮箱必填项";
           position: absolute;
           width: 100px;
           left: 230px;
           top: 3px;
       }

意思是这一句样式没有生效

0

vivi_li

提问者

2020-06-10

       input:required ~ label::after {
           content: "邮箱必填项";
           position: absolute;
           width: 100px;
           left: 230px;
           top: 3px;
       }

意思是这一句样式没有生效

0

0 学习 · 6815 问题

查看课程