Как центрировать мой div в таблице с помощью CSS? - PullRequest
5 голосов
/ 25 июня 2009

Я пытаюсь добавить слайд-шоу на один из моих сайтов. Вся страница выложена в HTML-таблицу (которую я страстно ненавижу и не выбрал). Я хочу сосредоточить свое слайд-шоу внутри этой патикульной колонны. Вот как выглядит мой CSS:

#slideshow {
position:relative;
}

#slideshow IMG {
position:absolute;
z-index:8;
opacity:0.0;
}

#slideshow IMG.active {
z-index:10;
opacity:1.0;
}

#slideshow IMG.last-active {
z-index:9;
}

Вот моя функция JQuery для изменения изображений:

function slideSwitch() {
var $active = $('#slideshow IMG.active');

if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

// use this to pull the images in the order they appear in the markup
var $next =  $active.next().length ? $active.next()
    : $('#slideshow IMG:first');

$active.addClass('last-active');

$next.css({opacity: 0.0})
    .addClass('active')
    .animate({opacity: 1.0}, 1000, function() {
        $active.removeClass('active last-active');
    });
}

$(function() {
    setInterval( "slideSwitch()", 5000 );
});

И, наконец, вот слайд-шоу внутри таблицы:

<td bgcolor="red" align="center" valign="top"> 
<div id="slideshow">
    <img src="2009Slideshow\1.jpg" alt="Slideshow Image 1" class="active" />
    <img src="2009Slideshow\2.jpg" alt="Slideshow Image 2" />
    <img src="2009Slideshow\3.jpg" alt="Slideshow Image 3" />
    etc...
    etc...
</div>                    
</td> 

Так почему я не могу поместить свое слайд-шоу в центр этой колонки?

Ответы [ 6 ]

15 голосов
/ 25 июня 2009

Встроенные элементы могут быть легко отцентрированы с помощью свойства css "text-align: center;". Элементы блока должны быть выровнены по центру с помощью «margin-left: auto; margin-right: auto;» и давая им фиксированную ширину. В вашем конкретном случае я бы предложил использовать span вместо "div" или полностью избавиться от div и использовать метод выравнивания текста.

Обновление

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">     
    <head>      
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   
        <title>Centering</title>
    <style type="text/css">
      table{
       border:1px solid black; 
      }
      span{
        background-color:red; 
        color:white;       
      } 
      td{
        text-align:center;
        width:200px; 
      }
    </style>
  </head>
  <body>
    <div class="item" id="item1">
      <table>
        <tr>
          <td>
            <span>Hi there!</span>  
          </td>
        </tr>        
      </table>
    </div>    
    </body>
</html> 
5 голосов
/ 25 июня 2009
#slideshow {
margin: 0 auto;
}

and also text-align: center

для стола

1 голос
/ 12 августа 2009

Следующее решение работает, даже если вы не знаете размер изображения:

высота: 100px; ширина: 100px; отображение: ячейка таблицы; выравнивание текста: центр; выравнивание по вертикали: среднее; ">
image

0 голосов
/ 25 июня 2009

стандарт

 div#slideshow {
    margin : 0 auto;
    width : 200px;
}

а для (старого?) Т.е.

td {
    text-align : center;
}

т.е. не "любит" авто поля но центрирует не только встроенные элементы, но и блочные элементы (div)

также не уверен, что является стандартным значением свойства display для td, т. Е. Потому что он не использует table-cell и text-align не будет работать внутри встроенных элементов, поэтому другим возможным подходом будет заключить его в другое div: 1009 *

<td>
<div id="slideshow_container">
<div id="slideshow">
...
</div>
</div>
</td>

и css

div#slideshow {
    margin : 0 auto;
    width : 200px;
}
div#slideshow_container {
    text-align : center;
    width : 100%;
    height : 100%;
}
0 голосов
/ 25 июня 2009

Если вы можете удалить абсолютное позиционирование, используйте text-align: center на td.

Если вы не можете удалить абсолютное позиционирование и все ваши изображения имеют одинаковый размер, установите влево значение td / 2 - img_width / 2. Таким образом, если бы у вас было изображение шириной 80px с td шириной 200px, вы бы использовали

#slideshow img {position:absolute; left:60px; opacity:0; z-index:8;}

Если вы не можете удалить абсолютное позиционирование и ваши изображения имеют разные размеры, вам придется вычислить левое значение в вашем JavaScript.

IE не поддерживает прозрачность. Вместо него используется filter: alpha(opacity = 50);.

0 голосов
/ 25 июня 2009

Я бы добавил комментарий выше, но у меня нет 50 представителей. Кажется, я помню, что если у вас есть что-нибудь перед doctype в IE6, оно отправляет его в режим причуд. Это может вызывать проблемы

<?xml version='1.0' encoding='UTF-8'?>

Может быть стоит убрать это.

...