我正在尝试在输入我的input标签后使一个按钮出现。目前,我将按钮设置为display: none,当我专注于输入字段时,它应该更改我的display: inline-block,使其重新出现。我做错了什么?
html
<h1 className='title-caption'>Get started today!</h1>
<div className='email-newsletter-container'>
<p className='sign-up-caption'>
Sign up for our newletter for more information
</p>
<input
className='email-input'
placeholder='Enter email address'
></input>
<br />
<button className='submit-button' id='submit-button'>
Submit
</button>
</div>css
.email-input {
margin-top: 20px;
height: 40px;
width: 400px;
text-align: center;
border-radius: 5px;
border: none;
outline: none;
position: relative;
&:focus + .submit-button {
display: inline-block;
}
}
.email-input:focus + .submit-button {
display: inline-block;
}
.submit-button {
position: relative;
border-radius: 20px;
width: 90px;
margin-top: 15px;
padding: 10px 10px 10px 10px;
font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande',
'Lucida Sans', Arial, sans-serif;
background-color: transparent;
border: 2px solid white;
color: white;
display: none;
}发布于 2020-09-13 08:47:23
button {
display: none;
}
input:focus ~ button {
display: inline-block;
}<input type="text">
<div></div>
<button>Button</button>
使用~选择器而不是+选择器。这里是一个小小的示范。
+选择器将只选择放置在后面的兄弟姐妹,而~选择器将选择放置在后面的任何兄弟姐妹,然后使用类选择器我们可以过滤这些选择器。
发布于 2020-09-13 08:47:35
如果你尝试像这样的演示
CSS
.email-input {
margin-top: 20px;
height: 40px;
width: 400px;
text-align: center;
border-radius: 5px;
border: none;
outline: none;
position: relative;
&:focus + .submit-button {
display: inline-block;
}
}
.email-input:focus + .submit-button {
display: inline-block;
}
.submit-button {
position: relative;
border-radius: 20px;
width: 90px;
margin-top: 15px;
padding: 10px 10px 10px 10px;
font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande',
'Lucida Sans', Arial, sans-serif;
background-color: transparent;
border: 2px solid white;
color: white;
display: none;
}HTML
<script>
function myFunction() {
var x = document.getElementById("myDIV");
if (x.style.display === "block") {
x.style.display = "none";
} else {
x.style.display = "block";
}
}
</script>
<h1 className='title-caption'>Get started today!</h1>
<div className='email-newsletter-container'>
<p className='sign-up-caption'>
Sign up for our newletter for more information
</p>
<input
className='email-input'
placeholder='Enter email address'
onfocus="myFunction()"
></input>
<br />
<button style="display:none" className='submit' id="myDIV">
Submit
</button>
</div>发布于 2020-09-13 08:42:03
<input />标签是自关闭的。它在语法上是不正确的。&:focus + .submit-button { display: inline-block; } --这意味着输入后跟随..submit buton,但是在html中,输入后有<br/>标记,所以这是行不通的。https://stackoverflow.com/questions/63868719
复制相似问题