html - 显示:table element的绝对定位

标签 html css

我正在尝试为焦点上的输入字段创建文本提示 http://jsfiddle.net/krpkm5dc/ . 第一个问题是如何为 position: absolute 元素设置 max-width,我找到了解决方案 - display: table。

 <div class="wrapper">
    <input type="text">
    <div class="hint">
        Lorem ipsum
    </div>
</div>

.wrapper {
    position: relative;
    display: inline-block;
}
.hint {
    color: white;
    background: #333;
    position: absolute;
    top: 0;
    left: 100%;
    display: none;
    max-width: 200px;
}
input:focus ~ .hint {
    display: table;    
}

但是当我试图把它放在右边时,它有奇怪的行为

.hint {   
    right: 100%;    
} 

http://jsfiddle.net/6vxye8q5/ : 右侧与输入的左侧不匹配。为什么它会这样?

最佳答案

我猜您希望 .hint 元素与输入元素具有相同的宽度。

如果您希望 .hint 出现在输入字段的左侧, 将偏移量设置为 left: -100%right: 100%

如果您希望 .hint 出现在输入字段的右侧, 将偏移量设置为 right: -100%left: 100%

要完全理解其工作原理,您需要阅读有关如何计算绝对定位元素的偏移量和宽度的 CSS 规范:

引用: http://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-width

您还可以使用边距值将 .hint 元素从输入字段偏移或稍微重叠它,具体取决于您想要如何设置布局样式。

要获得较短提示文本的收缩以适合宽度,请使用 display: inline-table 将文本包裹在一个元素中,并调整 text-align .hint 的相应属性。

.showLeft {
  text-align: right;
}
.showRight {
  text-align: left;
}
.wrapper {
  position: relative;
  display: inline-block;
}
input:focus ~ .hint {
  display: block;
}
.hint {
  position: absolute;
  top: 0;
  display: none;
}
.tableit {
  display: inline-table;
  text-align: left;
  color: white;
  background: #333;
}
.showLeft .hint {
  left: -100%;
  right: 100%;
}
.showRight .hint {
  text-align: right;
  right: -100%;
  left: 100%;
}
<div class="showLeft">
  <div class="wrapper">
    <input type="text">
    <div class="hint">
      <div class="tableit">
        Lorem ipsum
      </div>
    </div>
  </div>
</div>
<br>
<div class="showRight">
  <div class="wrapper">
    <input type="text">
    <div class="hint">
      <div class="tableit">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar
      </div>
    </div>
  </div>
</div>

关于html - 显示:table element的绝对定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691265/

相关文章:

html - 使用 CSS 在 HTML 中设置 div 的高度

html - 由于列填充,container-fluid 和 row wrap 正在创建大于 100vh 的网页

html - Materialize Css 工具提示仅在点击时显示

html - 定位时控制文本的位置

html - 悬停时带动画箭头的线

html - 在 html 中嵌入 mp3

php - 仅在提交时使用 javascript 保存表单状态

html - 在另一个内部旋转 div 元素

php - 交替行颜色

javascript - 事件监听器不起作用。它说事件未在控制台中定义