CSS 选择器的动画不工作
Animation with CSS selector not working
我的HTML:
<div id="composite-field">
<input type='email' name='email' class='input animate' value='' placeholder='E-mail'>
<input type='submit' id='submit' class='submit animate' value='>'>
</div>
我的CSS:
.animate { -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; }
html body div.body-container form div#composite-field {
position: relative; float: left;
width: 80%; height: 100px; margin: 0 10%; padding: 0;
}
html body div.body-container form div#composite-field input[type=email] {
float: left;
width: 90%; height: 100px; margin: 0; padding: 0 6% 0 4%;
border: 0; outline: none;
-webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;
background-color: #eab94e; color: rgba(26, 60, 88, 0.9);
z-index: 10;
}
html body div.body-container form div#composite-field input[type=submit] {
position: absolute; float: none; clear: both; top: 0; right: 5%;
min-width: 80px; width: auto; height: 100px; margin: 0; padding: 0;
border: 0; border-radius: 0; outline: none; -webkit-appearance: none;
background-color: #2e4856; color: #eab94e;
z-index: 11;
}
html body div.body-container form div#composite-field input[type=email],
html body div.body-container form div#composite-field input[type=submit] { font-family: "Fjalla One", sans-serif; font-weight: 400; font-size: 40px; letter-spacing: normal; }
html body div.body-container form div#composite-field input[type=email]:focus {
box-shadow: inset 0 0 0 5px rgba(26, 60, 88, 0.9);
}
html body div.body-container form div#composite-field input[type=submit]:hover { opacity: 0.5; }
现在问题来了,20% 的宽度没有得到动画。它以前有效。而且我似乎无法弄清楚为什么不是现在...
html body div.body-container form div#composite-field input[type=email]:focus ~ input[type=submit] { width: 20%; }
我的 css 有什么地方出错了吗?
谢谢。
问题是您的提交按钮的宽度为 "auto",正在过渡到 80%(宽度仅使用 min-width 设置)。如果您在其上设置宽度,过渡将起作用。这是 fiddle:
http://jsfiddle.net/znm63rky/15/
html body div.body-container form div#composite-field input[type=submit] {
width: 80px;
}
我的HTML:
<div id="composite-field">
<input type='email' name='email' class='input animate' value='' placeholder='E-mail'>
<input type='submit' id='submit' class='submit animate' value='>'>
</div>
我的CSS:
.animate { -webkit-transition: all 0.2s ease-in-out; -moz-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; }
html body div.body-container form div#composite-field {
position: relative; float: left;
width: 80%; height: 100px; margin: 0 10%; padding: 0;
}
html body div.body-container form div#composite-field input[type=email] {
float: left;
width: 90%; height: 100px; margin: 0; padding: 0 6% 0 4%;
border: 0; outline: none;
-webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;
background-color: #eab94e; color: rgba(26, 60, 88, 0.9);
z-index: 10;
}
html body div.body-container form div#composite-field input[type=submit] {
position: absolute; float: none; clear: both; top: 0; right: 5%;
min-width: 80px; width: auto; height: 100px; margin: 0; padding: 0;
border: 0; border-radius: 0; outline: none; -webkit-appearance: none;
background-color: #2e4856; color: #eab94e;
z-index: 11;
}
html body div.body-container form div#composite-field input[type=email],
html body div.body-container form div#composite-field input[type=submit] { font-family: "Fjalla One", sans-serif; font-weight: 400; font-size: 40px; letter-spacing: normal; }
html body div.body-container form div#composite-field input[type=email]:focus {
box-shadow: inset 0 0 0 5px rgba(26, 60, 88, 0.9);
}
html body div.body-container form div#composite-field input[type=submit]:hover { opacity: 0.5; }
现在问题来了,20% 的宽度没有得到动画。它以前有效。而且我似乎无法弄清楚为什么不是现在...
html body div.body-container form div#composite-field input[type=email]:focus ~ input[type=submit] { width: 20%; }
我的 css 有什么地方出错了吗?
谢谢。
问题是您的提交按钮的宽度为 "auto",正在过渡到 80%(宽度仅使用 min-width 设置)。如果您在其上设置宽度,过渡将起作用。这是 fiddle: http://jsfiddle.net/znm63rky/15/
html body div.body-container form div#composite-field input[type=submit] {
width: 80px;
}