2014-08-25 4 views
0

Как я могу идеально выровнять текст в верхней части ячейки таблицы? Совершенно верно, я имею в виду, что верхняя часть букв касается границы ячейки таблицы.Идеально выровнять текст в верхней части ячейки таблицы

Дополнительная сложность в моем случае заключается в том, что мне нужно использовать высоту линии (примерно в два раза больше высоты шрифта). В результате между вершинами букв и границей ячеек имеется значительное пространство, потому что разница между высотой шрифта и высотой линии распределяется одинаково как сверху, так и внизу текста (так называемый half-leading).

У меня есть JSFiddle.

<table> 
    <tbody> 
     <tr> 
      <td>&nbsp;</td> 
      <td>NOT PROPERLY ALIGNED TO THE TOP</td> 
     </tr> 
    </tbody> 
</table> 

table { 
    width: 100%; 
    table-layout: fixed; 
    border-collapse: collapse; 
    padding: 0; 
    margin: 0; 
} 
td { 
    height: 200px; 
    vertical-align: top; 
    font-size: 18px; 
    line-height: 40px; 
    border: solid 1px black; 
    background-color: #ddd;  
} 
+0

Как если вы забыли о 'линии высоты 'и ввести верхнюю и нижнюю прокладку (внизу только для' td', который вы ищете)? –

+0

Непонятно, чего вы пытаетесь достичь. –

+0

Выглядит так: http://jsfiddle.net/njwtk1rk/9/ –

ответ

1

Как насчет упаковки нужного текста в некоторых пролетах и ​​добавить отрицательное положение/запас, как

span { 
position: relative; 
top: -12px; 
} 

Fiddle

Но для хорошей читаемости, вы бы лучше не надо удалите место на верху (imho) Look, enter image description here Текст на левой стороне выглядит лучше.

+0

Как и ответ Габриэля. Опять же, мне нужно знать высоту шрифта для вычисления поля.К сожалению, атрибут семейства шрифтов указывает список шрифтов, а шрифты имеют разную высоту. Поэтому результат будет только приблизительным. – Codo

+0

В действительности нет цветного фона и границы. Вместо этого есть элементы, такие как изображения в других ячейках в одной и той же таблице строк. И цель состоит в том, чтобы хорошо согласовать ее с этими элементами. Но технически это одна и та же проблема. – Codo

1

Если вы изменили HTML для:

<table> 
    <tbody> 
     <tr> 
      <td>&nbsp;</td> 
      <td><span>NOT PROPERLY ALIGNED TO THE TOP</span></td> 
     </tr> 
    </tbody> 
</table> 

добавление <span> тегов Тогда вы можете пойти:

td span { 
    margin-top: -15px; 
} 

Надеется, что это помогает

+0

Неплохо. Но мне нужно знать высоту шрифта для вычисления поля. К сожалению, атрибут семейства шрифтов указывает список шрифтов, а шрифты имеют разную высоту. Поэтому результат будет только приблизительным. – Codo

+0

Я не работаю. Я думаю, что CSS отсутствует 'display: inline-block;'. – Codo

1

Demo

Проблема из-за line-height

Вы можете изменить высоту строки первой строки, используя селектор :first-line как

td:first-line { 
    line-height: 10px;  
} 
+0

Выглядит очень интересно. Однако полупривод не только удаляется сверху, но и под текстом. Следовательно, расстояние между первой и второй линиями и расстояние между другими парами линий различны. См. [JSFiddle] (http://jsfiddle.net/njwtk1rk/29/). – Codo

1

У меня есть решение, но оно идет с JS, а не чистого CSS только ,

HTML (добавлен 'поверочного' метки внутри 'тд'):

<table> 
    <tbody> 
     <tr> 
      <td>&nbsp;</td> 
      <td> 
       <span id="myText">PROPERLY ALIGNED TO THE TOP</span> 
      </td> 
     </tr> 
    </tbody> 
</table> 

JS:

$(document).ready(function(){ 
    var span  = $("#myText"); 
    var lineHeight = parseInt(span.css("line-height")); 
    var fontSize = parseInt(span.css("font-size")); 
    var shift  = (lineHeight-fontSize)/2; 
    var shiftPx = "-"+shift+"px"; 

    //alert(lineHeight); 
    //alert(fontSize); 

    span.css({ 
     "position":"relative", 
     "top":shiftPx 
    }); 
}); 

Полный jsfiddle: http://jsfiddle.net/jondinham/p8g1cx6b/

+1

Спасибо, очень интересно. Мне нравится подход, хотя он включает Javascript. Однако решение также не является идеальным. Между границей и вершиной букв все еще существует разрыв. Я думаю, это потому, что высота подъема выше, чем типичная высота крышки. – Codo

Смежные вопросы