CSS 将输入文本包含为 100% 宽度

发布于 2024-12-27 23:11:16 字数 509 浏览 0 评论 0原文

因此,当我像本示例一样设置输入时,文本框(因为默认情况下有边框和填充)将比 200px 宽。

<div style="width:200px; background-color:red;">
    <input type="text" name="fname" style="width:100%;"/>
</div>

我知道我可以通过为输入标记设置一个类并使用此 CSS 标记它来强制文本框适应 200px

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;    
box-sizing: border-box;

有没有更好的方法来使此文本框正确调整大小,即按照我的需要填充 100%做什么?我不能使用固定尺寸。我使用 CSS 主题,因此文本框填充、边距等在编译时未知。用户可以即时更改它们。因此,无论文本框的内边距、边框和边距如何,该解决方案都必须有效。

So when I set the input like this example the text box, because it has a border and padding by default, will be wider than 200px.

<div style="width:200px; background-color:red;">
    <input type="text" name="fname" style="width:100%;"/>
</div>

I know I can force the text box to fit within the 200px by setting a class to the input tag and tagging it with this CSS

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;    
box-sizing: border-box;

Is there a better way to get this text box to size correctly, i.e. to fill 100% as I want it to do? I cannot use fixed sizes. I am using CSS themes so the text box padding, margins, etc are not known at compile time. They can be changed out by the user on the fly. So the solution must work regardless of what the text box's padding, border, and margin is.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

太阳公公是暖光 2025-01-03 23:11:16

我想你已经回答了你自己的问题。 box-sizing: border-box; 实际上是让元素适合其父元素的唯一 CSS 方法。 css-tricks 在这里对此进行了详细介绍。

http://css-tricks.com/box-sizing/

我不知道有任何其他除了使用 javascript 之外,您还可以使用 CSS 来执行一些计算,然后修改您的输入元素。

I think you have already answered your own question. box-sizing: border-box; is really the only CSS means of getting the element to fit inside its parent. css-tricks goes into great detail about this here.

http://css-tricks.com/box-sizing/

I am unaware of any other CSS you could use other than using javascript to perform some calculations and then modifying your input elements.

白况 2025-01-03 23:11:16

是的。可以做到

您可以在不使用 box-sizing不清楚 解决方案(例如 width~=99%)的情况下完成此操作。
jsFiddle 演示
在此处输入图像描述

HTML 标记:

<div class="input_wrap">
    <input type="text" />
</div>

CSS:

div {
    padding: 6px 17px; /* equal to negative input's margin for mimic normal `div` box-sizing */
}

input {
    width: 100%; /* force to expand to container's width */ 
    border: 7px solid #DFDFDF;  
    padding: 0 10px;
    margin: 0 -17px; /* negative margin = border-width + horizontal padding */ 
}   

Yes. You can do it.

You can do it without using box-sizing and not clear solutions like width~=99%.
Demo on jsFiddle:
enter image description here

HTML markup:

<div class="input_wrap">
    <input type="text" />
</div>

CSS:

div {
    padding: 6px 17px; /* equal to negative input's margin for mimic normal `div` box-sizing */
}

input {
    width: 100%; /* force to expand to container's width */ 
    border: 7px solid #DFDFDF;  
    padding: 0 10px;
    margin: 0 -17px; /* negative margin = border-width + horizontal padding */ 
}   
幼儿园老大 2025-01-03 23:11:16
<div style="width:200px; background-color:red;">
    <input type="text" name="fname" style="width:100%;border:1px;padding:4px;margin:-5px"/>
</div>
<div style="width:200px; background-color:red;">
    <input type="text" name="fname" style="width:100%;border:1px;padding:4px;margin:-5px"/>
</div>
星星的轨迹 2025-01-03 23:11:16
<div style="width:200px; height:22px; background-color:red;">
    <input type="text" name="fname" style="width:97%;margin-left:1%;"/>
</div>

但说真的,这里有一个 jsfiddle

<div style="width:200px; height:22px; background-color:red;">
    <input type="text" name="fname" style="width:97%;margin-left:1%;"/>
</div>

?

But seriously, though, here's a jsfiddle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文