HTML:IE:输入文本框中的右侧填充

发布于 2024-09-24 13:25:14 字数 265 浏览 5 评论 0原文

转到 http://jsfiddle.net/srLQH/ 并填写“结果”中的输入文本框看法。

如果您在 FF、Chrome 和 Safari 中执行此操作,您的文本将在距右侧 20 像素处停止。

在 IE 7/8 中,文本不会停留在 20px 短处——它一直延伸到输入框的边缘。

和IE有什么关系?如何在 IE 中获得与所有其他浏览器相同的填充效果?

Go to http://jsfiddle.net/srLQH/ and fill in the input text box in the "Result" view.

If you do this in FF, Chrome, and Safari, your text will stop 20px short of the right side.

In IE 7/8, the text does not stop 20px short--it goes all the way to the edge of the input box.

What's the deal with IE? How can I get the same padding effect in IE that all the other browsers give me?

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

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

发布评论

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

评论(8

萌能量女王 2024-10-01 13:25:14

我一直在寻找解决这个问题的方法。一位同事找到了一个解决方案,我们对其进行了测试,效果非常好。因此,问题是删除 padding: right 并添加 border: 20px Solid transparent

I have been looking for a way to solve this. A colleague found a solution and we tested it and it works perfectly. So the thing is to remove the padding: right and add a border: 20px solid transparent.

泅人 2024-10-01 13:25:14

我找到了一种方法,但它并不漂亮。

http://jsfiddle.net/dmitrytorba/dZyzr/162/

<!--[if IE]>
<style type="text/css">
input {
  border: none;
  margin: 5px;
  padding-right: 0px;
}
.wrapper {
    border: 1px #aaa inset;
}
.spacer{
    margin-left: 20px;
}
</style>
<![endif]-->


<span class='wrapper'>
    <input type='text' />
    <span class='spacer'></span>
</span>​

I've found one way of doing it, but its not pretty.

http://jsfiddle.net/dmitrytorba/dZyzr/162/

<!--[if IE]>
<style type="text/css">
input {
  border: none;
  margin: 5px;
  padding-right: 0px;
}
.wrapper {
    border: 1px #aaa inset;
}
.spacer{
    margin-left: 20px;
}
</style>
<![endif]-->


<span class='wrapper'>
    <input type='text' />
    <span class='spacer'></span>
</span>​
我是男神闪亮亮 2024-10-01 13:25:14

我知道这个问题很老了,但经过大量搜索后,我找到了一个有效的解决方案。

您可以使用以下命令在值上添加边距,从而将“填充”添加回 IE。

默认输入填充

    input[type="text"]{
        padding-left:17px;
        padding-right:17px;
    }

IE 输入的填充

    input[type="text"]::-ms-value {
        margin-left:17px;
        margin-right:17px;
    }

但是您需要删除 IE 10+ 的填充(因此它不会同时使用两者),您可以这样做使用此媒体查询。

    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
        input[type="text"] {
            padding-left:0;
            padding-right:0;
        }
    }

I know this question is old, but after a lot of searching, I found a solution that works.

You can add the "padding" back to IE by adding margins on the value using the following.

default input padding

    input[type="text"]{
        padding-left:17px;
        padding-right:17px;
    }

padding for IE inputs

    input[type="text"]::-ms-value {
        margin-left:17px;
        margin-right:17px;
    }

but then you'll need remove the padding for IE 10+ (so it doesn't use both) which you can do with this media query.

    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
        input[type="text"] {
            padding-left:0;
            padding-right:0;
        }
    }

很酷不放纵 2024-10-01 13:25:14

看起来好像 IE 正在应用 CSS,只是直到该行的最后才应用 CSS。也就是说,填充是受值影响的,而不是值受填充影响。

当将内边距设置为 20px 且默认值比默认宽度长时,您可以滚动到末尾并看到内边距。 http://jsfiddle.net/dZyzr/

你必须想出一些视觉技巧,或者只是为 IE 使用不同的样式表。

It appears as if IE is applying the CSS, just not until the very end of the line. That is, the padding is influenced by the value, rather than the value influenced by the padding.

When setting the padding to 20px all the way around with a default value longer than the default width, you can scroll to the end and see the padding. http://jsfiddle.net/dZyzr/

You're going to have to come up with some visual trick, or just use a different style sheet for IE.

∞琼窗梦回ˉ 2024-10-01 13:25:14

只需将其放入另一个在 IE 中进行填充的元素中即可,例如 div。那么你就不必担心丑陋的黑客行为会使你的 CSS 样式表失效。请记住从输入中删除填充,这样就不会惹恼其他浏览器。这也是为文本框提供不随 IE 中的文本滚动的背景图像的唯一方法。

Just chuck it in another element which does do padding in IE, such as a div. Then you don't need to worry about ugly hacks invalidating your css stylesheet. Remember to remove the padding from the input so it doesn't annoy other browsers. This is also the only way to give a text box a background image which doesn't scroll with the text in IE.

左秋 2024-10-01 13:25:14

这是一个较旧的问题,但我通过以下方式在 IE10 中修复了此问题:

如何修复此问题对于 IE-10:

::-ms-clear {
  display: none;
}

或对于特定输入:

.anyinput::-ms-clear {
    display: none;
}

请在此处查看更多信息:
http://sarveshkushwaha.blogspot.com/2014 /06/ie-right-align-text-input-issue.html

This is an older question, but I fixed this in IE10 by following this:

How to fix this it For IE-10 :

::-ms-clear {
  display: none;
}

Or for a specific input :

.anyinput::-ms-clear {
    display: none;
}

See more information here:
http://sarveshkushwaha.blogspot.com/2014/06/ie-right-align-text-input-issue.html

箹锭⒈辈孓 2024-10-01 13:25:14

尝试这个 ie hacks

input{
 padding-right : 20px /* all browsers, of course */  
 padding-right : 20px\9; /* IE8 and below */  
 *padding-right : 20px; /* IE7 and below */  
 _padding-right : 20px; /* IE6 */  
}

演示

http://jsfiddle.net/srLQH/2/

提示

填充不能很好地处理 html 表单元素,即像这样的输入文本区域
尝试将其更改为 margin

input{
 margin-right : 20px /* all browsers, of course */  
 margin-right : 20px\9; /* IE8 and below */  
 *margin-right : 20px; /* IE7 and below */  
 _margin-right : 20px; /* IE6 */  
}

因为在 jsfiddle 中,您只有单个元素,为什么不尝试

ma​​rgin-left 而不是 margin-right

Try this ie hacks

input{
 padding-right : 20px /* all browsers, of course */  
 padding-right : 20px\9; /* IE8 and below */  
 *padding-right : 20px; /* IE7 and below */  
 _padding-right : 20px; /* IE6 */  
}

demo

http://jsfiddle.net/srLQH/2/

Tips

padding dont work well with html form element ie input textarea like that
try changing it to margin

input{
 margin-right : 20px /* all browsers, of course */  
 margin-right : 20px\9; /* IE8 and below */  
 *margin-right : 20px; /* IE7 and below */  
 _margin-right : 20px; /* IE6 */  
}

since in jsfiddle , you have single element, why dont you try

margin-left instead of margin-right

强者自强 2024-10-01 13:25:14

您可以为此元素使用 css 属性 text-indent

对于示例

<input style="text-indent:15px" name="" type="text" value="test testtesttesttesttesttest" />

You can use css property text-indent for this element:

For example:

<input style="text-indent:15px" name="" type="text" value="test testtesttesttesttesttest" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文