【问题标题】:Float right without creating new line向右浮动而不创建新行
【发布时间】:2018-02-03 21:12:51
【问题描述】:

HTML:

<div>Due date:<input type="text" name="dueDate" size="30" value="{{ticket.fields.interval.lastExecution|e}}" required  disabled="disabled"></input></div>
<div>Created by:<input type="text" name="createdBy" size="30" value="{{ticket.fields.personCreated|e}}" required  disabled="disabled"></input></div>

CSS:

.open-tickets-view input {
    border:         0px solid #474a52;
    border-radius:  0px;
    max-width:      200px;

结果:

如果我尝试使用内联块显示向右浮动:

CSS:

.open-tickets-view input {
    border:         0px solid #474a52;
    border-radius:  0px;
    max-width:      200px;
    display:        inline-block;
    float:          right;

结果:

我在display: flexuse justify-content: space-between 之间尝试了几种不同的组合,但文本总是换行。

【问题讨论】:

  • 分享完整的 css 和 html 或制作现场演示?
  • &lt;input&gt; 元素是自动关闭的。 &lt;/input&gt; 不存在。
  • @caramba,谢谢。我已经修改了它。然而,遗憾的是并没有改变结果。
  • 请分享您正在使用的完整html和css?
  • 将 width:100% 设置为您的持有人 div,然后将浮动设置为正确的元素。考虑带有显示表或弹性框的 div 是正确的方法。

标签: html css


【解决方案1】:

对于输入元素,最好使用&lt;label&gt;。因为它是输入的标签。带有标签的默认浏览器行为是,如果您单击标签,鼠标将聚焦输入。 Read more about it here

使用浮点数:

div.myDiv {
   width: 300px;
   border: solid 2px red;
}
div.myDiv:after {
   /* clear floats is a good thing */
   content: '';
   display: block;
   clear: both;
}
div.myDiv input {
   float: right;
   border:solid 2px green;
}
div.myDiv label {
   border:solid 2px green;
}
<div class="myDiv">
  <label for="uname">Choose a username: </label>
  <input type="text" id="uname" name="name">
</div>

使用定位:

div.myDiv {
   position: relative;
   width: 300px;
   border: solid 2px red;
}
div.myDiv input {
   border:solid 2px green;
   position: absolute;
   right: 0;
}
div.myDiv label {
   border:solid 2px green;
}
<div class="myDiv">
  <label for="uname">Choose a username: </label>
  <input type="text" id="uname" name="name">
</div>

【讨论】:

  • 谢谢我现在正在测试它
  • 我将 position: absolute 更改为 left: 115,即使我缩小屏幕尺寸,它也能正常工作!谢谢
  • @Mykita 如果您更改 div.myDiv { width: 100%; },那么它也适用于 'right: 0;' 和缩小。无论哪种方式,很高兴它有帮助,快乐编码
【解决方案2】:

您可以在display:flex 的子元素上使用margin-left:autoflex-direction:row,如下所示。

.container, .container > div {
  display: flex;
  flex-direction: row;
  white-space:nowrap;
}

.container .right {
  margin-left: auto;
}
<div class='container'>
  <div>
    <span>Due date:</span>
    <input type="text" name="dueDate" size="30" value="{{ticket.fields.interval.lastExecution|e}}" required disabled="disabled" />
  </div>
  <div class='right'>
    <span>Created by:</span><input type="text" name="createdBy" size="30" value="{{ticket.fields.personCreated|e}}" required disabled="disabled" />
  </div>
</div>

或许:

.container,
.container>div {
  display: flex;
}

.container {
  flex-direction: column;
}

.container>div {
  flex-direction: row;
  padding:1em;
}

.container .right {
  margin-left: auto;
}
<div class='container'>
  <div>
    <span>Due date:</span>
    <input class='right' type="text" name="dueDate" size="30" value="{{ticket.fields.interval.lastExecution|e}}" required disabled="disabled" />
  </div>
  <div>
    <span>Created by:</span><input class='right' type="text" name="createdBy" size="30" value="{{ticket.fields.personCreated|e}}" required disabled="disabled" />
  </div>
</div>

【讨论】:

  • 给定的 css 正在工作,另一个 css 或 html 代码中的问题
  • 谢谢我现在正在测试它!
  • 第二个代码 sn-p 是最接近的。但是,文本最终出现在屏幕中间(必须在容器中滚动)。无论如何,谢谢!
猜你喜欢
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多