Поскольку box-shadow нельзя использовать для элементов display:table-row, как я могу имитировать таблицу и использовать box-shadow для элементов псевдостроки?

Это уже было подтверждено что невозможно добавить элемент box-shadow к элементу display:table-row таким образом, чтобы это было совместимо со всеми основными браузерами. По непонятным мне причинам строка не может быть оформлена как группа, что означает, что вы не можете добавить box-shadow ко всей строке в display:table, а можете добавить ее только к отдельным элементам display:table-cell, что затем создаст вертикальное затенение внутри. между ячейками, которые мне не нужны.

Итак, как я могу имитировать таблицу, в которой ширина первого псевдостолбца всех псевдострок псевдотаблицы равна ширине ее самого длинного элемента, а второй столбец - это ширина, оставшаяся при добавлении box-shadow к псевдоряд?

Прямо сейчас я использую white-space: nowrap и width: 1px для первого элемента display:table-cell каждого display:table-row, чтобы крайний левый столбец всех строк соответствовал ширине самого длинного текста в этом столбце независимо от ширины экрана.

См. пример здесь: https://jsfiddle.net/yupwh6uq/

Это прекрасно работает с точки зрения форматирования display:table и столбцов, но не позволяет мне добавлять box-shadow к элементам display:table-row.

Итак, как я могу получить эффект таблицы с автоматической регулировкой ширины столбца, который у меня есть сейчас, для отображения информации, но с box-shadow в каждой псевдостроке таким образом, чтобы он был совместим со всеми основными браузерами, использующими чистый HTML/CSS? ?

P.S. Я не хочу использовать display:flex;, так как это нарушит форматирование в старых браузерах.


person ProgrammerGirl    schedule 14.03.2016    source источник
comment
вы просмотрели codepen.io/gc-nomade/pen/NNRVmd и если вы сделали, это работало достаточно хорошо?   -  person G-Cyrillus    schedule 14.03.2016
comment
@GCyrillus: Спасибо за это. Я опасаюсь, что с этим решением кто-то прокомментировал в чате, что оно плохо отображает box-shadow в FireFox, поэтому теперь я ищу решение, которое работает во всех основных браузерах. Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи, и еще раз спасибо за вашу помощь. Ты был великолепен!   -  person ProgrammerGirl    schedule 14.03.2016
comment
в противном случае вы можете использовать display flex и использовать значение flex, это даст каждой ячейке статическую ширину% ... codepen.io/gc-nomade/pen/NNRVmd   -  person G-Cyrillus    schedule 14.03.2016
comment
@GCyrillus: проблема с display:flex заключается в том, что он, например, не работает со старыми мобильными браузерами. Я знаю, что box-shadow также не работает со старыми мобильными браузерами, но в этом случае он просто не будет отображать затенение. Однако, если он не понимает display:flex, он будет отображать всю информацию неправильно, так что, к сожалению, это не вариант.   -  person ProgrammerGirl    schedule 14.03.2016
comment
на самом деле я сам не видел проблемы в FF по поводу псевдотехники. То, что вам нужно, потребует javascript для установки ширины каждого элемента столбца, чтобы сделать его пуленепробиваемым. Как было сказано ранее, box-shadow не является кросс-браузерным для элементов table-row/tr :(   -  person G-Cyrillus    schedule 14.03.2016
comment
@GCyrillus: Это становится действительно сложно! Позвольте мне немного протестировать ваше другое решение, чтобы увидеть, как оно работает в старых браузерах. Еще раз спасибо!   -  person ProgrammerGirl    schedule 14.03.2016
comment
ваша скрипта обновлена ​​для тестирования: jsfiddle.net/yupwh6uq/4   -  person G-Cyrillus    schedule 14.03.2016
comment
@GCyrillus: Большое спасибо!   -  person ProgrammerGirl    schedule 14.03.2016
comment
Важные вопросы, на которые необходимо ответить здесь: 1) Если вам нужна таблица, почему вы не используете HTML-разметку таблиц? 2) Если последний вопрос и последующее обсуждение в чате сказали вам, что это невозможно, почему вы снова задаете тот же вопрос по-другому? Вы ищете идеальное современное решение и поддержку старых браузеров; на самом деле вам нужно выбрать одно: решение, основанное только на CSS, или более сложное решение, поддерживающее старые браузеры. Посмотрите на практику прогрессивного улучшения и постепенного ухудшения в зависимости от вашей целевой аудитории.   -  person TylerH    schedule 14.03.2016
comment
@TylerH: мне не обязательно нужны таблицы, но мне нужно, чтобы левые ячейки всех результатов были одинаковой ширины, и мне нужно, чтобы эта ширина была минимально необходимой, чтобы текст в этих первых ячейках не переносился, и я нужна box-shadow, и мне нужно, чтобы это работало в большинстве браузеров, так как часть моих пользователей используют старые браузеры. Поскольку уже было показано, что мы не можем добиться этого с реальными таблицами (хотя у GCyrillus есть потенциальное решение для этого, хотя и сложное), я спрашиваю, есть ли способ добиться этого без реальных таблиц. Вот почему я добавляю ко всему псевдоним.   -  person ProgrammerGirl    schedule 15.03.2016


Ответы (1)


Это может помочь

но он рассчитывает с фиксированной высотой строки и нуждается в интервале в td (но это не может быть проблемой в таблице)

http://codepen.io/michalkliment/pen/dWzwEG

(проверено в сафари (ipad/mac)/chrome/IE10/firefox)

<table>
  <tr>
    <td><span>Celll 1111</span></td>
    <td><span>Celll 222</span></td>
  </tr>
  <tr>
    <td><span>Cellll 33</span></td>
    <td><span>Cell 4</span></td>
  </tr>
</table>

[1]: http://codepen.io/michalkliment/pen/dWzwEG

person Michal Kliment    schedule 04.05.2017