如果您不介意 jQuery 的帮助,那么下面的代码可以解决您的问题。
html代码——
<div id="form" class="loading">
<form action="">
<div id="container">
<input type="text" name="input" id="input" value="">
<input type="submit" name="submit" value="submit" id="s">
</div>
</form>
</div>
css和js-
<script>
jQuery(document).ready(function($){
var containerWidth = $("#form #container").outerWidth();
var searchBoxWidth = jQuery("#form #s").outerWidth();
var adjustedWidth = containerWidth - searchBoxWidth - 30 // this is a value i've chosen to separate the button from the input field and the right edge of the wrapper
jQuery("#form #input").width(adjustedWidth);
jQuery("#form").removeClass('loading');
});
</script>
<style>
.loading form{visibility:hidden;background:url(img/loader.gif) no-repeat 50% 50%}
/*url should follow your own link to the gif you want to use*/
#form{width:700px;margin:200px auto;}
#form #container{border-radius: 30px;height: 60px;background: #ccc;border: 0;padding:0}
#form #input{height: 40px;margin: 10px 0 0 10px;border-radius: 30px;border: 0;padding:0;}
#form #s{padding: 13px 28px;border: 0;border-radius: 30px;text-transform: uppercase;}
</style>
编辑:
- 我在主包装器中添加了一个“加载”类来标识加载阶段。最初,我不希望任何访问者看到包装器内的内容,因此我设置了规则
visibility:hidden
,以便内容将保留在该位置并且不显示它们,而是使用类的background
属性显示加载 gif loader
。
- 当设置输入框的宽度时,我
loading
将从包装器中删除该类,以便内容现在可见。