Как центрировать текст поверх изображения в таблице, используя JavaScript, CSS и / или HTML? - PullRequest
1 голос
/ 18 сентября 2008

Как центрировать текст поверх изображения в ячейке таблицы, используя javascript, css и / или html?

У меня есть HTML-таблица с изображениями одинакового размера, и я хочу расположить текстовую метку над каждым изображением. Текст на этикетках может отличаться по размеру. Горизонтальное центрирование не сложно, но вертикальное центрирование.

ADDENDUM: мне пришлось использовать javascript для надежного центрирования текста, используя div фиксированного размера с абсолютным позиционированием; я просто не мог заставить его работать другим способом

Ответы [ 5 ]

11 голосов
/ 18 сентября 2008

Вы можете попробовать поместить изображения на задний план.

<table>
    <tr>
        <td style="background: url(myImg.jpg) no-repeat; vertical-align: middle; text-align: center">
            Here is my text
        </td>
    </tr>
</table>

Вам просто нужно установить высоту и ширину ячейки, и это должно быть.

1 голос
/ 19 сентября 2008

Нет правильного способа сделать это в CSS (хотя должен быть). Но вот метод, который работает для меня.

CSS:

#image1, #image1-text, #image1-container {
  overflow: hidden;
  height: 100px;
  width: 100px;
}

#image1 {
  top: -100px;
  position: relative;
  z-index: -1;
}

#image1-text {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
}

HTML:

  <div id="image1-container">
    <img src="image.jpeg" id="image1">
    <div id="image1-text">
      hello
    </div>
  </div>

Порядок image1 и image1-text в контейнере не имеет значения.

Это что-то вроде хака, но оно работает где угодно, не только в таблице. Однако он не работает должным образом в IE. Вместо этого он будет отображаться сверху. Но это работает в FF, Safari и Chrome. Не проверялось в IE8.

Хак для IE7 или менее, который будет показывать только 1 строку, но он будет центрирован, добавит следующее внутри тега <head>:

<!--[if lte IE 7]>
<style>
  #image1-text {
    line-height: 100px;
  }
</style>
<![endif]--> 
0 голосов
/ 13 ноября 2008

спасибо всем за предложения.

мне пришлось использовать javascript для надежного центрирования текста, используя div фиксированного размера с абсолютным позиционированием; я просто не мог заставить его работать другим способом.

Мне также нужно было сгенерировать текстовые div с скрытой видимостью и иметь цикл javascript в конце страницы, чтобы сделать их видимыми и поместить их в соответствующую ячейку таблицы

есть некоторые серьезные пробелы в возможностях компоновки css / html, надеюсь, они будут устранены в будущих версиях; -)

0 голосов
/ 18 сентября 2008

Вы можете использовать опцию TD "valign", и это может быть top, bottom или center ... Но, насколько я знаю, по умолчанию содержимое ячеек центрируется по вертикали, поэтому, вероятно, ваш CSS отображает их с параметром bottom или top.

<TABLE><TR valign=center>
  <TD align=center background="some image"> image label </TD>
</TR></TABLE>
0 голосов
/ 18 сентября 2008

Я бы установил изображения в качестве фона ячеек с помощью CSS, установил для размера ячеек правильное фиксированное значение (снова через CSS), а затем вставил бы текстовую метку в качестве содержимого ячейки. По умолчанию содержимое ячеек таблицы центрируется по вертикали, поэтому я думаю, вам не нужно об этом беспокоиться. Опять же, вертикальное и горизонтальное выравнивание может быть легко установлено с помощью CSS. Этот подход работает, потому что я применял его много раз.

Другим способом было бы вставить изображение и текст в ячейки таблицы, обернуть текст в элемент DIV и поиграть с его свойствами CSS (относительное положение и поля), но, на мой взгляд, это немного сложно. 1003 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...