首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >右对齐工具提示

右对齐工具提示
EN

Stack Overflow用户
提问于 2019-01-04 19:35:55
回答 5查看 1.9K关注 0票数 0

我试图让标签的一部分文字输入字段是对齐的。

这里是一个典型的小提琴。

代码语言:javascript
复制
<div class="row">
  <div class="input-field col s6">
    <input placeholder="Placeholder" id="first_name" type="text" class="validate">
    <label for="first_name">First Name <span class="right-align">Top Right</span></label>
  </div>
</div>

我的目标是让‘最右’文本在输入的右上角。我尝试添加right-align CSS助手,但它没有做任何事情。

我尝试添加style="float: right;"作品种类,但是文本没有完全对齐到右边

是否有一种方法可以使它与输入字段的右侧完全对齐?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-01-04 20:28:19

我真的不喜欢过度使用position: absolute来解决问题。使用它可能会导致性能问题,因为浏览器必须使用创建一个新的堆栈元素并将其呈现为“内翻”。。特别是因为它已经是绝对的,所以现在有3个叠加元素,当真正做到这一点的时候,就不需要了。

较少污秽(无位置,最差选项)修正:

代码语言:javascript
复制
.abcd {
  float: right;
}
label {
  padding-right: 1.50rem;
}

https://jsfiddle.net/f4036zmg/

工作原理:标签的位置是绝对的,所以它没有考虑到它的容器元素(.75rem)的填充。为了使左边对齐对齐正确,它有left: .75rem,这意味着右边是1.5rem,因为它是width: 100%。简单地填充标签将迫使浮子在标签填充区域内移动。

让我知道,如果你想整个工作没有职位,这是相当容易的。(然而,看起来materialize.min.css正在以一种非常丑陋的方式为您做这项工作)。

半清洁(无位置,确定选项)修正:

代码语言:javascript
复制
.abcd {
  float: right;
}
input[type=text].validate+label {
  width: auto;
  right: .75rem;
}

在这里,我们重写materialize.min.css (也许这不是一个好的选择,我不知道)。我们重新设置width: auto,这样right就可以工作了,就像以前一样,我们必须为该.75rem进行填充。

https://jsfiddle.net/gL7fhx2q/

清洁修复:

所需的Html更改:

代码语言:javascript
复制
<label for="first_name">
  <span class="">First Name</span>
  <span class="tar">Top Right</span>
</label>

CSS:

代码语言:javascript
复制
.input-field.col label {
  left: 0;
  padding: 0 .75rem;
  display: flex;
}
.input-field.col label > span {
  flex: 1 0 auto;
}
.tar {
  text-align: right;
}

https://jsfiddle.net/7bw2zghr/

但是,再次重写materialize.min.css不应该给其他设计带来问题。将左边的left:0重新设置到正确的位置,并添加类似于输入padding: 0 .75rem的填充。现在标签正确匹配它是兄弟姐妹。将标签的显示更改为挠性容器,并将这两种文本包装起来,使它们成为灵活的项目。将项目按比例增长,然后正确地将flex项的文本设置为右侧。

票数 1
EN

Stack Overflow用户

发布于 2019-01-04 19:49:39

https://jsfiddle.net/mL19ybnt/15/

代码语言:javascript
复制
.right-align {
  position: absolute;
  right: 25px;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css" rel="stylesheet"/>


<div class="row">
  <div class="input-field col s6">
    <input placeholder="Placeholder" id="first_name" type="text" class="validate">
    <label for="first_name">First Name <span class="right-align">Top Right</span></label>
  </div>
  
  <div class="input-field col s3">
    <input placeholder="Placeholder" id="first_name" type="text" class="validate">
    <label for="first_name">First Name <span class="right-align">Top Right</span></label>
  </div>
</div>

您可以使用position: absolute;,然后添加任何边距来正确地对齐。

代码语言:javascript
复制
.right-align {
  position: absolute;
  right: 25px;
}
票数 0
EN

Stack Overflow用户

发布于 2019-01-04 19:55:00

您可以将标签的宽度缩小到91%,因为您正在使用绝对位置(上、左)来调整其位置,并在跨度中添加浮动。

代码语言:javascript
复制
input[type=text].validate+label {
  width: 91%;
}

.right-align {
  float: right;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54044991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档