老师有个小问题
来源: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回答
同学你好,问题解答如下:
input:required ~ label::after {}的代码没生效,是因为被.container input:invalid ~ label::after{}的样式覆盖了,如下:
由于二者控制的是同一个元素的样式,而且该元素的状态没法使用css选择器区分,所以建议使用js实现。
如果我的回答帮到了你,欢迎采纳,祝学习愉快!
vivi_li
提问者
2020-06-10
input:required ~ label::after {
content: "邮箱必填项";
position: absolute;
width: 100px;
left: 230px;
top: 3px;
}
意思是这一句样式没有生效
vivi_li
提问者
2020-06-10
input:required ~ label::after {
content: "邮箱必填项";
position: absolute;
width: 100px;
left: 230px;
top: 3px;
}
意思是这一句样式没有生效
相似问题