Я ищу способ одинаково масштабировать мои элементы на основе любого числа / пикселя независимо от их ширины и высоты. Так что не пропорционально их размеру.
Версия JSFiddle
body, html {
height: 100%;
width: 100%;
margin: 0;
background: #20262E;
}
.box {
display: inline-block;
margin: 25px;
transition: transform 1s;
}
.box:hover {
transform: scale(1.1);
}
.one {
width: 50px;
height: 50px;
background-color: red;
}
.two {
width: 100px;
height: 100px;
background-color: orangered;
}
.three {
width: 300px;
height: 100px;
background-color: tomato;
}
<div class="box one"></div>
<div class="box two"></div>
<div class="box three"></div>
Я знаю, что могу применить эффект масштабирования к каждому отдельному элементу и вручную решить, насколько они должны масштабироваться по вертикали и горизонтали, что будет выглядеть как пример ниже , но я хочу, чтобы он был в одной строке, чтобы всегда можно изменить из источника.
JSFiddle версия
body,
html {
height: 100%;
width: 100%;
margin: 0;
background: #20262E;
}
.box {
display: inline-block;
margin: 25px;
transition: transform 1s;
}
.one {
width: 50px;
height: 50px;
background-color: red;
}
.one:hover {
/* Add 5px to height and width (1.1 scale = 2.5px added on each side) */
transform: scale(1.1);
}
.two {
width: 100px;
height: 100px;
background-color: orangered;
}
.two:hover {
/* Add the same 5px to height and width by applying half of the same scale (1.05) */
/* because the width and height are double that of box one. */
transform: scale(1.05);
}
.three {
width: 300px;
height: 100px;
background-color: tomato;
}
.three:hover {
/* Here we apply the same 1.05 scale to the height, but apply another scale */
/* for the width because it is 3 times bigger, but still want to add only 5px. */
transform: scaleY(1.05) scaleX(1.016666667);
}
<div class="box one"></div>
<div class="box two"></div>
<div class="box three"></div>
Как вы можете видеть в Fiddle, значения в scale()
отличаются в зависимости от высоты и ширины, и если они высоты и ширины отличаются друг от друга, вам нужны scaleX()
и scaleY()
, и это просто не поддается управлению в большем масштабе (игра слов не предназначена, но хотелось бы, чтобы это было - это хорошо!)
Теперь я подумал о чем-то вроде scale(calc(1 + 5px)
, поэтому высота и ширина остаются неизменными scale(1)
, но с добавлением 5px
, но, к сожалению, все не так просто.
Если есть решение Sass, я тоже с радостью приму это!
Примечание: этот эффект должен быть применим к любому элементу, поэтому
это не только высота и ширина фона. Представь
коробки для стилизованных кнопок, где каждая часть этой кнопки должна быть
масштабируется.