当前位置: 首页 > 面试题库 >

如何使选择元素在字段集中缩小为最大宽度百分比样式

堵远航
2023-03-14
问题内容

当我减小浏览器窗口的宽度时,尽管执行以下命令,select内的元素的fieldset大小仍不会减小max-width

<fieldset style="background:blue;">
<select name=countries style="max-width:90%;">
 <option value=gs>South Georgia and the South Sandwich Islands</option>
</select>
</fieldset>

但是,这完全可以在外部fieldset元素中使用。如何使select元素缩小到max-width字段集中的(百分比)?

注意: 我已经测试了Firefox 12.0和Google Chrome。我现在确定这是一个跨浏览器的问题。

说明性
:请参考此示例,并注意a中一个select元素fieldset与a中另一个元素的行为之间的区别fieldset。我要实现的是使select元素内部的fieldset行为类似于fieldset元素外部的行为。


问题答案:

问题

这是不可能的,至少如果您仅使用它max- width(请参阅下面的解决方案)。<select>的样式总是[有点棘手,因为它们是交互式的内容元素_和_
表单控件元素。因此,他们必须遵循一些隐性规则。首先,使用时,选择范围不能小于选择范围之一max-width。考虑以下情形:

+------------------------------------+-+
|Another entry                       |v|
+------------------------------------+-+
|Another entry                         |
|Select box, select anything, please   |
|Another entry                         |
|Another entry                         |
+------------------------------------+-+

假设您要压缩<select>-会发生什么?选择的宽度将变小,直到…

+------------------------------------+-+   +-----------------------------------+-+
|Another entry                       |v|   |Another entry                      |v|
+------------------------------------+-+   +-----------------------------------+-+
|Another entry                         |   |Another entry                        | 
|Select box, select anything, please   |-->|Select box, select anything, please  | 
|Another entry                         |   |Another entry                        | 
|Another entry                         |   |Another entry                        | 
+------------------------------------+-+   +-----------------------------------+-+ 
                                                   |
           +---------------------------------------+
           v
+----------------------------------+-+   +---------------------------------+-+
|Another entry                     |v|   |Another entry                    |v|
+----------------------------------+-+   +---------------------------------+-+
|Another entry                       |   |Another entry                      | 
|Select box, select anything, please |-->|Select box, select anything, please| 
|Another entry                       |   |Another entry                      | 
|Another entry                       |   |Another entry                      | 
+----------------------------------+-+   +---------------------------------+-+

然后,该过程将停止,因为<option>不再适合。请记住,您无法样式化<option>s或至少只有一点点(颜色,字体变化),而不会出现一些讨厌的怪癖。但是,如果正确准备了选择框,则可以更改边框:

解决方案

在上使用一个widthselect。是的,很简单:

<fieldset style="background:blue;">
 <select name=countries style="width:100%;max-width:90%;">
  <option value=gs>South Georgia and the South Sandwich Islands</option>
 </select>
</fieldset>

为什么这样做?因为option现在会正确地识别的widthselect而不会强迫select拥有隐式的min- width。请注意,这width是荒谬的,因为它比还要多max-widthmax- width在这种情况下,大多数浏览器都不会在意并使用,因为它提供了上限。

(适用于FF12,Chrome 18,IE9,Opera11.60)

编辑

基于包装的解决方案,这不会更改原始宽度:

<fieldset style="background:blue;">
<div style="display:inline-block;max-width:90%;"> <!-- additional wrapper -->
 <select name=countries style="width:100%">
  <option value=gs>South Georgia and the South Sandwich Islands</option>
 </select>
</div>
</fieldset>

(在上面列出的浏览器中有效)



 类似资料:
  • 问题内容: Test A long string blah blah blah 上面的方法不起作用。如何使用百分比设置表格单元格的最大宽度? 问题答案: 根据CSS 2.1规范中max-width的定义,“’min-width’和’max-width’对表,内联表,表单元格,表列和列组的影响是不确定的。” 因此,您不能直接在td元素上设置最大宽度。 如果只希望第二列最多占用67%,则可以将宽度(对

  • 问题内容: 我有这个设置: HTML : CSS : 通过此设置,它可以在iPhone上运行,但不能在浏览器中运行。 是因为我已经在meta中,也许已经在? 问题答案: 我发现最好的方法是为较旧的浏览器编写默认CSS,因为较旧的浏览器包括5.5、6、7和8。无法读取@media。当我使用@media时,我会这样使用: 但是,您可以使用@media进行任何操作,这只是为所有浏览器构建样式时最适合我的

  • 问题内容: 小提琴说明了一切。我想要一个仅限CSS的解决方案,将表的宽度限制为div的宽度。长字符串应被打断(但是您可以看到它不是),这将导致表溢出。 我不想使用任何像素宽度。这应该是完全流畅的。 问题答案: 大家看看

  • 问题内容: 使用jQuery,您将如何查找具有特定样式(例如)的元素,而不管它是内联样式还是CSS文件中定义的样式? 问题答案: 使用过滤功能: 将“ *”替换为适合您的情况的选择器。

  • 问题内容: 我已经具有Docker和EC2的经验。但是我是ECS的新手。有人可以帮助我了解这两个参数的实际作用,区别和用法。 官方文件说: 该 最低百分之健康 表示在部署期间必须保持在RUNNING状态的服务任务数的下限,以所需任务数的百分比(四舍五入到最接近的整数)的百分比表示。使用此参数,可以在不使用其他群集容量的情况下进行部署。例如,如果您的服务具有所需的四个任务数量,并且最小健康百分比为5

  • 问题内容: 我有以下代码 我想获得输出: 实际发生的情况: 问题答案: