jquery – CSS对齐标签和输入

前端之家收集整理的这篇文章主要介绍了jquery – CSS对齐标签和输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
HTML代码段:
  1. <fieldset id="o-bs-sum-buginfo">
  2. <label for="o-bs-sum-bug-ErrorPrefix">Error Prefix</label>
  3. <input type="text" id="o-bs-sum-bug-ErrorPrefix" name="ErrorPrefix" value="" />
  4.  
  5. <label for="o-bs-sum-bug-ErrorNumber">Error Number</label>
  6. <input type="text" id="o-bs-sum-bug-ErrorNumber" name="ErrorNumber" value="" />
  7. ....
  8. </fieldset>

仅使用CSS(或jquery),不管浏览器的大小,我想要将标签和输入元素彼此相邻。我也有自由改变调整HTML。如果需要。

解决方法

这是其中一个可能令人惊讶的棘手的权利。

很多人会建议使用float:left;为了这。个人而言,我真的不喜欢浮动;他们似乎引起更多的问题,而不是他们解决

我的首选是使用内联块。这是一种显示方法,它将嵌入式属性(例如能够指定维度)组合成内联属性(以便您可以轻松地对齐彼此相邻的元素等)。

所以答案是简单地使它们都显示:inline-block;并给提示一个固定的宽度,这将使他们旁边的输入字段排队。

您还需要在输入字段后面添加换行符或换行符,否则下一个提示将出现在同一行上,这不是所需的效果。实现这一点的最佳方法是将每个提示及其字段放入容器< div>中。

所以你的HTML将看起来像这样:

  1. <fieldset id="o-bs-sum-buginfo" class="myfields">
  2. <div>
  3. <label for="o-bs-sum-bug-ErrorPrefix">Error Prefix</label>
  4. <input type="text" id="o-bs-sum-bug-ErrorPrefix" name="ErrorPrefix" value="" />
  5. </div>
  6.  
  7. <div>
  8. <label for="o-bs-sum-bug-ErrorNumber">Error Number</label>
  9. <input type="text" id="o-bs-sum-bug-ErrorNumber" name="ErrorNumber" value="" />
  10. </div>
  11. ....
  12. </fieldset>

并且你的CSS将看起来像这样:

  1. .myfields label,.myfields input {
  2. display:inline-block;
  3. }
  4.  
  5. .myfields label {
  6. width:200px; /* or whatever size you want them */
  7. }

希望有帮助。

编辑:
您可以使用此插件设置每个标签的宽度:

  1. jQuery.fn.autoWidth = function(options)
  2. {
  3. var settings = {
  4. limitWidth : false
  5. }
  6.  
  7. if(options) {
  8. jQuery.extend(settings,options);
  9. };
  10.  
  11. var maxWidth = 0;
  12.  
  13. this.each(function(){
  14. if ($(this).width() > maxWidth){
  15. if(settings.limitWidth && maxWidth >= settings.limitWidth) {
  16. maxWidth = settings.limitWidth;
  17. } else {
  18. maxWidth = $(this).width();
  19. }
  20. }
  21. });
  22.  
  23. this.width(maxWidth);
  24. }

from this page in a comment

你可以这样使用它:

  1. $("div.myfields div label").autoWidth();

并且所有…所有的标签将采取最长的标签的宽度

猜你在找的jQuery相关文章