问题
我有一个<选择>
其中一个<选项>
的文本值很长。我想要<选择>
调整大小,使其永远不会比其父级宽,即使它必须切断显示的文本。最大宽度:100%
应该这样做。
调整大小前:
调整大小后我想要什么:
但是如果你加载这个jsFiddle示例并将“结果”面板的宽度调整为小于<选择>
,您可以看到<字段集>
无法缩小宽度。
调整大小后我实际看到的内容:
然而具有的等效页<div>
而不是<字段集>
缩放正确。你可以看到更轻松地测试您的更改如果你有一<字段集>
和a<div>
在一页上彼此相邻.如果你删除周围的<字段集>
标签,调整大小有效。这个<字段集>
标签以某种方式导致水平调整中断。
这个<字段集>
行为就像有CSS规则一样字段集{最小宽度:最小内容;}
. (最小含量
大致表示不会导致子级溢出的最小宽度。)如果我更换<字段集>
用一个<div>
具有最小宽度:最小含量
,看起来完全一样。然而没有规则最小含量
在我的样式中,在浏览器默认样式表中,或者在Firebug的CSS检查器中可见。我试图覆盖<字段集>
在Firebug的CSS检查器和Firefox的默认样式表中表单.css,但这没有帮助。具体重写最小宽度
和宽度
也没做什么。
代码
字段集的HTML:
<字段集><div class=“wrapper”><select id=“section”name=“section“><option value=“-1”></option><option value=“1501”selected=“selected”>黑色石英狮身人面像,判断我的誓言。敏捷的棕色狐狸跳过了懒狗</选项><option value=“1480”>分包商</option>山谷文丘拉管最新章节访客不适用</选择></div></fieldset>
我的CSS应该可以工作,但没有:
字段集{/*隐藏fieldset特定的视觉功能:*/边距:0;填充:0;边界:无;}选择{最大宽度:100%;}
重置宽度
属性到默认值不执行任何操作:
字段集{宽度:自动;最小宽度:0;最大宽度:无;}
进一步的CSS,其中我试图解决问题却失败了:
/*尝试许多方法来固定宽度,但没有成功:*/字段集{显示:块;最小宽度:0;最大宽度:100%;宽度:100%;文本溢出:剪辑;}div.包装器{宽度:100%;}选择{溢出:隐藏;}
更多详细信息
这个问题也发生在更全面、更复杂的jsFiddle示例,这与我实际尝试修复的网页更为相似。你可以从中看到<选择>
不是问题所在–是一个内联块div公司
也无法调整大小。虽然这个例子更复杂,但我假设上面简单案例的修复也会修复这个更复杂的案例。
[编辑:请参阅下面的浏览器支持详细信息。]
这个问题的一个奇怪之处是如果您设置div.wrapper{宽度:50%;}
,的<字段集>
停止调整自身大小<选择>
会撞到视口的边缘。调整大小的过程就像<选择>
有宽度:100%
尽管<选择>
看起来有宽度:50%
.
如果你给予<选择>
它本身宽度:50%
,该行为不会发生;宽度设置得很简单。
我不明白造成这种差异的原因。但这可能并不相关。
我还发现了非常相似的问题HTML字段集允许子项无限扩展。提问者找不到解决方案猜测没有解决方案除了移除<字段集>
。但我想知道,如果真的不可能<字段集>
显示正确,为什么?中的内容<字段集>
的规范或默认CSS(就这个问题而言)导致这种行为?由于多个浏览器都是这样工作的,所以这种特殊行为可能在某些地方有文档记录。
背景目标和要求
我尝试这样做的原因是,作为使用大表单为现有页面编写移动样式的一部分<字段集>
。在智能手机上(或者如果您使浏览器窗口变小),页面中带有<字段集>
比表单的其他部分宽得多。大多数表单都很好地限制了其宽度,但带有<字段集>
否则,将强制用户缩小或向右滚动以查看所有该部分。
我对简单地删除<字段集>
,因为它是在大型应用程序的许多页面上生成的,我不确定CSS或JavaScript中的哪些选择器可能依赖于它。
如果需要,我可以使用JavaScript,JavaScript解决方案总比什么都没有好。但是,如果JavaScript是实现这一点的唯一方法,我很想听听为什么仅使用CSS和HTML无法做到这一点。
编辑:浏览器支持
在这个网站上,我需要支持Internet Explorer 8和更高版本(我们刚刚放弃了对IE7的支持)、最新的Firefox和最新的Chrome。此特定页面也应适用于iOS和Android智能手机。Internet Explorer 8可以接受稍微降级但仍可用的行为。
我重新测试了我的破碎字段集
例子在不同的浏览器上。它实际上已经在这些浏览器中工作:
- Internet Explorer 8、9和10
- 铬
- Android版Chrome
它在以下浏览器中中断:
- 火狐浏览器
- 火狐浏览器安卓版
- Internet Explorer 7
因此,我唯一关心的是Firefox(在桌面和手机上),它是当前代码被破坏的浏览器。如果代码被修复,使其在Firefox中工作,而不会在任何其他浏览器中破坏它,这将解决我的问题。
站点HTML模板使用Internet Explorer条件注释来添加类,例如.ie8标准
和.oldie(旧)
到<html>
元素。如果需要解决IE中的样式差异,可以在CSS中使用这些类。添加的类与这个旧版本的HTML5 Boilerplate.