Причина, по которой это не удается, заключается в том, что column
mixin не только устанавливает ширину элемента, но также плавает его влево и применяет правое поле (если это не последний столбец, который не имеет поля). span
используется внутренне микшином column
для установки ширины. Таким образом, вы можете использовать span
здесь, чтобы просто установить ширину, не получая float и margin, которые добавит column
.
Ознакомьтесь с реализацией сетки компаса, здесь:
https://github.com/chriseppstein/compass/blob/stable/frameworks/blueprint/stylesheets/blueprint/_grid.scss
Так что если вы используете span
вместо column
, вы просто получите желаемую ширину. Затем вы можете применить margin: 0 auto;
, чтобы получить желаемое центрирование. container
также устанавливает это, хотя обычно вы хотите использовать container
в том виде, как он задуман в чертеже, как стиль, применяемый к элементам макета верхнего уровня. Если вы просто применяете поле самостоятельно, вам не нужно переопределять ширину сетки, которую устанавливает container
.
Другой «сеточный» способ исправить это - добавить / добавить столбцы, чтобы подтолкнуть прямоугольник к центру. Например. если ваш макет был 19 в ширину, а поле было 11 в ширину, вы можете @include prepend(4);
добавить 4 столбца ширины к левой стороне окна.
#login {
// Don't include container. In blueprint "container" means this is an outer
// container for the grid, and has the grid width, centered on the page.
// @include container;
@include column(11);
// I have no idea how many columns your page has, but if it had 19, 4 left columns
// would effectively center the div. | 4 + 11 + 4 |.
// Adjust to your real layout.
@include prepend(4);
}