关于CSS盒子宽度设置的问题,如何解决?

是这样的,我定义了一个搜索框search,左侧是input输入框,右侧是搜索按钮button,然后搜索框宽度和input输入框宽度都是按照网页大小测量做的,我的思路就是搜索框的宽度减去输入款的宽度就是搜索按钮的宽度,但是发现用这个宽度就有一个问题,就是太大了,装不下。我看视频讲解的是去测量了网页的真实宽度,然后用这个宽度作为搜索框的宽度,发现这个宽度与盒子是刚好的,我就觉得很奇怪,为什么啊?有谁知道的可以解答一下我的疑惑吗,感谢,好人一生平安!

 <!-- 3.搜索框部分 -->
        <div class="search">
            <input type="text" value="输入关键词">
            <button></button>
        </div>
/* 3.搜索框部分 */
.search {
    float: left;
    width: 412px;
    height: 42px;
    margin-left: 60px;
}

.search input {
    display: block;
    float: left;
    width: 342px;
    height: 40px;
    font-size: 14px;
    border: 1px solid #00a4ff;
    border-right: 0;
    color: #bfbfbf;
    /* 注意:因为.search设置了宽度,加了padding会撑大盒子
    所以width要减去18 */
    padding-left: 18px;
}

/* 行内块元素之间默认是有缝隙的,加了浮动不会有缝隙 */
.search button {
    float: left;
    background-image: url(images/btn.png);
    /* 注意:此处没有用search-input的宽度 */
    width: 50px;
    height: 42px;
    /* 注意:按钮有默认边框,要去掉 */
    border: 0px;
}

里面的东西用box-sizing: border-box;会简单

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    问题的根本原因是按钮的宽度设置不正确。通过代码可以看出,搜索框容器的宽度是固定的,而输入框的宽度也是固定的,并且设置了特定的样式。但是按钮的宽度没有根据实际情况进行计算,导致宽度过大超出了搜索框的边界。

    要解决这个问题,可以使用CSS中的"calc"函数来动态计算按钮的宽度。具体步骤如下:

    1. 首先,将搜索框容器的宽度改为固定的,不再根据测量得到的宽度来设置。因为我们要使用"calc"函数来计算按钮的宽度。
    .search {
       width: 412px;
       /* 其他样式... */
    }
    
    1. 然后,使用"calc"函数来计算按钮的宽度。计算的方式是用搜索框容器的宽度减去输入框的宽度。
    .search button {
       width: calc(412px - 342px);
       /* 其他样式... */
    }
    
    1. 最后,将按钮的样式调整为适合搜索框的样式。可以调整按钮的高度、背景图等样式以适应搜索框的样式。
    .search button {
       width: calc(412px - 342px);
       height: 40px;
       background-image: url(images/btn.png);
       /* 其他样式... */
    }
    

    这样就可以使得搜索按钮的宽度与搜索框一致,并且不会超出搜索框的边界。完成解决该问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

你的input有border-left占用了1px的宽度呀