【问题标题】:Setting an absolute position when parent div changes width父div改变宽度时设置绝对位置
【发布时间】:2014-03-13 04:33:14
【问题描述】:

我对 css 中的绝对和相对定位有疑问。我有一个可以查看文件夹的 GUI,用户可以选择查看文件夹的列数,参见图片。在每个文件夹下,我都有一个输入字段,用户可以在其中更改文件夹名称,还有一个用于清除名称的按钮。

我希望清除按钮始终位于文本字段中的确切位置,但是随着列宽的变化,我在按钮上的绝对定位不会按照我的意愿进行。

http://i.imgur.com/Sh0W40o.png - 六列,清除按钮位置正确。 http://i.imgur.com/EBYADqA.png - 三列,按钮位置不正确。

<div ng-class="colStyle" ng-repeat="folder in getFolders(currentFolder)">                               
    <input type="image" ng-src="{{folder.img}}" ng-click="enter(folder)"/>                              
    <div ng-show="showFont && editing" class="testing">
        <input type="text" ng-model="folder.name"/>                                     
        <img class="clearName" src="img/clear.png" ng-click='clearName($index, folder)'/>                               
    </div>                              
</div>

这是用于查看我的文件夹及其文本字段的 HTML。类“colStyle”是一个响应式gridsystem.com,其中类变为“col span_1_of_X”,其中X是用户选择的列数。这定义了视图 ny 中有多少列设置该 div 的宽度。

我认为这里重要的两个 css 类是“测试”和“clearName”,它们看起来像:

.testing{
    position: relative;
    margin: 0px;
    padding: 0px;
}
.clearName{
    position: absolute;
    left : 80%;
    top: 5px;
}

我的问题是 80% 或我选择的任何 % 只擅长列数之一。

如何在清除按钮上设置一个位置,以便在列数发生变化时它始终位于文本字段内的同一位置?

【问题讨论】:

  • 你用 % 给了左边。你能给我们一个 JS fiddle,以便我们可以玩弄并给你一个解决方案。
  • 试试这个小提琴jsfiddle.net/dutue
  • 这是一个复杂的系统,有很多方法和其他东西。但我会尽量把它缩小到一个你可以尝试的小提琴。
  • @anurupr 将“.testing input”的宽度设置为 100% 是有效的。我可以忍受整个文本字段比文件夹宽,只是为了使清除按钮出现在文本字段内的相同位置。
  • 如果您不希望这样,您可以将 inputimg 放在一个单独的 div 中,样式为 position:relative,并为其设置特定的宽度

标签: html css angularjs


【解决方案1】:

为什么不从输入框的右边开始呢?

让我们假设你想将清除按钮放置在距离右侧 5px 的位置,你可以使用以下样式:

.clearName{
 position: absolute;
 right: 5px;
 top: 5px;
}

这要求输入框使用外层div的全宽。

百分比的使用是动态的,因为它取决于外部 div 的宽度(100px => 80% => 20px 和 200px => 80% => 40px)。

如果不想将输入域设置为外层div(.testing)的宽度,可以翻转思路,将外层div(.testing)设置为输入域的宽度。

为此,您可以使用:

.testing {
  display: table;
  margin: auto;
}

【讨论】:

  • 是的,这与我目前的左手结果完全相同:80%。见i.imgur.com/PZQk2td.pngi.imgur.com/1FVgstk.png
  • 这是因为输入框的宽度比外面的div小。在您的输入字段中使用此样式: .testing input { width: 100%; } 这要求输入框使用外层div的全宽。
  • 哦,现在我明白了。是的,这行得通!但是,如果我不想将输入框缩放到外部 div 的全宽?我希望输入字段与上面的文件夹一样宽吗?这可能吗?
  • 可以根据输入框缩放外部 div 吗?我构建了一个 codepen 来向您展示一个示例:http://codepen.io/anon/pen/lBJsg
  • 我不明白你的意思,但是我不能改变"colStyle" Div的宽度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2013-05-02
相关资源
最近更新 更多