缩放浏览器时搜素框子盒子和父盒子之间的缝隙白线问题

四种不同属性设定的效果和兼容难易度


某比例缩放出现缝隙


单纯左或右浮动,浏览器缩放后元素之间贴合地方出现白边


单纯左或右浮动,浏览器缩放后元素之间贴合地方出现白边

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>搜索框</title>

    <link rel="stylesheet" href="../../base.css">

</head>

<body>

    <style>

        .search1 {

            margin: 60px auto;

            width: 500px;

            height: 40px;

            /* 父盒子设定边框作为搜索框 ,让里面两个子盒子浮动摆放*/

            border: 2px solid #d2a95e;

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* background-color: #2207b6; */

        }

        .search1 input {

            /* top: 0; */

            /* left: 0; */

            /* 如果单纯只用左(右)浮动、定位摆放子盒子,缩放的时候,子盒子之间、子盒子和父盒子之间,只要元素之间有尺寸有衔接,在某个缩放比例都会出现缝隙 ,而且浮动摆放有的缩放比例还会掉下来,定位因为可以层叠则不会掉下来*/

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* top: 50%; */

            /* transform: translateY(-50%); */

            /* 父元素的边框限制减少2px */

            width: 398px;

            height: 36px;

            /* 用父盒子设定搜索边框,子盒子就不要边框 */

            border: 0;

            /* 如果给input设定了边框,那么缩放后input和button之间也会看到白线 */

            /* border: 2px solid #d2a95e; */

            padding-left: 10px;

        }

        .search1 button {

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象 */

            /* top: 0; */

            /* right: 0; */

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* top: 50%; */

            /* transform: translateY(-50%); */

            /* 父元素的边框限制减少2px */

            width: 98px;

            height: 36px;

            color: rgb(219, 33, 33);

            font-size: 12px;

            background-color: #d2a95e;

            border: 0;

        }

    </style>

    <div class="search1 por">

        <input type="search" name="" id="" placeholder="父盒子设边框,子盒子浮动去边框" class="fl">

        <!-- 用浮动,如果缩放页面,按钮会和父盒子边框产生缝隙 -->

        <button class="fl">要计算父盒子边框内容宽、高,子盒子总宽、高要刚合适</button>

    </div>

    <style>

        .search2 {

            margin: 60px auto;

            width: 500px;

            height: 40px;

            /* 父盒子设定边框作为搜索框 ,让里面两个子盒子浮动摆放*/

            /* border: 2px solid #d2a95e; */

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            background-color: #2207b6;

        }

        .search2 input {

            /* top: 0; */

            /* left: 0; */

            /* 如果单纯只用左(右)浮动、定位摆放子盒子,缩放的时候,子盒子之间、子盒子和父盒子之间,只要元素之间有尺寸有衔接,在某个缩放比例都会出现缝隙 ,而且浮动摆放有的缩放比例还会掉下来,定位因为可以层叠则不会掉下来*/

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            top: 50%;

            transform: translateY(-50%);

            /* 左边要定位出边框的距离 */

            left: 2px;

            width: 398px;

            height: 36px;

            /* 用父盒子设定搜索边框,子盒子就不要边框 */

            /* border: 0; */

            /* 如果给input设定了边框,那么缩放后input和button之间也会看到白线 */

            /* border: 2px solid #d2a95e; */

            padding-left: 10px;

        }

        .search2 button {

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象 */

            /* top: 0; */

            right: 0;

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            top: 50%;

            transform: translateY(-50%);

            /* 没了父元素的边框限制,子盒子把边框的宽度加在自己身上 */

            width: 100px;

            height: 40px;

            color: rgb(192, 18, 18);

            font-size: 12px;

            background-color: #d2a95e;

            border: 0;

        }

    </style>

    <div class="search2 por">

        <input type="search" name="" id="" placeholder="父盒子设背景当边框,子盒子定位去边框" class="poa">

        <button class="poa">要计算父盒子边框空余宽、高,子盒子总宽度能多不能少,子盒子高度能少不能多</button>

    </div>

    <style>

        .search3 {

            margin: 60px auto;

            width: 500px;

            height: 40px;

            /* 父盒子设定边框作为搜索框 ,让里面两个子盒子浮动摆放*/

            /* border: 2px solid #d2a95e; */

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            /* background-color: #2207b6; */

        }

        .search3 input {

            /* top: 0; */

            /* left: 0; */

            /* 如果单纯只用左(右)浮动、定位摆放子盒子,缩放的时候,子盒子之间、子盒子和父盒子之间,只要元素之间有尺寸有衔接,在某个缩放比例都会出现缝隙 ,而且浮动摆放有的缩放比例还会掉下来,定位因为可以层叠则不会掉下来 */

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            /* top: 50%; */

            /* transform: translateY(-50%); */

            /* 左边要定位出边框的距离 */

            /* left: 2px; */

            width: 400px;

            height: 40px;

            /* 用父盒子设定搜索边框,子盒子就不要边框 */

            /* border: 0; */

            /* 如果给input设定了边框,那么缩放后input和button之间也会看到白线 */

            /* 不要父元素背景,直接给子盒子设定边框、浮动 */

            border: 2px solid #d2a95e;

            padding-left: 10px;

        }

        .search3 button {

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象 */

            /* top: 0; */

            /* right: 0; */

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            /* top: 50%; */

            /* transform: translateY(-50%); */

            /* 没了父元素的边框限制,子盒子把边框的宽度加在自己身上 */

            width: 100px;

            height: 40px;

            color: rgb(226, 21, 21);

            font-size: 12px;

            background-color: #d2a95e;

            border: 0;

        }

    </style>

    <div class="search3 por">

        <input type="search" name="" id="" placeholder="父盒子透明,子盒子浮动设边框" class="fl">

        <button class="fl">子盒子总宽度能少不能多,高度可以误差</button>

    </div>

    <style>

        .search4 {

            margin: 60px auto;

            width: 500px;

            height: 40px;

            /* 父盒子设定边框作为搜索框 ,让里面两个子盒子浮动摆放*/

            /* border: 2px solid #d2a95e; */

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            /* background-color: #2207b6; */

        }

        .search4 input {

            top: 0;

            left: 0;

            /* 如果单纯只用左(右)浮动、定位摆放子盒子,缩放的时候,子盒子之间、子盒子和父盒子之间,只要元素之间有尺寸有衔接,在某个缩放比例都会出现缝隙 ,而且浮动摆放有的缩放比例还会掉下来,定位因为可以层叠则不会掉下来 */

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象,设置不同颜色缩放可以看到区别 */

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            /* top: 50%; */

            /* transform: translateY(-50%); */

            /* 左边要定位出边框的距离 */

            /* left: 2px; */

            width: 400px;

            height: 40px;

            /* 用父盒子设定搜索边框,子盒子就不要边框 */

            /* border: 0; */

            /* 如果给input设定了边框,那么缩放后input和button之间也会看到白线 */

            /* 不要父元素背景,直接给子盒子设定边框、浮动 */

            border: 2px solid #d2a95e;

            padding-left: 10px;

        }

        .search4 button {

            /* 给父元素添加同边框一样的背景色填充,就可以消除缩放出现白边的现象 */

            top: 0;

            right: 0;

            /* 用translate绝对居中后,缩放也会出现缝隙,且缝隙被上下均分了 */

            /* 给父元素不设置边框,只设置背景色,利用背景色充当边框,让子盒子上下绝对居中 */

            /* top: 50%; */

            /* transform: translateY(-50%); */

            /* 没了父元素的边框限制,子盒子把边框的宽度加在自己身上 */

            width: 100px;

            height: 40px;

            color: rgb(11, 93, 216);

            font-size: 12px;

            background-color: #d2a95e;

            border: 0;

        }

    </style>

    <div class="search4 por">

        <input type="search" name="" id="" placeholder="父盒子透明,子盒子定位设边框" class="poa">

        <button class="poa">子盒子总宽度能多不能少,高度可以误差</button>

    </div>

</body>

</html>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容