输入框input和旁边按钮对齐的解决方案

问题:

最近在写一个电商网站的静态页面练手,遇到了一个特别奇怪的现象,如下图:

输入框和旁边的搜索框没法对齐,于是乎百度解决方案,各种说法都有,但是没有一个是自己认为切实可行的或者是说得比较简单易懂的。

或许是我理解起来比较慢吧,呵呵。

下面直接进入正题之解决方案:

【本解决方案借鉴了百度首页搜索框的写法】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>调试</title>
    <style>
        span{float: left;display: inline-block;height: 40px;}
        input{border: 0 none;}
        .box{width: 300px;height: 300px;background-color: #808000;margin: 33px auto;padding: 30px ;}
        .span1{width: 150px;position: relative;}
        .input{height: 20px;width: 140px;padding: 10px 5px;position: absolute;top: 0;}
        .button{height: 40px;font: normal 18px/40px "微软雅黑";}
    </style>
</head>
<body>
    <div class="box">
        <span class="span1">
            <input type="text" class="input">
        </span>
        <span class="span2">
            <input type="button" value="搜索"  class="button">
        </span>
    </div>
</body>
</html>

最后输出的结果:

IE7

IE9和IE8

其他现代浏览器:

均可以达到较好的显示效果。

【下面是代码分析】

本方案的解决思路是,在input标签外,套一个spaan标签,作为input标签的外壳,

即这种效果,此时的输入框和搜索按钮完全被包裹了在span标签里面,这时候给span一个左浮动;那么不管在文档流里面他们两个是怎样的相对关系,他们都会直直的怼到一起【因为这两个span是一样高的】,这样即可以初步达到对齐的效果了。

然,由于神奇的IE7的存在,这种写法还不够。

此时在IE7中的显示效果是这样的,左边的输入框还是有一个极小的下沉。打开调试工具发现,布局下显示:

竟然在margin的外侧还有一个offset属性,天啦噜;以前没接触过这个属性有木有,此时发挥神奇的想象力,将input的父级元素span1的position属性强行设置为relative,然后将input的position属性设置为absolute,并将input的top值设置为0,最终成功的解决了IE7下的显示问题。~~

我想,类似与这样的兼容性问题以后还会遇到很多很多,只有耐着性子去分析,其实还是可以解决的,其实兼容性的bug说白了也不算什么bug,而是不同浏览器在解析上的不同而已,多使用调试工具,看看到底是什么属性出现了问题,对应的去解决,就可以了。哈哈,解决问题的思路还是比较重要的。

时间: 2024-08-06 02:45:29

输入框input和旁边按钮对齐的解决方案的相关文章

input文字垂直居中和按钮对齐问题,兼容IE8

1.盒子模型问题:请CSS重置 2.按钮不对齐:请浮动或者vertical-align:middle;然后计算宽高,使其对齐 : 3.IE8文本不居中:line-height属性     注意:IE8不支持font写法(或者某个样式不支持) IE浏览器测试到IE8,IE5.6.7慎用. 问题原因:盒子模型 1.盒子模型: 在页面放2个input,一个text文本框,一个button按钮(设置宽高,无任何其他样式) input[type='text']{width:400px;height:45p

html5默认input内容清除“&#215;”按钮去除办法

input框尺寸不太好控制(padding无视):FireFox浏览器貌似任何类型的输入框都无动于衷:IE10+浏览器貌似任何输入框都会出现清除按钮,但是长得略微粗糙了点,设计师同学接受不了. 貌似不和谐了,咋办?传授个新技能,借助HTML以及CSS,来模拟清除按钮可动态呈现的搜索框. 如下CSS: .input { padding: 5px; margin: 0; border: 1px solid #beceeb; } .clear { display: none; position: ab

html移动应用 input 标签 清除按钮功能如何实现(不触发键盘)

有个需求是:输入框有文本的时候就显示清除按钮,没有文本则隐藏清除按钮,点击清除按钮不能影响键盘弹出的状态. 网上有css实现自动显示和隐藏清除按钮的方案,但是考虑到兼容性,我们还是使用js来实现. css body{             background: #eee;         }         form{             margin: 30px 0;             position: relative;         }         #keyword{

取消chrome浏览器下input和textarea的默认样式;html5默认input内容清除“&#215;”按钮去除办法

取消chrome浏览器下input和textarea的默认样式: outline:none;/*清空chrome中input的外边框*/ html5默认input内容清除“×”按钮去除办法: input::-ms-clear { display: none; }

HTML中使用&lt;input&gt;添加的按钮打开一个链接

在HTML中,<form>表单的<input type="button">可以添加一个按钮.如果想让该按钮实现<a> 的超链接功能,需要如下实现: 在新的窗口中打开页面(target = blank):<input type="button" onclick="window.open('new.jsp')"> 在当前窗口中打开页面(target = self)  :  <input type=

input与lable水平对齐

CSSinput,label { vertical-align:middle;}  html 格式 <label><input/></label> <label><input/></label> input与lable水平对齐

原生HTML5 input type=file按钮UI自定义

原生<input type="file" name="file" />长得太丑 提升一下颜值 实现方案一.设置input[type=file]透明度为0,使用绝对定位遮罩在自定义的按钮标签层的之上. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>原生HTML5 input typ

苹果手机上input的button按钮颜色异常

在手机端上写了一个页面,按钮的地方是用input标签button按钮,给的是绿色的背景颜色,在安卓手机上显示正常,在苹果手机上显示不正常,如下图 解决办法: css加上下面这一行代码就可以了,input[type=button], input[type=submit], input[type=file], button { cursor: pointer; -webkit-appearance: none; } 希望能帮到你~

bootstrap-表单控件——输入框input

1.运行效果如图所示 2.实现代码如下 <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <title>表单控件--输入框input</title>     <!-- 最新