【问题标题】:About using left/top/right/bottom on absolute positioned textarea关于在绝对定位的文本区域上使用左/上/右/下
【发布时间】:2012-04-10 10:18:27
【问题描述】:

我尝试将position:absolutelefttoprightbottom 设置为以像素为单位的固定值,但除非我还设置widthheight,否则我无法让它工作在 Firefox 11 上正常运行。

在 safari/chrome 上的渲染看起来不错……但这是 Firefox 的错误还是确实不是标准的东西?对widthheight 使用 100% 有时是一种解决方案,但当元素没有完全覆盖父容器时则不然。

http://jsfiddle.net/EjS7v/6/

这是 Chrome(也是想要的结果)

Firefox(宽度/高度为 100%)

Firefox(无宽度/高度)

除了使用 Javascript 在运行时计算宽度和高度之外,还有其他方法吗?

请注意,在此示例中,我使用固定大小的 div 作为容器,但最有趣和最有用的情况是容器是弹性的。

【问题讨论】:

    标签: html css firefox


    【解决方案1】:

    实际上有一个简单的替代方案,使用演示标记来包含该文本区域,然后将文本区域本身的宽度高度设为 100%。

    确实,CSS 非常有限。

    【讨论】:

    • 确实解决方案是微不足道的,我不明白为什么我没有考虑过......谢谢。
    • 好吧。在我想到这种方法之前,我做错了很多次......我的荣幸。
    【解决方案2】:

    这是因为textareadiv 不同,它有一个default width and height

    如果元素具有cols 属性,并且使用解析非负整数的规则解析该属性的值不会产生错误,那么用户代理应该使用该属性作为元素的 width 属性,其值为 textarea 的有效宽度(定义如下)。否则,用户代理的行为就好像它有一个用户代理级别的样式表规则,将元素的宽度属性设置为文本区域的有效宽度。

    textarea 元素的 textarea 有效宽度size×avg + sbw,其中 size 是元素的字符宽度,avg 是元素主要字体的平均字符宽度,以 CSS 像素为单位,sbw 是宽度滚动条,以 CSS 像素为单位。 (元素的字母间距属性不影响结果。)

    如果元素具有rows 属性,并且使用解析非负整数的规则解析该属性的值不会产生错误,那么用户代理应该使用该属性作为元素的 height 属性,其值为 textarea 的有效高度(定义如下)。否则,用户代理的行为就好像它有一个用户代理级别的样式表规则,将元素的高度属性设置为文本区域的有效高度。

    textarea 元素的 textarea 有效高度是指定元素字符高度的行数的 CSS 像素高度加上滚动条的 CSS 像素高度。

    【讨论】:

    • 谢谢...文档似乎确实很清楚。看起来是否可以避免 Javascript 定位的答案是否定的 :-(
    • 事实上,它在 Safari/Chrome 中“工作”的唯一原因是 WebKit 错误:bugs.webkit.org/show_bug.cgi?id=81863
    • @BorisZbarsky: 或者这意味着(逻辑)错误在标准规范中 :-) ...我希望例如以某种方式将 rowscols 设置为"auto" 或类似的东西。从设计的角度来看,textarea 元素似乎很糟糕(包括关于软/硬换行符的可怕混乱)。
    • 哦,当然。从设计的角度来看,很多东西都被破坏了,并且由于向后兼容问题而无法更改。
    猜你喜欢
    • 2012-05-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多