Jump to content
  • 0

table - как избавиться от уменьшения ширины таблицы при уменьшении размера родит. элемента?


eugen35
 Share

Question

Вот ссылка на мой код, где можно всё попробовать:

http://jsfiddle.net/KT5TC/1/

 

Менять ширину элемента можно, наведя мышь на правый его край, далее - зажимаете левую кнопку мыши и меняете размер элемента.

 

1. Попробуйте уменьшить размер внешнего div (двойная рамка) меньше ширины таблицы - таблица начнёт сжиматься.

 

Тот же эффект Вы достигнете если просто будете уменьшать размер окна браузера.

 

2. Попробуйте увеличить размер СТОЛБЦА таблицы (хочу менять именно ширину столбцов и чтобы край таблицы при этом менялся автоматически - для таблицы я не задаю WIDTH). Если Вы увеличиваете его так, что край таблицы достигает края внешнего div, то ширина столбца начинает увеличиваться, а таблица пытается остаться на странице полностью, уменьшая ширину других столбцов).

 

3. Примечательно, что розовый div ведёт себя вполне корректно - если все те же действия применить к нему.

http://jsfiddle.net/KT5TC/    - здесь розовый див шире таблицы, чтобы Вы увидели его поведение.

 

ВОПРОС: МНЕ ОЧЕНЬ НУЖНО ЧТОБЫ ТАБЛИЦА ВЕЛА СЕБЯ КАК РОЗОВЫЙ ДИВ В ОБОИХ СЛУЧАЯХ! А именно если она по АВТОМАТИЧЕСКОЙ ширине должна стать больше родительского элемента - чтобы становилась и при этом становилась активной полоса прокрутки. И НЕ ИСПОЛЬЗОВАТЬ ДЛЯ ЭТОГО ДОПОЛНЕНИЯ В JS-коде!

Можно ли вообще это сделать вёрсткой (css + html)?

 

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Спасибо,Switch74 огромное! Изящно)

 

Правда, при этом ответ на вопрос 2 всё ещё не работает (

http://jsfiddle.net/KT5TC/8/

Потащите розовый див вправо за границу внешнего дива, - он станет шире внешнего дива и полосу прокрутки активирует.

Потащите любой из столбцов вправо - они дойдут до границы, а дальше нет ((

 

Мне нужно чтобы талица вела и в вопросе 2 нормально.

 

И ещё оказалось, что: 1. увеличиваем столбец - ок. 2. уменьшаем внешний div - столбец всё равно уменьшается, только не так страшно как раньше. Мне нужно, чтобы столбец вообще не уменьшался при уменьшении ширины родителя

Edited by eugen35
Link to comment
Share on other sites

  • 0

для второго вопрпоса думаю вам понадобится сделать скрипт, при котором будет задавать размер таблице исходя из суммы ее столбцов.

При изменении размера ячейки устанавливать размер таблицы.

Link to comment
Share on other sites

  • 0

для второго вопрпоса думаю вам понадобится сделать скрипт, при котором будет задавать размер таблице исходя из суммы ее столбцов.

При изменении размера ячейки устанавливать размер таблицы.

Программно то я мог бы поменять ширину таблицы вместе с шириной столбца... Но мне кажется это не айс. Раз таблица может автоопределять свою ширину из ширины столбцов - вот бы этим воспользоваться? ТОЛЬКО ВОТ ЗАЧЕМ ОНА ПЫТАЕТСЯ ПОДСТРОИТЬСЯ ПОД РАЗМЕР ЭКРАНА И КАК ЭТО ОТМЕНИТЬ? Ума не приложу!? (

 

Она же итак меняет свою ширину при изменении размеров столбцов, если ширина таблицы не указана...

Edited by eugen35
Link to comment
Share on other sites

  • 0

таблица обрабатывает размеры не так как обычный див.

думаю без скрипта вам не удастся заставить работать таблицу иначе

у нее видимо max-width:auto; соответствует max-width:100%, растянуть ее больше размера родителя может только не переносимая строка:

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

Link to comment
Share on other sites

  • 0

таблица обрабатывает размеры не так как обычный див.

думаю без скрипта вам не удастся заставить работать таблицу иначе

у нее видимо max-width:auto; соответствует max-width:100%, растянуть ее больше размера родителя может только не переносимая строка:

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

пасибо. вам. пока остановлюсь на таком решении - смотрите второй столбец (там резайсабле див внутри ячейки) - такое поведение меня полностью устраивает. Хотя изначально хотел избежать неосмысмленных фиксов в вёрстке (

http://jsfiddle.net/KT5TC/12/

Link to comment
Share on other sites

  • 0

придумал еще такое решение:

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

 

white-space: nowrap; можно убрать или использовать только на заголовках

Edited by Switch74
Link to comment
Share on other sites

  • 0

придумал еще такое решение:

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

 

white-space: nowrap; можно убрать

угу... в сообщении выше именно такой пример вам и привёл (http://jsfiddle.net/KT5TC/12/). просто вставил див в заголовок второго столбца пока - увидел результат положительный и дальше не стал править

Edited by eugen35
Link to comment
Share on other sites

  • 0
А это: http://htmlbook.ru/css/table-layout не поможет найти решение...
  нет
table-layout: fixed; только для ускорения загрузки таблицы будет работать. При изменении окна таблица всё равно будет сжиматься.
Link to comment
Share on other sites

  • 0

для того что бы дочерняя таблица не реагировала на ширину родителя, требуется задат ей ширину.

реализовать это можно как через css так и js. других вариантов нет, так как логика рендеринга страницы опирается на стандарты.

Link to comment
Share on other sites

  • 0

В общем тут с учётом комментов с ещё одного форума получилось вот что: http://jsfiddle.net/KT5TC/15/.  Вместо width в скрипте стал работать с min-width и max-width одновременно. Вообще-то я не хотел модифицировать скрипт, чтобы он был универсальным.. Но в таком варианте он вроде бы и остался универсальным. И при этом нет лишних дивов внутри таблицы!

Link to comment
Share on other sites

  • 0

В общем тут с учётом комментов с ещё одного форума получилось вот что: http://jsfiddle.net/KT5TC/15/.  Вместо width в скрипте стал работать с min-width и max-width одновременно. Вообще-то я не хотел модифицировать скрипт, чтобы он был универсальным.. Но в таком варианте он вроде бы и остался универсальным. И при этом нет лишних дивов внутри таблицы!

Спасибо, интересную тему создали:) Только я не понимаю необходимости в max-width. Я убрал ее из скрипта - вроде все работает как надо:

http://jsfiddle.net/KT5TC/16/

Link to comment
Share on other sites

  • 0

 

В общем тут с учётом комментов с ещё одного форума получилось вот что: http://jsfiddle.net/KT5TC/15/.  Вместо width в скрипте стал работать с min-width и max-width одновременно. Вообще-то я не хотел модифицировать скрипт, чтобы он был универсальным.. Но в таком варианте он вроде бы и остался универсальным. И при этом нет лишних дивов внутри таблицы!

Спасибо, интересную тему создали :) Только я не понимаю необходимости в max-width. Я убрал ее из скрипта - вроде все работает как надо:

http://jsfiddle.net/KT5TC/16/

Всё дело в том, что тогда Вы не сможете сделать ни дивы, ни таблицу меньше их width и/ или их содержимого. Попробуйте ячейку таблицы сделать по ширине меньше чем текст в ней. Или попробуйте рамочный див сделать меньше 400px.

Link to comment
Share on other sites

  • 0

Всё дело в том, что тогда Вы не сможете сделать ни дивы, ни таблицу меньше их width и/ или их содержимого. Попробуйте ячейку таблицы сделать по ширине меньше чем текст в ней. Или попробуйте рамочный див сделать меньше 400px.

Ааа, понял, осознал :) вопросов не имею :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Shoker2
      Вот мой код:
      <table class="down_table_main" bgcolor="#F7F7F7">     <tr>         <td><button class="down_button_main">Подробнее</button></td>     </tr> </table> Почему-то когда я использую align, ничего не происходит. А в другом коде align работает.
      <table border="0" bgcolor="white" width="800px">     <tr align="center">         <td>             <br>             <img src="https://ru-minecraft.ru/uploads/posts/2018-03/medium/1522109759_cosmicnpcs.jpg" alt="">             <h3>Мод <b>CosmicNPCs</b> - создайте второго игрока и запишите, что он будет делать.</h3>             <p>Интересный мод который позволит снимать ролики без участия других игроков, вы сможете записать свои движения и действия, а потом воспроизвести с произвольным скином, таким образом для записи каких то прикольных моментов вам не нужен второй игрок.</p>         </td>     </tr> </table>  
    • By Tanya2021
      Не могу закруглить углы у background-color. В чем проблема? 



    • By prooofik
      Добрый день, я новичок как на форуме, так и в верстке. Вопрос такой. Делаю таблицу с прицелом на мобильные устройства. Рабочее окно сайта шириной 800px и все таблицы я делал шириной строго 800px через тег <table> раньше было вот так: <table cellpadding="5" cellspacing="0" border="1" width="800px"> и таблицы все выглядели красиво и одинаково., но в мобильной версии они так же были 800 пикселей и их просмотреть было нереально. В общем в css файле добавил класс
      .table_overfloated { overflow-x: scroll; display: block; border-collapse: collapse; } .table_overfloated tr { border 1px solid; min-width: 800px; } .table_overfloated td {border: 1px solid; }  
      Применил его к тегу <table>  и теперь таблица на мобильнике прокручивается пальцем влево вправо, однако на сайте ширина таблицы делается соответственно контенту. И если одна таблица на странице еще более менее выглядит, то если их две и более то все они получаются разной ширины и выглядит это некрасиво.. Подскажите как сделать, чтобы таблицы все были шириной 800px, но на мобильной версии сайта их можно было пролистывать. Надеюсь понятно написал.:(
       

    • By ya novenkiy
      как убрать эти пробелы под пингвинами?
      <!DOCTYPE html> <html> <head> <title>таблицы</title> <meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8" /> <link rel = "stylesheet" href = "styles.css"/> </head> <body> <table id = "main"> <tr> <td id = "header" colspan = "2">1</td> <tr/> <tr> <td id = "left"> <ul> <li>Главная</li> <li>Главная</li> <li>Главная</li> </ul> </td> <td> <h1 class = "title">Галерея изображений</h1> <table id = "gallery"> <tr> <td><img src = "image/Penguins.jpg" /></td> <td><img src = "image/Penguins.jpg" /></td> <td><img src = "image/Penguins.jpg" /></td> </tr> <tr> <td><img src = "image/Penguins.jpg" /></td> <td><img src = "image/Penguins.jpg" /></td> <td><img src = "image/Penguins.jpg" /></td> </tr> </table> </td> </tr> <tr> <td colspan = "2">5</td> </tr> </table> </body> </html> table, td{ border: 1px solid black; padding: 0; } table{ border-spacing: 0; border-collapse: collapse; } #main{ width: 1000px; margin: 0 auto; } #header{ height: 150px; } #left{ height: 450px; width: 200px; vertical-align: top; } #gallery{ width: 90% margin: 0 auto; } #gallery img{ width:100% } h1.title{ text-align: center; }  

    • By Rinat
      <!--Таблица на диве-->
      <div class="table">
              <div class="row">
                  <div class="cell cell-1">1</div>
                  <div class="cell cell-2">2</div>
              </div>
              <div class="row row-2">
                  <div class="cell cell-3" rowspan="2">3</div>
                  <div class="cell cell-4">4</div>
              </div>
          </div>
      /*——css реализация—————*/
      .table{display: table; border: 1px solid silver; padding: 10px;}
      .row{display: table-row; border: 1px solid silver; padding: 10px;}
      .cell{display: table-cell; border: 1px solid silver; padding: 10px;}
      подскажите как склеить ячейку 3 и 4? Спасибо всем за помощь!
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy