Позиционирование слоя
Как установить позицию слоя относительно ячейки (или края) таблицы? По умолчанию позиция задана относительно левого края экрана.
align=...
А вообще мой совет, используйте редактор быстрого создания сайтов. Он всегда подскажет какой тег где нужно вставить.
align=...
А вообще мой совет, используйте редактор быстрого создания сайтов. Он всегда подскажет какой тег где нужно вставить.
Это, конечно все очень познавательно, но я не совсем понял вашу подсказку.
У меня есть слой:
height:103px; z-index:1"></div>
И есть таблица, выровненная по центру:
<tr>
<td></td>
<td></td><td></td><td></td>
</tr>
</table>
Суть вопроса: как задать позицию слоя, например, относительно первой ячейки?
Как установить позицию слоя относительно ячейки (или края) таблицы? По умолчанию позиция задана относительно левого края экрана.
Можно использовать следующую конструкцию:
<div style="position:relative; left:50; top:50">Мама мыла раму</div>
Если нужно, чтобы слой был позиционирован относительно таблицы, необходимо разместить тэг <div>...</div> сразу после закрывающего тэга </table>.
Насчет позиционирования относительно ячейки я не уверен, но мне кажется, что если разместить тэг <div>...</div> внутри самой таблицы, то есть между <td> и </td>, все должно получиться. Чтобы избавиться от лишних перескоков строк надо использовать вместо <div> <span>.
Можно использовать следующую конструкцию:
<div style="position:relative; left:50; top:50">Мама мыла раму</div>
Если нужно, чтобы слой был позиционирован относительно таблицы, необходимо разместить тэг <div>...</div> сразу после закрывающего тэга </table>.
Насчет позиционирования относительно ячейки я не уверен, но мне кажется, что если разместить тэг <div>...</div> внутри самой таблицы, то есть между <td> и </td>, все должно получиться. Чтобы избавиться от лишних перескоков строк надо использовать вместо <div> <span>.
Не привело к результату, это естественно:
<tr>
<td></td><td></td><td></td>
</tr>
</table>
<div style="position:RELATIVE; left:10; top:10; width:222px;
height:103px; background-color: #CCCCCC;"></div>
Не привело к результату, это естественно:
<tr>
<td></td><td></td><td></td>
</tr>
</table>
<div style="position:RELATIVE; left:10; top:10; width:222px;
height:103px; background-color: #CCCCCC;"></div>
Тогда так:
<tr>
<td></td><td></td><td></td>
</tr>
<div style="position:RELATIVE; left:10; top:10; width:222px;
height:103px; background-color: #CCCCCC;"></div>
</table>
У себя проверил - работает.
Тогда так:
<tr>
<td></td><td></td><td></td>
</tr>
<div style="position:RELATIVE; left:10; top:10; width:222px;
height:103px; background-color: #CCCCCC;"></div>
</table>
У себя проверил - работает.
Позиционирование работает, спасибо, а вот слой смещает таблицу, как это запретить?
align="center" cellpadding="0" cellspacing="0" bordercolor="#000033" bgcolor="#CCCCCC">
<tr>
<td> </td><td> </td><td> </td>
</tr>
<div style="position:RELATIVE; left:0px; top:0px;width:222px;
height:103px; background-color: #666666; z-index:10;"></div>
</table>
Позиционирование работает, спасибо, а вот слой смещает таблицу, как это запретить?
align="center" cellpadding="0" cellspacing="0" bordercolor="#000033" bgcolor="#CCCCCC">
<tr>
<td> </td><td> </td><td> </td>
</tr>
<div style="position:RELATIVE; left:0px; top:0px;width:222px;
height:103px; background-color: #666666; z-index:10;"></div>
</table>
Можно сделать так:
<tr><td><div style="position:RELATIVE; left:0px; top:0px; width:222px; height:103px; background-color:#666666; z-index:10"></div></td><td></td><td></td></tr></table>
То есть поместить слой между <td> и </td>.
В этом случае размер ячейки нельзя установить меньше чем размер слоя, как избежать этот момент?
<tr>
<td><div style="position:RELATIVE; left:0px; top:70px; width:100px; height:100px; background-color:#666666; z-index:10"></div></td>
<td></td>
<td></td>
</tr>
</table>
Аntоn
В этом случае размер ячейки нельзя установить меньше чем размер слоя, как избежать этот момент?
<tr>
<td><div style="position:RELATIVE; left:0px; top:70px; width:100px; height:100px; background-color:#666666; z-index:10"></div></td>
<td></td>
<td></td>
</tr>
</table>
Тогда в голову приходит только использование java script:
определить коодринаты таблицы, к которой нужно привязать слой, и задать абсолютные координаты этого слоя с учетом найденных координат. При этом сам слой нужно поместить вне таблицы.
Наверняка есть способ проще, но мне он неизвестен.
Можно вообще получать разрешение экрана и менять абсолютные координаты слоя, но мне этот способ кажется не самым рациональным.
Ваш способ не пройдет, т.к. при смене разршения экрана координаты таблицы меняются.
Нужно придумать что-то другое :???:
Собственно, поэтому я и создал тему в разделе программирования :)
Можно вообще получать разрешение экрана и менять абсолютные координаты слоя, но мне этот способ кажется не самым рациональным.
Ваш способ не пройдет, т.к. при смене разршения экрана координаты таблицы меняються.
Нужно придумать что-то другое :@@@:
Можно запускать функцию позиционирования слоя на событие onResize - тогда координаты слоя будут пересчитываться.
Можно запускать функцию позиционирования слоя на событие onResize - тогда координаты слоя будут пересчитываться.
Как работает onResize? Это событие связанно с измением размера окна браузера?
Как работает onResize? Это событие связанно с измением размера окна браузера?
function Your_function()
{
//Текст
}
</script>
<body onResize="java script: Your_function()">
</body>
При любом изменении размеров окна будет выполняться Your_function().
function Your_function()
{
//Текст
}
</script>
<body onResize="java script: Your_function()">
</body>
При любом изменении размеров окна будет выполняться Your_function().
А как я могу отследить размер окна (ширину)?
А как я могу отследить размер окна (ширину)?
document.body.clientWidth
Тогда в голову приходит только использование java script:
...
Наверняка есть способ проще, но мне он неизвестен.
Проще будет использовать еще один блок, выведеный из нормального потока с помощью position: absolute без указания смещения (top, right...), тогда и JS не понадобится.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<style type="text/css">
html, body {
margin: 0;
padding: 0;
width: 100%;
}
#t {
width: 50%;
margin: 0 auto;
padding: 0;
border-collapse: collapse;
border-spacing: 1px;
border: solid 2px red;
}
#t td {
border: solid 1px red;
text-align: center;
}
/* Ячейка таблицы, содержащая блок */
.cntcell {
text-align: left !important;
vertical-align: top;
}
/* Блок с абсолютным позиционированием для вывода из нормального потока */
.cntdiv {
display: block;
position: absolute;
}
/* Блок с относительным позиционированием */
.cntdiv1 {
position:relative;
left: 5px;
top: 5px;
width:222px;
height:103px;
background-color: #ccc;
}
</style>
</head>
<body>
<table id="t" width="50%">
<tr>
<td class="cntcell">
<div class="cntdiv">
<div class="cntdiv1">Див</div>
</div>
</td><td>2</td><td>3</td>
</tr>
<tr>
<td>1</td><td>2</td><td>3</td>
</tr>
<tr>
<td>1</td><td>2</td><td>3</td>
</tr>
<tr>
<td>1</td><td>2</td><td>3</td>
</tr>
</table>
</body>
</html>