文本区域与em无法在IE和Opera中工作

时间:2012-06-23 18:32:57

标签: css css3 textarea em

这是我第一次尝试在'em'测量中制作完整的网页布局。我正在构建一个实时预览降价编辑器。

此页面在Firefox和Chrome中完美运行,但在IE(我有IE9)和Opera(昨晚更新)中,文本区域显着地射击边界。在Opera中,textarea的边界也没有显示圆角。 (文本区域显示圆角但不显示其边框)

这是textarea的css

#pad {
    background-color:#BBBB99;
    background-image:url("../img/edit.png");
    border-color:rgba(32, 32, 52, 0.39);
    border-radius:1em 1em 1em 1em;
    font-size:1.3em;
    height:33.3em;
    margin:0.3em;
    outline:medium none;
    padding:0.9em 0.7em;
    resize:none;
    width:26em;
    text-align: left;

}

这是html代码段

<div class='container'>
  <div id='left'>
    <textarea id = 'pad' wrap="on" ></textarea>
  </div>

  <div id='right'>
    <div id='preview'></div>
  </div>
</div>

我在正文中设置了'font:100%'。 Here is the link of demo if you need to check it.

2 个答案:

答案 0 :(得分:4)

我认为问题是由#pad中字体大小的更改引起的。

当您设置基本字体大小(例如18px)时,所有子元素都会将1em视为18px。但是,如果您将其中一个子项中的font-size更改为1.2em,则嵌套在该子项中的所有子元素将开始将1em视为22px

body {
    font-size: 18px;
}

.parent {
    font-size: 1em;   /* 18px */
}

.child {
    font-size: 1.2em  /* 22px */
}

.child > .child {
    font-size: 1em;   /* 22px */
}

我认为在Internet Explorer中发生的事情是,在计算1.2em width之前,字体大小已更改为#pad。因此,Firefox和Chrome中的宽度为26 * 18px,而IE中的宽度为26 * 22px

为了解决这个问题,我会将宽度设置为百分比,而不是固定的em测量值。

修改

关于Opera的圆角问题; Opera似乎并不善意border-widthborder-style都没有设置。

尝试将border-color更改为border: 1px solid rgba(32, 32, 52, 0.39);,看看是否能解决您的问题。

答案 1 :(得分:0)

对于特殊的css3功能,请为每个浏览器使用供应商前缀:
而不是border-radius:1em 1em 1em 1em;使用:

-webkit-border-radius:1em;
-moz-border-radius:1em;
-o-border-radius:1em;
-ms-border-radius:1em;
border-radius:1em;