zoukankan      html  css  js  c++  java
  • input 和 button 的 border-box 模型和 IE8 错位

    用 input 和 button 时出现了几个奇怪的现象,先放几个 input 和 button
    image

    CSS:

    * {
        margin:0;
        padding:0;
    }
    input,button {
        width: 100px;
        height: 50px;     
        text-align: center;       
    }

    HTML:

    <form action="">
        <input type="text" value="input.text 1" />
        <input type="text" value="input.text 2" />    
        <input type="button" value="input.button 1" >    
        <button type="button">button 1</button>
    </form>

    我们可以得出这么几个结论:


    1、input 和 button 作为内联块状元素,有默认的外边距,当然这个可以通过 margin 负值来解决,详细解决方案看这里;


    2、input.text 和 input.button 或 button 的盒子模型显然不一样,input.text 是 content-box,标准盒模型;而 input.button 或 button 是 IE 的盒模型:border-box ,这是重点


    除此之外,还有个槽点,看看 IE8

    image

    这种情况解决方法,两步走:

    1、vertical-align:middle

    image

    2、line-height 设置为 height

    ie8-v-l

    3、单独设置 input.button 和 button 的高度

    ie8-v-l-s

    修改后的 CSS 如下:

    * {
        margin:0;
        padding:0;
    }
    input,button {
        width: 100px;
        height: 50px;     
        text-align: center;   
        vertical-align: middle;   
        line-height: 50px;          
    }
    input[type='button'],button {
        width: 104px;
        height: 54px;
        line-height: 54px;
    }

    神奇~所以以后表单元素可以默认都加上,反正也不影响,还兼容IE8,原理没有细究.

    行文仓促,如有错误,欢迎批评指正~~~

  • 相关阅读:
    JavaScript中get和set访问器的实现
    Vue render 函数和JSX语法的使用
    vue项目将第三方包以cdn的方式引入页面不显示
    今天帮忙HMF这位ui大神(傻)解决的小问题。
    SET
    webpack 折腾
    sass折腾
    gulp折腾
    css3
    js递归函数
  • 原文地址:https://www.cnblogs.com/xianshenglu/p/8033826.html
Copyright © 2011-2022 走看看