Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: rowspan и размер ячейки
 
 автор: ronin   (05.11.2007 в 15:35)   письмо автору
 
 

здравствуйте!
у меня проблема: существует таблицы, в ней слева две ячейки, а справа одна ячейка с роуспан=2, при этом первые две ячейки имеют равную высоту, а мне нужно, чтобы верхняя была 20 пикселей, а нижняя динамически именялась от разморов картинки.

   
 
 автор: sim5   (05.11.2007 в 15:52)   письмо автору
 
   для: ronin   (05.11.2007 в 15:35)
 

Она и будет изменяться в зависимости от картинки.

   
 
 автор: ronin   (05.11.2007 в 16:13)   письмо автору
 
   для: sim5   (05.11.2007 в 15:52)
 

извиняюсь - непрвильно написал: нижняя ячейка изменяется от картинки, которая в ячеке с роуспеном

<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td height=20 class=tenleftend>&nbsp;</td>
<td rowspan=2 class=foto>
<?
тут код пхп
?>

 </td>
  </tr>
 <tr>
  <td width=20 class=tenleft>&nbsp;</td>хотелось бы эту ячейку сделать резиновой
 </tr>
  <tr>
 <td class=tencorner>&nbsp;</td>
<td  class=tenbottom>&nbsp;</td>


</tr></table>

   
 
 автор: ronin   (05.11.2007 в 16:50)   письмо автору
 
   для: ronin   (05.11.2007 в 16:13)
 

тут на форуме нашел неплохую ссылку
http://theshapeofdays.com/2005/11/29/my-contribution-to-the-css-shadow-kerfuffle.html
, в принципе подходит, но как все таки решить мою задачу. прилагаю эскиз.

   
 
 автор: sim5   (05.11.2007 в 16:56)   письмо автору
 
   для: ronin   (05.11.2007 в 16:13)
 

В IE пока ваши левые ячейки будут пусты, они будут иметь одинковую высоту, если задать им размер явно, все будет так ка вы хотите:


<table border=1 cellspacing=0 cellpadding=0> 
 <tr> 
  <td height="20" class=tenleftend>20</td> 
  <td rowspan=2 class=foto><img src="image.jpg" width="200" height="100"></td> 
 </tr> 
 <tr> 
  <td height="<?=$imgHgt 20;?>" class=tenleft>180</td> 
 </tr> 
</table>

   
 
 автор: ronin   (05.11.2007 в 17:22)   письмо автору
 
   для: sim5   (05.11.2007 в 16:56)
 

если честно то я не понял, не могли бы более подробно

<img src="image.jpg" width="200" height="100">

тут на самом деле код пхп, где размер по горизонтале всегда 100 px, а по вертикали от 20 до 100 пикселей

   
 
 автор: sim5   (05.11.2007 в 17:26)   письмо автору
 
   для: ronin   (05.11.2007 в 17:22)
 

Это просто как пример, я ведь не предлагаю вам такую картинку :) Вы же на стороне сервера вставляете картинку в ячейку, а значит не сложно получить ее размер по высоте. Затем отнять от него 20 и узнать высоту нижней левой ячейки. Читайте о функции getimagesize().

   
 
 автор: ronin   (05.11.2007 в 18:27)   письмо автору
 
   для: sim5   (05.11.2007 в 17:26)
 

прилагаю код превьющки: (он идет как файл imgresize.php)

<?php

$filename 
$_GET['file'];
resizeimg($filename100,100);

function 
resizeimg($filename$w$h)
 {

 
$filename $filename;

 
$ratio $w/$h;

 
$size_img getimagesize($filename);

 if ((
$size_img[0]<$w) && ($size_img[1]<$h)) return true;

 
$src_ratio=$size_img[0]/$size_img[1];



 if (
$ratio<$src_ratio)
  {
  
$h $w/$src_ratio;
  } else
  {
  
$w $h*$src_ratio+1;
  }

 
$dest_img imagecreatetruecolor($w$h);
 
$white imagecolorallocate($dest_img255255255);
 if (
$size_img[2]==2)  $src_img imagecreatefromjpeg($filename);
 elseif (
$size_img[2]==1$src_img imagecreatefromgif($filename);
 elseif (
$size_img[2]==3$src_img imagecreatefrompng($filename);
  
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);
 
 if (
$size_img[2]==2) {header('Content-type: image/jpg'); imagejpeg($dest_img);}
 elseif (
$size_img[2]==1) {header('Content-type: image/gif'); imagegif($dest_img);}
 elseif (
$size_img[2]==3) {header('Content-type: image/png'); imagepng($dest_img);}
 
 
imagedestroy($dest_img);
 
imagedestroy($src_img);
 return 
true;
 }

?>

и код в таблице:

<td rowspan=2 class=foto>
<?
echo "<img src=imgresize.php?file=".$postrow[img]." alt=".$postrow[img_description]."/>";?>
 </td>

   
 
 автор: sim5   (05.11.2007 в 19:14)   письмо автору
 
   для: ronin   (05.11.2007 в 18:27)
 

У вас пользовательская функция изменяет размер изображения, поэтому чтобы получить размеры изображения придется изменить функцию так, чтобы вычисление нового размера изображения происходило в отельной функции, и возвращало эти значения.
А что у вас будет в левых ячейках, может быть можно иначе решить вопрос?

   
 
 автор: ronin   (05.11.2007 в 19:38)   письмо автору
 
   для: sim5   (05.11.2007 в 19:14)
 

я пошел другим путем, на этом сайте нашел ссылку, где все на дивах:

<div class="shadow"><? echo "<div class=img><img src=\"imgresize25.php?file=".$postrow["img"]."\" alt=\"".$postrow["img_description"]."\"></div>"?><div class="topleft"></div><div class="topright"></div><div class="bottomleft"></div><div class="bottomright"></div></div>
<br class="clear" />

ВСЕ дивы в одну линию:)
и файл css:

body {
  background: white;
  margin: 30px;
}

br.clear {
  clear: both;
  height: 0;
  line-height: 0px;
}

div.shadow {
  float: left;
  padding: 0 1px;
  background: #bfbfbf;
  border-left: 1px solid #eaeaea;
  border-right: 1px solid #eaeaea;
  position: relative;
}

div.shadow div.img {
  padding: 5px 5px 9px 5px;
  background: white url(../shad_bottom.png) repeat-x bottom left;
}

div.shadow div.topleft {
  width: 2px;
  height: 4px;
  background: url(../img/shad_tlcorner.png) no-repeat top left;
  position: absolute;
  top: 0px;
  left: -1px;
}

div.shadow div.topright {
  width: 2px;
  height: 4px;
  background: url(../img/shad_trcorner.png) no-repeat top right;
  position: absolute;
  top: 0px;
  right: -1px;
}

div.shadow div.bottomleft {
  width: 4px;
  height: 4px;
  background: url(../img/shad_blcorner.png) no-repeat bottom left;
  position: absolute;
  bottom: 0px;
  left: -1px;
}

div.shadow div.bottomright {
  width: 4px;
  height: 4px;
  background: url(../img/shad_brcorner.png) no-repeat bottom right;
  position: absolute;
  bottom: 0px;
  right: -1px;
}

файлы png прилагаются:

   
 
 автор: ronin   (05.11.2007 в 19:42)   письмо автору
 
   для: ronin   (05.11.2007 в 19:38)
 

Но мне хотель найти решение с rowspan, так как я понял, это крепкий орешек, неужели AlexSol пройдет мимо такой темы?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования