请检查这个fiddle my fiddle (这里的代码只是一个原始代码,我的实际代码有一些引导类)
我在这里试图实现的是,每当用户单击输入框时,字体系列都会发生变化。
但不幸的是,只有当标签在输入之后时,它才起作用。我在许多其他的回答中都提到,没有css方法可以访问前面的元素。那么,对于下面的前两个字段,是否可以更改标签的字体系列呢
<html>
<head>
<style>
input:focus+label {
font-family: 'Roboto Medium', sans-serif;
font-size: 16px;
color: #000;
font-weight: 500;
}
</style>
</head>
<body>
<form>
<div>
<label for="name">username</label>
<input type="text" name="name">
</div>
<div>
<label for="email">email</label>
<input type="email" name="email">
</div>
<br><br>
<input type="text" name="color">
<label for="color">your fav color</label>
</form>
</body>
</html>
发布于 2017-06-01 19:04:19
最简单的方法是在标记中交换它们,然后浮动label的左边。
这样,同级选择器+就可以工作了,因为input在标记中位于label之前
.swap label {
float: left;
}
input:focus+label {
font-family: 'Roboto Medium', sans-serif;
font-size: 16px;
color: #000;
font-weight: 500;
}<form>
<div class="swap">
<input type="text" name="name">
<label for="name">username</label>
</div>
<div class="swap">
<input type="email" name="email">
<label for="email">email</label>
</div>
<br>
<br>
<input type="text" name="color">
<label for="color">your fav color</label>
</form>
您也可以使用绝对位置,填充,然后将label放在上面..
.swap {
position: relative;
padding-top: 20px;
}
.swap + .swap {
margin-top: 5px;
}
.swap label {
position: absolute;
left: 0;
top: 0;
}
input:focus+label {
font-family: 'Roboto Medium', sans-serif;
font-size: 16px;
color: #000;
font-weight: 500;
}<form>
<div class="swap">
<input type="text" name="name">
<label for="name">username</label>
</div>
<div class="swap">
<input type="email" name="email">
<label for="email">email</label>
</div>
<br>
<br>
<input type="text" name="color">
<label for="color">your fav color</label>
</form>
..or left
.swap {
position: relative;
padding-left: 80px;
}
.swap + .swap {
margin-top: 5px;
}
.swap label {
position: absolute;
left: 0;
}
input:focus+label {
font-family: 'Roboto Medium', sans-serif;
font-size: 16px;
color: #000;
font-weight: 500;
}<form>
<div class="swap">
<input type="text" name="name">
<label for="name">username</label>
</div>
<div class="swap">
<input type="email" name="email">
<label for="email">email</label>
</div>
<br>
<br>
<input type="text" name="color">
<label for="color">your fav color</label>
</form>
发布于 2017-06-01 17:50:05
不幸的是,css中没有前置选择器。如果您的目标浏览器支持flexbox,就可以做到这一点。
HTML
<form>
<div class="some-container">
<input type="text" name="name">
<label for="name">username</label>
</div>
<div class="some-container">
<input type="email" name="email">
<label for="email">email</label>
</div>
<br><br>
<input type="text" name="color">
<label for="color">your fav color</label>
</form>CSS
.some-container {
display: flex;
align-items:center
}
.some-container label {
order: 1;
margin-right:10px;
}
.some-container input {
order: 2;
width:200px;
}
.some-container input:focus + label {
font-family: 'Roboto Medium', sans-serif;
font-size: 16px;
color: #000;
font-weight: 500;
}发布于 2017-06-01 18:03:03
在CSS中不能将焦点放在上一个元素上。可以使用JavaScript处理。
https://stackoverflow.com/questions/44303768
复制相似问题