Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> css table tr bottom приклеить внизу, приклеить к низу строки 
V
    Опции темы
Сisa
Дата 21.9.2014, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



(css такой темный лес... Читаешь книжку, там одно, а на практике получаются только примитивные примеры из книжек, а если чуть сложнее задача, то и гугл не в помощь! и даже в сети нет решения)

Таблицу нарисовал. Пара колонок <td>, пара строк <tr>.
В левой колонке текст всегда вверху, такое у меня уже есть.
Проблема с вертикальным выравниванием трех блоков в правой колонке.

В правой колонке в каждой строке должно быть три части:
- одна часть должна быть всегда верхняя,  это всегда одна строка.
- вторая, от 0 до несколько строк, должна идти сразу за верхней строкой, т.е. тоже прижата вверх.
- третья же часть это одна строка, которая всегда должна быть в нижней части каждой строки <tr>.
  
 Если в левой колонке мало текста, то все нормально, те. правая колонка выравнивается так как и хотел.
 Но если левая колонка имеет в строке много строчек текста, а в правой мало, то
в правой колонке две части прижимаются вверх, а вот третью никак не могу прижать вниз:

Код

table {width: 100%;}
.col1 {width: 70px;vertical-align: top;}
td     {vertical-align: top;}
.foter{text-align: right;vertical-align:bottom;}

Вариации с 
table tr td{vertical-align:bottom;}
table tr td{vertical-align:top;}
что то не помогают.
Можно конечно каждую из пары строк разбить еще на пару-тройку строк, 
и тогда выравнивание будет проще, наверное, но тогда сама таблица усложняется, и скорее всего так будет неправильно. Можно как то правильно решить такую задачу?

PM MAIL   Вверх
aLEXperimentator
Дата 22.9.2014, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 18.2.2013

Репутация: нет
Всего: нет



Тут дело в том, что vertical-align : top bottom или middle работают как-то не всегда понятным образом, приходилось встречаться с тем, что ДОЛЖЕН выровнять, а не выравнивает. То ли это оттого что они всё равно рассматриваются в одном потоке, а не отдельно, то ли ещё по какой причине...

Вполне возможно, что top, middle или bottom рассматривается не как верх, середина и низ td-ячейки, а как верх, середина и низ ТЕКСТОВОГО БЛОКА, в котором сидят эти элементы?

А что если - как варианты:

1) Вместо одной строчки с тремя текстами сверху, посередине и справа - а что если сделать ТРИ строчки?
В верхней элемент позиционировать как top, в средней как middle, в нижней как bottom?

Или задать высоты как 10% 80% и снова 10%?
тогда визуально будет выглядеть что верхний элемент "прижат к верху", а нижний "прижат к низу"?

В другой же колонке "слить" эти ячейки в одну через td rowspan=3

2) Выдернуть их из видимости общего потока выравниванием float:right или float:left? Возможно после float элементы станут прижиматься к низу, как и положено?

3) Может использовать абсолютное позиционирование? Ну то есть написать явно
Код

<td>
<span style="position:absolute; top : 1mm">Верхний элемент</span>
...........
<span style="position:absolute; bottom : 1mm">Нижний элемент</span>
</td>


Посмотрите - получается?

Только учитывайте, что при абсолютном позиционировании элемент будет позиционироваться относительно своего непосредственного родителя, и наверно span должен лежать непосредственно внутри <td></td>
PM MAIL   Вверх
BaNru
Дата 22.9.2014, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 20.9.2014

Репутация: 1
Всего: 1



Сisa, ты не совсем понимаешь суть таблиц, да и вообще HTML. Перечитай ещё раз.

Решение
http://jsfiddle.net/BaNru/so8wkvuo/

Запусти Firefox, зайди в Веб-Консоль и посмотри 3D вид (может в настройка Веб-Консоли надо предварительно включить)
user posted image

Любой элемент на странице - это объект, будь-то блочный, табличный, строчный или любой другой. И его нельзя просто так взять и раскидать по странице как тебе вздумается, он всегда одно целое. Если надо разбить строку, условно говоря, в разные углы, то придется обернуть части строки в новые элементы/объекты. И уже эти объекты разносить.

В твоём случае тебе надо верх, середину и низ ячейки также разбить. Ты же сам разбил на три пункта
Цитата
В правой колонке в каждой строке должно быть три части:
- одна часть должна быть всегда верхняя,  это всегда одна строка.
- вторая, от 0 до несколько строк, должна идти сразу за верхней строкой, т.е. тоже прижата вверх.
- третья же часть это одна строка, которая всегда должна быть в нижней части каждой строки <tr>.

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

aLEXperimentator, рано ты ему про позиционирование рассказываешь. Да и наверняка там в условие будет, что "строчки" эти в третьем столбике будут тоже разной длины. И тогда при позиционирование текст может наехать на соседа.

PS Таблицы это легко. Вот когда до дивной верстки дойдешь, тогда ты будешь с радостью вспоминать времена изучения таблиц  smile 

Это сообщение отредактировал(а) BaNru - 22.9.2014, 03:34
PM MAIL   Вверх
Сisa
Дата 22.9.2014, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



aLEXperimentatorBaNru спасибо за ответы!
 Вчера наверно излишне усложнил задачу, сказав что в таблице пара строк, хотя можно вполне экспериментировать с одной табличной строкой tr.
 Что у меня получилось:
 1. Абсолютное
Код

<table>
 <tr>
  <td>aaaaaaaaa</td>
  <td>
   <div>
    <span style="position:absolute; top : 1mm">Верхний элемент 111</span>
    222 Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />    
    <span style="position:absolute; bottom : 1mm">Нижний элемент 333</span>
   </div>
  </td>
 </tr>
</table>

не то что требовалось.

2. Самое лучшее из предложенного варианта BaNru (переделанное)
Код

<table> 
 <tr>
   <td style="background:#cd9;">1 page</td>   
   <td style="background:#cd4;">текст справа верх</td>   
 </tr>  
  
 <tr>
  <td style="background:#fd4;">
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />      
      Upgrade your graphics<br />drivers to use hardware<br />acceleration and WebGL    
  </td>    
  <td style="background:#f77;vertical-align:top;">        
    текст справа средина            
  </td>
 </tr>
 
 <tr>
  <td style="background:#1f4;"></td>    
  <td style="background:#f11;">текст справа низ</td>
 </tr>
</table>

не то что хотелось бы.

3. С объединением колонок
Код

<table> 
 <tr>
   <td style="background:#cd9;" colspan="0">1 page</td>   
   <td style="background:#cd4;">текст справа верх</td>   
 </tr>  
  
 <tr>
  <td style="background:#fd4;">
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />      
      Upgrade your graphics<br />drivers to use hardware<br />acceleration and WebGL    
  </td>    
  <td style="background:#f77;vertical-align:top;">        
    текст справа средина            
  </td>
 </tr>
 
 <tr>
  <td style="background:#1f4;"></td>    
  <td style="background:#f11;">текст справа низ</td>
 </tr>
  
</table>

опять не то что хотелось бы.

4. Кстати о птичках, объединение ячеек в этой таблице какое странное
Код

<table> 
 <tr>
   <td colspan="3"    style="background:#cd9;">1 page           </td>   
   <td class="footer" style="background:#cd4;">текст справа верх</td>   
 </tr>  
  
 <tr>
  <td style="background:#fd4;">
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Upgrade your graphics<br />drivers to use hardware<br />acceleration and WebGL    
  </td>    
  <td class="footer" style="background:#f77;">        
    текст справа средина            
  </td>
 </tr>
 
 <tr>
  <td style="background:#1f4;"></td>    
  <td class="footer" style="background:#f11;">текст справа низ</td>
 </tr>
</table>

если  сказать точнее то хуже не придумать, например заменив colspan="3" на rowspan="3" !!!

5. Усложнить таблицу так вообще то задача не ставилась. 
Что мы видим даже в самом лучшем из рассмотренных вариантов? Вместо одной строки tr их уже три, причем левая колонка тоже дробится на части, что вообще не нужно. Таких tr на странице все же будет не одна а *-дцать, и эти -дцать умножить на 3 ? Простенькая задача. В тупик ставит определенно. Откроешь иногда файл стилей на каком либо сайте, а там > 5000 строк, а таких файлов к странице подключено ну просто туча! Такая вот арифметика, оттого темный лес это css. Наверно примерно так же думают и авторы браузеров, не уделяя должного внимания правилам визуального отображения информации. Я не то чтобы не совсем понимаю суть таблиц, я их вообще не понимаю! ( по книжке пишут что должно работать, на самом деле смотри примеры 2, 3, 4). А без css нельзя.

6. Вчера нашел более менее приемлемое решение, это vertical-align: top; margin: 0 0 0 60%;  для футера vertical-align:bottom;, что должен быть внизу. Но тоже не супер решение, потому что если справа текст в середине  не короткий, то после него перед футером остается свободное пустое место, совершенно не нужное в таблице, в строке. Почему не нужное? потому что строк же много, таблица  будет зиять пустотами.



PM MAIL   Вверх
baldina
Дата 22.9.2014, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



Цитата(Сisa @  22.9.2014,  17:17 Найти цитируемый пост)
Усложнить таблицу так вообще то задача не ставилась

чем-то все равно придется усложнять. раз уж таблица, делайте все табличными средствами, потом разбираться будет проще
http://jsfiddle.net/g3L7bLhv/
PM MAIL   Вверх
Сisa
Дата 22.9.2014, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Код

<table> 
 <tr>
   <td rowspan="2" class="left">
      <p>Много много текста
      <p>Много много текста
      <p>Много много текста
      <p>Много много текста
      <p>Много много текста
  </td>    
  <td>        
    <div>текст верх</div>
    <div>основной текст<br />основной текст<br />основной текст<br />основной текст</div>               
  </td> 
 </tr> 
 <tr>  
  <td class="bottom">текст низ</td>
 </tr>
</table>

Я только добавил основной текст в правой средней части. Разместить между блоками красным и синим не получилось, но зато прекрасно такой блок размещается в красной зоне.
И много текста в левой части не портит картинку.
И много текста в правой части тоже не портит картинку. 
И самый простой текст html ! 
И css всего пара строк (vertical-align:top; vertical-align:bottom;)

baldina спасибо! Это отличное решение!

Это сообщение отредактировал(а) Сisa - 22.9.2014, 18:46
PM MAIL   Вверх
baldina
Дата 22.9.2014, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



Сisa, я не понял. что мешает добавить текст в красный блок? он выровнен по верхнему краю. что мешает добавить еще одну ячейку между? на красный и желтый все это не влияет.
например
http://jsfiddle.net/v7jfotfe/

Добавлено через 6 минут и 47 секунд
так? http://jsfiddle.net/fq33sehh/

Это сообщение отредактировал(а) baldina - 22.9.2014, 18:42
PM MAIL   Вверх
Сisa
Дата 22.9.2014, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



baldina, Вы меняете мое восприятие css с диковинного на положительное.
Наверно надо все таки приложить усилия и перечитать (через не хочу) все то, от чего увиливал долгое время, потому как больше внимания уделял функциональности, т.е. js.
+++!!! http://jsfiddle.net/v7jfotfe/

PM MAIL   Вверх
Aliance
Дата 23.9.2014, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 2
Всего: 137



Цитата(Сisa @  22.9.2014,  18:17 Найти цитируемый пост)
4. Кстати о птичках, объединение ячеек в этой таблице какое странное

если  сказать точнее то хуже не придумать, например заменив colspan="3" на rowspan="3" !!!

вы путаете colspan и rowspan. в вашей разметке в пункте 4 нужно использовать второе.
PM MAIL WWW ICQ Skype   Вверх
Сisa
Дата 23.9.2014, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Код

4
<table> 
 <tr>
   <td style="background:#cd9;">1 page           </td>   
   <td class="footer" style="background:#cd4;">текст справа верх</td>   
 </tr> 
  
 <tr>
  <td style="background:#fd4;">
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Upgrade your graphics<br />drivers to use hardware<br />acceleration and WebGL    
  </td>    
  <td class="footer" style="background:#f77;">        
    текст справа средина            
  </td>
 </tr>
 
 <tr>
  <td style="background:#1f4;"></td>    
  <td class="footer" style="background:#f11;">текст справа низ</td>
 </tr>
</table><br /><br />

4.1
<table> 
 <tr>
   <td colspan="2"    style="background:#cd9;">1 page           </td>   
   <td class="footer" style="background:#cd4;">текст справа верх</td>   
 </tr>  
  
 <tr>
  <td style="background:#fd4;">
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Upgrade your graphics<br />drivers to use hardware<br />acceleration and WebGL    
  </td>    
  <td class="footer" style="background:#f77;">        
    текст справа средина            
  </td>
 </tr>
 
 <tr>
  <td style="background:#1f4;"></td>    
  <td class="footer" style="background:#f11;">текст справа низ</td>
 </tr>
</table><br /><br />


4.2
<table> 
 <tr>
   <td rowspan="3"    style="background:#cd9;">1 page           </td>   
   <td class="footer" style="background:#cd4;">текст справа верх</td>   
 </tr>  
  
 <tr>
  <td style="background:#fd4;">
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Upgrade your graphics<br />drivers to use hardware<br />acceleration and WebGL    
  </td>    
  <td class="footer" style="background:#f77;">        
    текст справа средина            
  </td>
 </tr>
 
 <tr>
  <td style="background:#1f4;"></td>    
  <td class="footer" style="background:#f11;">текст справа низ</td>
 </tr>
</table>

Смешно наверное, но заменив 
colspan="3" на rowspan="3" у меня получается именно так, что хуже уже не придумать! А по книжкам должно вроде как получиться объединение ячеек, и по строкам, по по колонкам.


PM MAIL   Вверх
baldina
Дата 23.9.2014, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



PM MAIL   Вверх
Сisa
Дата 23.9.2014, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



нее, книжки css все таки надо мне читать! 
Ну все же просто, и почему так сразу не сделать:
Код

<table>
 <tr>
   <td style="background:#cd9;" rowspan="3">1 page           
    Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />
      Много много текста<br />Много много текста<br />Много много текста<br />Много много текста<br />   
   </td>   
   <td class="footer" style="background:#cd4;">текст справа верх</td>   
 </tr> 
  
 <tr>      
  <td class="footer" style="background:#f77;">        
    текст справа средина            
  </td>
 </tr>
 
 <tr>      
  <td class="footer" style="background:#f11;">текст справа низ</td>
 </tr>
</table>



Это сообщение отредактировал(а) Сisa - 23.9.2014, 18:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0784 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.