#css #position #transform #scale
#css #положение #преобразование #масштаб
Вопрос:
У меня проблема с преобразованием масштаба.
У меня есть несколько элементов со статической шириной, и я хочу масштабировать их на небольших видовых экранах (<768 пикселей). Но если я использую «transfrom: scale ()», положение элементов будет неправильным, а не в центре. «transform-origin» не помогает. Я не могу использовать адаптивную ширину. только статический пример 280px и 840px в codepen
codepen html
<div class="container">
<div class="item-list">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
codepen css
.container {
max-width: 840px;
border: 1px solid #000;
}
.item-list {
display: table;
-webkit-transform: scale(.34);
-moz-transform: scale(.34);
transform: scale(.34);
}
.item {
display: table-cell;
min-width: 280px;
height: 634px;
background: #000;
}
.item:first-child {
background: #234;
}
.item:last-child {
background: #ccc;
}
@media (min-width: 768px) {
.item-list {
-webkit-transform: none;
-moz-transform: none;
transform: none;
}
}
Спасибо
Ответ №1:
проблема с min-width:280px
on .item
.
этот стиль установлен для менее 768 пикселей. 3×280 пикселей больше, чем 768, и поэтому … проблема с выравниванием.
я предлагаю вам использовать min-width:33.33%
width max-width:280px
(если вы хотите сохранить это, или вы можете отказаться от него) плюс добавить width:100%
к .item-list
смотрите Фрагмент ниже или jsfiddle
дайте мне знать, если это поможет
.container {
max-width: 840px;
border: 1px solid #000;
box-sizing:border-box;
}
.item-list {
display: table;
-webkit-transform: scale(.34);
-moz-transform: scale(.34);
transform: scale(.34);
width:100%;
}
.item {
display: table-cell;
min-width:33.33%;
height: 634px;
background: #000;
}
.item:first-child {
background: #234;
}
.item:last-child {
background: #ccc;
}
@media (min-width: 768px) {
.item-list {
-webkit-transform: none;
-moz-transform: none;
transform: none;
}
.item {
min-width:33.33%;
}
}
<div class="container">
<div class="item-list">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
ИЛИ вы можете установить значение НИЖЕ 768 min-width:33.33%
пикселей (вместе с width:100%
on item-list
) и ВЫШЕ 768 пикселей min-width:280px;
смотрите фрагмент или jsfiddle
.container {
max-width: 840px;
border: 1px solid #000;
}
.item-list {
display: table;
-webkit-transform: scale(.34);
-moz-transform: scale(.34);
transform: scale(.34);
width:100%;
}
.item {
display: table-cell;
min-width: 33.33%;
height: 634px;
background: #000;
}
.item:first-child {
background: #234;
}
.item:last-child {
background: #ccc;
}
@media (min-width: 768px) {
.item-list {
-webkit-transform: none;
-moz-transform: none;
transform: none;
}
.item {
min-width: 280px;
}
}
<div class="container">
<div class="item-list">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
PS не забудьте добавить box-sizing:border-box
.container
. потому что у вас есть стиль border:1px
so, он становится выше и шире на 2 пикселя ( 842px x 842px вместо 840px x 840px ). итак, вам нужно установить box-sizing
Комментарии:
1. я знаю, что моя проблема со статической шириной. у меня такая структура и сценарии, что я не могу использовать процент, только 280 пикселей и 840 пикселей. (я добавляю размер коробки в примере)
2. ну. вы понимаете, что 3×280 = 840> 768 . и именно поэтому это вызывает эту ошибку . попробуйте использовать
min-width:280px
только OVER (в медиа-запросе) и можете ли вы использоватьwidth:100%
on.item-list
?3. 768 < 840, вот почему я использую преобразование масштаба. возможно ли масштабировать ширину блока 840 пикселей на экране с помощью 320 пикселей. я использовал свойство zoom, но оно не работает в firefox