Подтвердить что ты не робот

CSS Ширина таблицы - 100% + минус маржа

Я наткнулся на проблему, и я не совсем уверен, как ее решить.

У меня есть страница с несколькими div, одна из которых содержит таблицу, но имеет размер 20px. Мне нужна эта таблица для "приклада" против правой части другого div, которую я выполнил с использованием поля -20px - работает так, как я надеялся. Поскольку этот div (который охватывает всю правую часть страницы) является текучим, таблица имеет ширину 100%.

В то время как левая часть таблицы находится там, где я ее хочу, правая сторона теперь на 20 пикселей меньше всего.

Есть ли способ сохранить отрицательный запас справа, без него также перемещение таблицы 20px справа? Я пробовал несколько вещей без успеха. Моя таблица CSS вставлена ​​ниже.

.pricetable {
    width:100%;
    margin-left: -20px;
    padding: 5px;
}
4b9b3361

Ответ 1

Вы можете полностью позиционировать свою таблицу, чтобы она выравнивалась справа.

position: absolute;
right: 0;

Невозможно добавить левое поле без перемещения таблицы, потому что смещение таблицы вычисляется таким образом: margin + padding + width = offset width.

Когда вы устанавливаете ширину как 100%, маржа и заполнение заставляют элемент расширяться.

  • Заполнение (слева) X, (справа) y + width = over 100%
  • over 100% + отрицательная ширина (X + y) = 100%.

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

Ответ 2

Мое решение состояло в том, чтобы обернуть таблицу в div с отрицательным полем.

<div style="margin-right:-20px">
  <table style="width:100%">
     ...
  </table>
</div>

Ответ 3

Вы также можете установить ширину менее 100% и задать маржу auto:

.pricetable {
    width:90%;
    margin: auto;
}

Надеюсь, что это поможет.

Ответ 4

теперь возможно с CSS calc:

.pricetable {
    width: calc(100% - 20px);
    margin-left: -20px;
    padding: 5px;
}

Ответ 5

попробуйте дать таблицу-макет: исправлено и см.