2014-09-26 92 views
4

我有兩個棋子,我想將它們設置在左上角的文字(單元格編號)在左下方。如何設置​​裏面的圖片位置標籤位於左上角而文字位於左下方

這是我有:
enter image description here

這就是我想要有:
enter image description here

CSS

td { 
    width: 80px; 
    height: 80px; 
    text-align: left; 
    vertical-align: bottom; 
    border: 1px solid black; 
} 

.soldiers 
{ 
    width:20px; 
    height:20px; 
} 

HTML

<tr> 
<td class="oddCellBorder" row="0" col="0">57 
<img src="Resources/images/player_2.png" class="soldiers"> 
<img src="Resources/images/player_1.png" class="soldiers"> 
</td> 
<td class="evenCellBorder" row="0" col="1">58</td> 
<td class="oddCellBorder" row="0" col="2">59</td> 
<td class="evenCellBorder" row="0" col="3">60</td> 
<td class="oddCellBorder" row="0" col="4">61</td> 
<td class="evenCellBorder" row="0" col="5">62</td> 
<td class="oddCellBorder" row="0" col="6">63</td> 
<td class="evenCellBorder" row="0" col="7">64</td> 
</tr> 
+0

你有jsfiddle嗎? – 2014-09-26 21:50:12

+0

嘗試添加。士兵 { 位置:相對;左:0;頂部:0;寬度:20像素; height:20px; } – 2014-09-26 21:51:07

+0

你可以使用'td:nth-​​child(偶數){}'和'td:nth-​​child(奇數){}來應用偶數和奇數只有http://jsfiddle.net/BrianDillingham/v6qrfvrd/1/前述的IE 6支持。 – 2014-09-26 22:06:20

回答

4

裹在span的數量和它在底部位置,vertical-align: top;一切。

td { 
 
    position: relative; 
 
    vertical-align: top; 
 
    width: 80px; 
 
    height: 80px; 
 
    text-align: left;   
 
    border: 1px solid black;   
 
} 
 

 
td span { 
 
    position: absolute; 
 
    bottom: 0; 
 
}
<table> 
 
    <tr> 
 
     <td> 
 
      <span>57</span> 
 
      <img src="http://placehold.it/20x20/ff6a00/ff6a00" alt="" /> 
 
      <img src="http://placehold.it/20x20/fb235e/fb235e" alt="" /> 
 
     </td> 
 
    </tr> 
 
</table>

+0

我喜歡這些顏色! +1 – 2014-09-26 21:58:37

+0

您的解決方案的好處是它不依賴於兩個圖標圖像的尺寸。在「span」中包裝數字對於獲得對設計的大量控制是一個小的代價。 – 2014-09-26 22:06:56

+0

[查看我的答案,一個簡單而優雅的解決方案,以完全消除不必要的'span'元素的數量。](http://stackoverflow.com/a/26068984/1729885) – 2014-09-26 22:09:34

0

既然你指定的圖標(20×20)的尺寸做到這一點無需額外加價

的一種方式,你可以利用該 和使用nth-child選擇器將兩個圖標放置在表格單元格的左上角。

但是,您需要根據.soldier中給出的尺寸 將left偏移量設置爲特定值。

td { 
 
    width: 80px; 
 
    height: 80px; 
 
    text-align: left; 
 
    vertical-align: bottom; 
 
    border: 1px solid black; 
 
    position: relative; 
 
} 
 
.soldiers { 
 
    width: 20px; 
 
    height: 20px; 
 
    display: inline-block; 
 
    margin-right: 5px; 
 
    position: absolute; 
 
    top: 0; 
 
} 
 
img:nth-child(1) { 
 
    left: 0; 
 
} 
 
img:nth-child(2) { 
 
    left: 25px; 
 
}
<table> 
 
    <tr> 
 
    <td class="oddCellBorder" row="0" col="0"> 
 
     57 
 
     <img src="http://placehold.it/10x10" class="soldiers"> 
 
     <img src="http://placehold.it/10x10" class="soldiers"> 
 
    </td> 
 
    <td class="evenCellBorder" row="0" col="1">58</td> 
 
    <td class="oddCellBorder" row="0" col="2">59</td> 
 
    <td class="evenCellBorder" row="0" col="3">60</td> 
 
    <td class="oddCellBorder" row="0" col="4">61</td> 
 
    <td class="evenCellBorder" row="0" col="5">62</td> 
 
    <td class="oddCellBorder" row="0" col="6">63</td> 
 
    <td class="evenCellBorder" row="0" col="7">64</td> 
 
    </tr> 
 
</table>

2

您正在使用太多的代碼。使用CSS counters你可以使這個問題變得微不足道。

See this demonstration fiddle。我使用JS完全生成板,允許您在一個數組中使用它,然後使用CSS計數器(universally supported)和pseudo elements將這些數字放入絕對位置。

對於背景着色我使用瑣碎的嵌套nth-child選擇器。然後,將vertical-align:top應用於單元格,讓流程完成這項工作 - 我在此使用文本內容,但圖像的流動性與它們的內嵌內容相同。

所有需要的CSS:

table { 
    counter-reset:number 65; 
} 
td { 
    border:1px solid black; 
    counter-increment:number -1; 
    width:64px; 
    height:64px; 
    position:relative; 
    vertical-align:top; 
} 
tr:nth-child(odd) td:nth-child(even), tr:nth-child(even) td:nth-child(odd) { 
    background:#aaf; 
} 
td:after { 
    content:counter(number); 
    position:absolute; 
    bottom:0; 
    left:0; 
} 

Sample linked again here to be sure you don't miss it

+1

+1,用於從棋盤上切下每盎司的脂肪:) – 2014-09-26 22:26:16

相關問題