灵活/流畅的 HTML 表单的 CSS 秘诀是啥?

Posted

技术标签:

【中文标题】灵活/流畅的 HTML 表单的 CSS 秘诀是啥?【英文标题】:What are the CSS secrets to a flexible/fluid HTML form?灵活/流畅的 HTML 表单的 CSS 秘诀是什么? 【发布时间】:2010-09-08 19:47:02 【问题描述】:

下面的 html/CSS/javascript (jQuery) 代码显示了#makes 选择框。选择一个选项会显示带有相关选项的 #models 选择框。 #makes 选择框偏离中心,#models 选择框在显示时填充空白区域。

如何设置表单样式,以便#makes 选择框在它是唯一显示的表单元素时居中,但当两个选择框都显示时,它们都在容器内居中?

var cars = [
  
    "makes"  : "Honda",
    "models"  : ['Accord','CRV','Pilot']
  , 
  
    "makes"   :"Toyota",
    "models"  : ['Prius','Camry','Corolla']
  
];

$(function() 
  vehicles = [] ;
  for(var i = 0; i < cars.length; i++) 
    vehicles[cars[i].makes] = cars[i].models ;
  
  var options = '';
  for (var i = 0; i < cars.length; i++) 
    options += '<option value="' + cars[i].makes + '">' + cars[i].makes + '</option>';
  
  $("#make").html(options);   // populate select box with array

  $("#make").bind("click", function() 
    $("#model").children().remove() ;   // clear select box
    var options = '';
    for (var i = 0; i < vehicles[this.value].length; i++) 
      options += '<option value="' + vehicles[this.value][i] + '">' +
        vehicles[this.value][i] +
        '</option>';
    
    $("#model").html(options);   // populate select box with array
    $("#models").addClass("show");
  );     // bind end
);
.hide 
  display: none;

.show 
  display: inline;

fieldset 
  border: #206ba4 1px solid;

fieldset legend 
  margin-top: -.4em;
  font-size: 20px;
  font-weight: bold;
  color: #206ba4;

fieldset fieldset 
  position: relative;
  margin-top: 25px;
  padding-top: .75em;
  background-color: #ebf4fa;

body 
  margin: 0;
  padding: 0;
  font-family: Verdana;
  font-size: 12px;
  text-align: center;

#wrapper 
  margin: 40px auto 0;

#myFieldset 
  width: 213px;

#area 
  margin: 20px;

#area select 
  width: 75px;
  float: left;

#area label 
  display: block;
  font-size: 1.1em;
  font-weight: bold;
  color: #000;

#area #selection 
  display: block;

#makes 
  margin: 5px;

#models 
  margin: 5px;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

<div id="wrapper">
  <fieldset id="myFieldset">
    <legend>Cars</legend>
    <fieldset id="area">
      <label>Select Make:</label>
      <div id="selection">
        <div id="makes">
          <select id="make"size="2"></select>
        </div>
        <div class="hide" id="models">
          <select id="model" size="3"></select>
        </div>
      </div>
    </fieldset>
  </fieldset>
</div>

【问题讨论】:

【参考方案1】:

您的问题并不完全清楚您要实现的布局,但从您已将“float:left”应用于选择元素这一事实来看,您似乎希望选择元素并排出现边。如果是这种情况,您可以通过执行以下操作来实现:

要居中对齐元素,您需要将“text-align:center”添加到包含块级元素,在本例中为 #selection。 浮动元素的位置不受“text-align”声明的影响,因此请从选择元素中删除“float:left”声明。 为了让#make 和#model div 并排放置而不使用浮动,它们必须显示为内联元素,因此在#make 和#model 中添加“display:inline”(请注意,这将丢失这些元素的垂直边距,因此您可能需要进行一些其他更改才能获得所需的确切布局)。

由于选择元素默认内联显示,最后一步的替代方法是删除#make 和#model div,并将“show”和“hide”类直接应用于模型选择元素。

【讨论】:

感谢您花时间回答。尽管我的问题含糊不清,但您触及了我需要解决问题的领域。【参考方案2】:

浮动选择框会将其显示属性更改为“块”。如果您没有理由浮动它们,只需删除“float:left”声明,并将“text-align:center”添加到#makes 和#models。

【讨论】:

以上是关于灵活/流畅的 HTML 表单的 CSS 秘诀是啥?的主要内容,如果未能解决你的问题,请参考以下文章

提高网站打开速度秘诀:压缩html,Javascript和CSS文件

CSS是啥?和HTML有啥区别?

8个秘诀帮助你编写优秀 CSS 代码

Erlang 的可扩展性秘诀是啥?

使用以下方法消除 UINavigationbar 和另一个视图之间的黑色字符串的秘诀是啥?

如何将Google Form iframe嵌入具有灵活高度的html css(响应式)