【发布时间】: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% 是有效的。我可以忍受整个文本字段比文件夹宽,只是为了使清除按钮出现在文本字段内的相同位置。
-
如果您不希望这样,您可以将
input和img放在一个单独的 div 中,样式为position:relative,并为其设置特定的宽度